Ez a szakasz csak FreeBSD 7.X
rendszerekre érvényes.
A következőkben azt mutatjuk be, hogy egy FreeBSD-s gépet miként tudunk egy hálózaton statikus névvel beállítani a SLIP használatával. A dinamikus hálózati nevek használatakor (vagyis amikor a címünk minden egyes tárcsázáskor megváltozhat) egy valamivel bonyolultabb beállításra van szükségünk.
Először is állapítsuk meg, hogy a
modemünk melyik soros portra csatlakozik. Sokan
/dev/modem
néven
egy szimbolikus linket hoznak létre a valódi
eszközre, például a /dev/cuadN
leíróra. Ennek köszönhetően az
eszköz tényleges névetől el tudunk
vonatkoztatni és soha nem kell módosítanunk
semmit, ha a modemet például egy másik
portra kell átraknunk. Ugyanis könnyedén
kacifántossá tud válni a helyzet, amikor
egyszerre kell megváltoztatnunk egy rakat dolgot az
/etc
könyvtárban és módosítanunk az
összes .kermrc
állományt!
A /dev/cuad0
a
COM1
port, a /dev/cuad1
a
COM2
és így
tovább.
A rendszermag beállításait tartalmazó állományban a következőnek mindenképpen szerepelnie kell:
device sl
Mivel ez általában a
GENERIC
rendszermagban
megtalálható, így ez nem okoz semmilyen
gondot, kivéve, hogy ha korábban már
kitöröltük.
Vegyük fel az otthoni gépünket, az
átjárónkat és a
névszervereket az /etc/hosts
állományba. Erre álljon itt egy
konkrét példa:
127.0.0.1 localhost loghost 136.152.64.181 water.CS.Example.EDU water.CS water 136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway 128.32.136.9 ns1.Example.EDU ns1 128.32.136.12 ns2.Example.EDU ns2
Figyeljünk oda, hogy az
/etc/nsswitch.conf
állományban szereplő
hosts
szakaszban a dns
szó előtt a files
szónak kell megjelennie. Ezek nélkül
mókás dolgok tudnak történni
rendszerünkben.
Szerkesszük át az
/etc/rc.conf
állományt.
Készítsük el az
/etc/resolv.conf
állományt, amelyben majd a
következők legyenek:
domain CS.Example.EDU nameserver 128.32.136.9 nameserver 128.32.136.12
Látható, hogy ezek a névfeloldásért felelős szerverek címei. Természetesen a ténylegesen beírandó tartomány (domain) neve és a névszerverek címei mindig az adott környezetünktől függenek.
Állítsuk be egy jelszót a
root
és
toor
felhasználóknak
(és mindenki másnak, akinek még nem
lenne).
Indítsuk újra a számítógépünket és utána győződjünk meg róla, hogy a megfelelő hálózati névvel rendelkezik.
Tárcsázzunk és
gépeljük be a slip
parancsot, majd ezt követően a
gépünk nevét és a
jelszót. Ez leginkább a konkrét
környezettől függ. Ha a
Kermit nevű programot
használjuk, akkor egy ilyen szkripttel is
próbálkozhatunk:
# a kermit beállítása set modem hayes set line /dev/modem set speed 115200 set parity none set flow rts/cts set terminal bytesize 8 set file type binary # a következő makró felelős a tárcsázásért és a bejelentkezésért define slip dial 643-9600, input 10 =>, if failure stop, - output slip\x0d, input 10 Azonosito:, if failure stop, - output silvia\x0d, input 10 Jelszo:, if failure stop, - output ***\x0d, echo \x0aCONNECTED\x0a
Természetesen a felhasználói
nevet és a jelszót a sajátunkra kell
benne kicserélnünk. Miután ezzel is
megvagyunk, a Kermit
paranccsorában a csatlakozáshoz
egyszerűen csak írjuk be, hogy
slip
.
Nem javasoljuk, hogy az állományrendszeren a jelszavakat titkosítatlan formában tároljuk. Mindeki csak a saját felelősségére tegyen ilyet.
Hagyjuk el a Kermit
programot (a Ctrl+z
billentyűkombinációval bármikor
fel tudjuk függeszteni a futását)
és root
felhasználóként írjuk be a
következőt:
#
slattach -h -c -s 115200 /dev/modem
Ha ezután már képesek vagyunk a
ping
paranccsal elérni az
útválasztó másik
oldalán található gépet, akkor
az azt jelenti, hogy sikerült csatlakoznunk! Ha
viszont itt még nem járnánk sikerrel,
akkor az slattach
parancsnak ne a
-c
paramétert adjuk meg, hanem a
-a
paramétert.
Tegyük a következőket:
#
kill -INT `cat /var/run/slattach.modem.pid`
Ez leállítja az slattach
programot. Ne felejtsük el azonban, hogy ezt csak a
root
felhasználóval tudjuk
végrehajtani. Ezután térjünk vissza
a kermit
programhoz (ha
felfüggesztettük volna, akkor ehhez a
fg
parancsra lesz
szükségünk), és lépjünk ki
belőle (q).
Az slattach(8) man oldala ehhez a ifconfig
sl0 down
parancsot javasolja, amellyel
lényegében leállítjuk a
hozzá tartozó felületet.
Igazából a kettő között nincs
semmilyen komolyabb eltérés (mivel az
(ifconfig sl0
is ugyanezt
eredményezi.)
Néha előfordulhat, hogy a modem
egyszerűen nem hajlandó eldobni a vonalat. Ilyen
esetekben indítsuk el a kermit
programot és lépjünk ki megint.
Másodjára általában már
sikerül.
Ha valamiért ez mégsem válna be, akkor csak nyugodtan kérdezősködjünk a freebsd-net levelezési listán. A tapasztalatok szerint az embereknek eddig a következőkkel voltak problémáik:
Az slattach
meghívásakor sem a -c
, sem
pedig a -a
paramétert nem
adták meg. (Ez ugyan nem végzetes hiba, de
egyes felhasználók szerint ez
segített megoldani a gondokat.)
Az sl0
helyett
s10
-et írtak be (egyes
betűtípusoknál könnyen össze
lehet téveszteni ezeket).
Az ifconfig sl0
segítségével ellenőrizhető
a felület állapota. Például
ilyet láthatunk:
#
ifconfig sl0
sl0: flags=10<POINTOPOINT> inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00
Ha a ping(8) no route to
host hibaüzenetet ad, akkor az
útválasztási
táblázattal van a gond. A netstat
-r
paranccsal gyorsan ki tudjuk listázni
a rendszerünkben jelenleg nyilvántartott
utakat:
#
netstat -r
Routing tables Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks: (root node) (root node) Route Tree for Protocol Family inet: (root node) => default inr-3.Example.EDU UG 8 224515 sl0 - - localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438 inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - - water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438 (root node)
Az előző példákat egy viszonylag forgalmas rendszerből ragadtuk ki. A rendszerünkön megjelenő számok a hálózati aktivitás mértékének függvényei.
Ebben a leírásban igyekszünk bemutatni hogyan kell egy FreeBSD típusú rendszer alatt SLIP szervert beállítani, ami általában annyit jelent, hogy a rendszerünben a távoli SLIP kliensek csatlakozásakor automatikusan elindítjuk a kapcsolatokat.
Ez a szakasz igen szakmai jellegű, ezért az olvasó részéről feltételezünk a témában némi alapismeretet. Ez alatt alapvetően a TPC/IP hálózati protokollt értjük, különös hangsúllyal a hálózatok és hálózati csomópontok címzéséen, a hálózati maszkokon, alhálózatokon, útválasztáson, az olyan útválasztási protokollokon, mint például a RIP. A SLIP beállítása egy betárcsázós szerveren mindezen fogalmak ismeretét igényli, és ha ezekkel még nem lennénk tisztában, akkor olvassuk el például Craig Hunt TCP/IP Network Administration című könyvét (O'Reilly & Associates, Inc.; ISBN: 0-937175-82-X) vagy Douglas Comer TCP/IP protokollról szóló könyveit.
Mindezek mellett még feltételezzük,
hogy már beállítottuk a modem(ek)et
és a rajtuk keresztüli bejelentkezéshez
szükséges állományokat. Ha
még nem készítettük volna fel erre a
rendszerünket, akkor a 26.4. szakasz - Betárcsázós
szolgáltatások ad
részletes tájékoztatást a
betárcsázós szolgáltatások
beállításáról. A soros
vonali eszközmeghajtóval kapcsolatban
továbbá érdemes átolvasni a
sio(4) oldalt, valamint a ttys(5), gettytab(5),
getty(8) és init(8) oldalakat a
bejelentkezések modemen keresztüli
fogadásáról, illetve talán az
stty(1) oldalt a soros port paramétereinek
megfelelő
beállításáról (mint
például a clocal
a
közvetlenül csatlakozó soros felületek
esetében).
A FreeBSD SLIP szerverként általában a
következő módon üzemel: a SLIP
felhasználó tárcsázza a FreeBSD-s
SLIP szerverünket, majd bejelentkezik egy specális
SLIP bejelentkezési azonosító
használatával, amely a
/usr/sbin/sliplogin
shellt
használja. A sliplogin
program az
/etc/sliphome/slip.hosts
állományban megkeresi a speciális
felhasználóhoz tartozó sort, és ha
talál egy ilyet, akkor csatlakoztatja a soros vonalat
egy rendelkezésre álló SLIP
felületre, amelyen aztán a SLIP felültet
beállításához lefuttatja az
/etc/sliphome/slip.login
shell
szkriptet.
Például, ha a SLIP
felhasználó azonosítója
Shelmerg
, akkor az
/etc/master.passwd
állományban a hozzá tartozó
bejegyzést nagyjából ilyen:
Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin
Amikor Shelmerg
bejelentkezik, a
sliplogin
az
/etc/sliphome/slip.hosts
állományban keresni fog egy
felhasználó
azonosítójához illeszkedő sort.
Például tegyük fel, hogy az
/etc/sliphome/slip.hosts
állományban szerepel egy ilyen sor:
Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
A sliplogin
ezt a sor fogja
megtalálni, majd a soros vonalat a
következő elérhető SLIP
felülethez kapcsolja, amelyen ezután
végrehajtja az
/etc/sliphome/slip.login
szkriptet a
következő módon:
/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
Ha minden jól megy, akkor az
/etc/sliphome/slip.login
kiad egy
ifconfig
parancsot azon a SLIP
felületen, amelyre a sliplogin
magát csatlakoztatta (amely a fenti
példában a 0. SLIP felület volt,
és amelyet meg is adtunk
slip.login
első
paramétereként), és így
beállítja a helyi IP-címet
(dc-slip
), a távoli IP-címet
(sl-helmer
), a SLIP felülethez
tartozó hálózati maszkot (0xfffffc00
) valamint a
további opciókat
(autocomp
). Ha valami rosszul sülne
el, akkor a sliplogin
ezekről
általában nagyon jó
minőségű,
információdús üzeneteket
készít, amelyeket a
syslogd démon pedig a
/var/log/messages
állományba rögzít. (A
syslogd(8) és syslog.conf(5) man oldalak
és talán maga az
/etc/syslog.conf
segíthet
kideríteni, hogy a syslogd
jelenleg naplóz-e, és ha igen, akkor
hova.)
A FreeBSD alap (vagyis a GENERIC
)
rendszermagja támogatja a SLIP (sl(4))
használatát. Ha viszont saját
rendszermagunk van, akkor előfordulhat, hogy
beállítások közé fel kell
vennünk a következő sort is:
device sl
Alapértelmezés szerint a FreeBSD nem
továbbít semmilyen csomagot. Amennyiben a FreeBSD
SLIP szerverünket
útválasztóként is
működtetni akarjuk, úgy az
/etc/rc.conf
állományban a
gateway_enable
változót
át kell állítanunk a YES
értékre. Ennek hatására az
újraindítás után is megmarad a
csomagok továbbítása.
A változtatások azonnali
életbeléptetéséhez adjuk ki
root
felhasználóként
a következő parancsot:
#
/etc/rc.d/routing start
Ha a FreeBSD rendszermag beállítása során segítségre szorulnánk, akkor olvassuk el 8. fejezet - A FreeBSD rendszermag testreszabásaet.
Ahogy arra már korábban is utaltunk, az
/etc/sliphome
könyvtárban három állomány
felelős a /usr/sbin/sliplogin
beállításáért (lásd
sliplogin(8)): a slip.hosts
,
amelyekben a SLIP felhasználókat és a
hozzájuk tartozó IP-címeket adjuk meg; a
slip.login
, amely általában
csak a SLIP felületet állítja be; (az
elhagyható) slip.logout
, amely a
soros vonal bontásakor a
slip.login
hatását
igyekszik visszafordítani.
Az /etc/sliphome/slip.hosts
soraiban whitespace karakterekkel tagoltan legalább
négy elem szerepel:
a SLIP felhasználó bejelentkezési azonosítója
a SLIP kapcsolat helyi címe (a SLIP szerveréhez képest)
a SLIP kapcsolat távoli címe
hálózati maszk
A helyi és távoli címek lehetnek
hálózati nevek is (amelyeket vagy az
/etc/hosts
, vagy pedig az
/etc/nsswitch.conf
állományban szereplő
beállítások alapján tudunk
feloldani IP-címre), illetve a hálózati
maszk is lehet egy olyan név, amelyet az
/etc/networks
fel tud oldani. A
példaként bemutatott rendszerünkben az
/etc/sliphome/slip.hosts
állomány nagyjából így
épül fel:
# # login helyi-cím távoli-cím maszk opc1 opc2 # (normal,compress,noicmp) # Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp
A sorok végén az alábbi opciók közül egy vagy több szerepelhet:
normal
- a fejléceket
nem tömörítjük
compress
- a fejlécek
tömörítése
autocomp
- ha a távoli
végpont engedi, akkor
tömörítsük a
fejléceket
noicmp
- az ICMP csomagok
tiltása (így például a
"ping" által generált
csomagok is eldobódnak a
sávszélesség felemésztese
helyett)
A SLIP kapcsolathoz tartozó helyi és távoli címek megválasztása függ attól, hogy egy külön TCP/IP alhálózatot szentelünk-e neki, vagy a SLIP szerverünkön egy "ARP proxy"-t használunk (amely tulajdonképpen nem egy "valódi" ARP proxy, de ebben a szakaszban így fogunk rá hivatkozni). Ha nem vagyunk biztosak benne, hogy melyik módszert válasszuk vagy hogy miként osszuk ki az IP-címeket, akkor nézzünk utána ezekenek a SLIP használatával kapcsolatos előfeltételek között megemlített könyvekben (27.7.2.1. szakasz - Előfeltételek) és/vagy konzultáljunk a hálózatunk karbantartójával.
Ha a SLIP klienseknek külön alhálózatokat osztunk ki, akkor a saját IP-címünkből kell létrehoznunk és kiadnunk ezeket. Ezután valószínűleg a SLIP szerverünkön keresztül még meg kell adnunk egy statikus útvonalat legközelebbi IP útválasztó felé.
Minden más esetben az "ARP proxy"
módszert kell alkalmaznunk, ahol a SLIP kliensek
IP-címeit a SLIP szerver Ethernet
alhálózatából osztjuk ki,
és ennek megfelelően az
/etc/sliphome/slip.login
és
/etc/sliphome/slip.logout
szkripteket
módosítanunk kell úgy, hogy az
arp(8) segítségével képesek
legyenek a SLIP szerver ARP
táblázatában kezelni a "proxy
ARP" bejegyzéseket.
Egy átlagos
/etc/sliphome/slip.login
állomány körülbelül
ilyen:
#!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # Egy általános slip vonali bejelentkezési állomány. A sliplogin ezt az alábbi # paraméterekkel hívja meg: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. azonosító helyi-cím távoli-cím maszk egyéb-pmek. # /sbin/ifconfig sl$1 inet $4 $5 netmask $6
Ez a slip.login
állomány az ifconfig
segítségével pusztán
beállítja a megfelelő SLIP
felülethez tartozó helyi, valamint távoli
címet és a hálózati
maszkot.
Ha ehelyett azonban az "ARP proxy"
módszerét választottuk volna
(tehát a SLIP kliensekenek nem akarunk egész
alhálózatokat kiutalni), akkor az
/etc/sliphome/slip.login
állomány eképpen alakul:
#!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # Egy általános slip vonali bejelentkezési állomány. A sliplogin ezt az alábbi # paraméterekkel hívja meg: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. azonosító helyi-cím távoli-cím maszk egyéb-pmek. # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 # A SLIP kliensre vonatkozó ARP kéréseket a mi Ethernet címünkkel # válaszoljuk meg: /usr/sbin/arp -s $5 00:11:22:33:44:55 pub
Láthatjuk, hogy az előbbi
slip.login
állomány egy
arp -s $5 00:11:22:33:44:55 pub
paranccsal egészült ki, ami a SLIP szerver ARP
táblázatában hoz létre egy ARP
bejegyzést. Ez az ARP bejegyzés gondoskodik
róla, hogy a SLIP szerver válaszoljon a
saját Ethernetes MAC-címével, amikor
egy másik IP csomópont a SLIP kliens
IP-címe felől érdeklődik.
Amikor a fenti példából indulunk
ki, a benne megadott MAC-címet (00:11:22:33:44:55
)
feltétlenül cseréljük a
rendszerünk Ethernet kártyájának
MAC-címével, mert különben az
"ARP proxy" egyáltalán nem fog
működni! A SLIP szerverünk
MAC-címét a netstat -i
paranccsal deríthetjük ki, amelynek a
kimenetében a második sor valahogy így
néz ki:
ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116
Ebből derül ki, hogy az adott rendszer
valódi MAC-címe a 00:02:c1:28:5f:4a
- az arp(8)
számára azonban a netstat
-i
kimenetében szereplő pontokat
kettőspontokra kell cserélni, és a
tagokat ki kell egészíteni
kétkarakteres hexadecimális
számokká. Az arp(8) man oldalán
tudhatunk meg ennek részleteiről
többet.
Amikor létrehozzuk az
/etc/sliphome/slip.login
és
/etc/sliphome/slip.logout
állományokat, akkor ne felejtsük el
hozzájuk beállítani a
"végrehajtást"
engedélyező bitet sem (tehát ilyenkor
mindig adjuk ki a chmod 755
/etc/sliphome/slip.login
/etc/sliphome/slip.logout
parancsokat is),
különben a sliplogin
ezeket
nem tudja majd elindítani.
Az /etc/sliphome/slip.logout
állományra nincs feltétlenül
szükségünk (hacsak nem egy "ARP
proxy"-t akarunk csinálni), de ha
valamiért mégis el akarjuk
készíteni, akkor ehhez a következő
alapvető slip.logout
szkript
használható:
#!/bin/sh - # # slip.logout # # Egy logout állomány a slip vonalhoz. A sliplogin ezt a szkriptet a # következő paraméterekkel hívja: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. login helyi-cím távoli-cím maszk opc-pmek. # /sbin/ifconfig sl$1 down
Ha az "ARP proxy" módszert
használjuk, és az
/etc/sliphome/slip.logout
felhasználásával akarjuk a SLIP
klienshez tartozó ARP bejegyzést
törölni, akkor ebből induljunk ki:
#!/bin/sh - # # @(#)slip.logout # # Egy logout állomány a slip vonalhoz. A sliplogin ezt a szkriptet a # következő paraméterekkel hívja: # 1 2 3 4 5 6 7-n # slipegys. ttyseb. login helyi-cím távoli-cím maszk opc-pmek. # sbin/ifconfig sl$1 down # Ne válaszoljunk többet a SLIP kliensre vonatkozó ARP kérésekre /usr/sbin/arp -d $5
Az arp -d $5
parancs
eltávolítja az "ARP proxy"
működéséhez bejegyzést,
amelyet még a slip.login
szkripttel vettünk fel a SLIP kliens
bejelentkezésekor.
Talán felesleges ismételgetésnek
tűnhet: az
/etc/sliphome/slip.logout
állománynak létrehozása
után állítsuk be a
végrehajtásra szóló bitet
(vagyis adjuk ki a chmod 755
/etc/sliphome/slip.logout
parancsot).
Ha a hálózatunk többi része (lényegében az internet) és a SLIP klienseink között nem az "ARP proxy" módszerrel közvetítjük a csomagokat, akkor a legközelebbi alapértelmezett átjárókhoz minden bizonnyal fel kell vennünk statikus útvonalakat, így a SLIP kliensek alhálózatai a SLIP szerverünkön keresztül ki tudnak jutni.
A legközelebbi alapértelmezett átjárók felé nem minden esetben könnyű felvenni statikus útvonalakat (vagy egyes esetekben pedig egyenesen lehetetlen, mivel nincsenek meg hozzá a jogaink). Ha az intézményünkön belül több átjáró is megtalálható, akkor bizonyos útválasztók, például a Cisco és Proteon gyártmányúak esetében nem csak a SLIP alhálózatok felé kell beállítanunk statikus útvonalakat, hanem azt is meg kell mondanunk, hogy ezekről milyen más útválasztók is tudjanak. Pontosan emiatt a statikus útválasztás beüzemeléséhez szükségünk lesz egy kis utánajárásra és próbálgatásra.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.