27.7. A SLIP használata
Vissza | 27. fejezet - A PPP és a SLIP | Előre

## 27.7. A SLIP használata

Eredetileg készítette: Asami, Satoshi.
A hozzávalókat biztosította: Helmer, Guy és Serini, Piero.

### Figyelem:

Ez a szakasz csak FreeBSD 7.`X` rendszerekre érvényes.

### 27.7.1. A SLIP kliensek beállítása

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/cuad`N`` 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!

### Megjegyzés:

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.

#### 27.7.1.1. Amit csak egyszer kell megtenni

1. 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

2. 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.

3. Szerkesszük át az `/etc/rc.conf` állományt.

   1. A hálózati nevünket a következő sorban tudjuk megadni:

      hostname="az.en.nevem"

      Ide a gépünk teljes internetes hálózati nevét kell beírnunk.

   2. Az alapértelmezett átjárót az alábbi sor módosításával tudjuk beállítani úgy, hogy a

      defaultrouter="NO"

      változó értékét átírjuk:

      defaultrouter="slip-gateway"

4. 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.

5. Állítsuk be egy jelszót a `root` és `toor` felhasználóknak (és mindenki másnak, akinek még nem lenne).

6. 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.

#### 27.7.1.2. A SLIP kapcsolatok felépítése

1. 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`.

   ### Megjegyzés:

   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.

2. 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.

#### 27.7.1.3. Hogyan bontsunk egy kapcsolatot

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.

#### 27.7.1.4. Hibaelhárítás

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.

### 27.7.2. A SLIP szerverek beállítása

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.

#### 27.7.2.1. Előfeltételek

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).

#### 27.7.2.2. Gyors áttekintés

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.

##### 27.7.2.2.1. Példa SLIP szerveren keresztüli bejelentkezésre

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.)

#### 27.7.2.3. A rendszermag beállítása

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.

#### 27.7.2.4. A sliplogin beállítása

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.

##### 27.7.2.4.1. A `slip.hosts` beállítása

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.

##### 27.7.2.4.2. A `slip.login` beállítása

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.

### Megjegyzés:

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.

##### 27.7.2.4.3. A `slip.logout` beállítása

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).

#### 27.7.2.5. Az útválasztással kapcsolatos megfontolások

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.

##### 27.7.2.5.1. Statikus útvonalak

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.

Vissza | Fel | Előre
27.6. PPP ATM felett (PPPoA) | Főoldal | 28. fejezet - Elektronikus levelezés

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>.