FreeBSD handboek
Terug | Hoofdstuk 28. PPP en SLIP | Volgende

# 28.7. Gebruik maken van SLIP

Origineel bijgedragen door Satoshi Asami. Met input van Guy Helmer en Piero Serini.

> WaarschuwingDeze sectie geldt en is alleen geldig voor FreeBSD 7.X.

## 28.7.1. Het opzetten van een SLIP-cliënt

Het volgende is één manier om een FreeBSD machine in te stellen voor gebruik met SLIP op een statisch host netwerk. Voor dynamische hostnaam toewijzing (uw adres veranderd elke keer als u inbelt), heeft u waarschijnlijk een meer complexe opzet nodig.

Bepaal eerst aan welke seriële poort uw modem verbonden is. Veel mensen gebruiken hiervoor een symbolische link zoals `/dev/modem` welke verwijst naar de echte naam van het apparaat `/dev/cuadN`. Dit geeft de mogelijkheid om naam abstract te houden, voor het geval het modem ooit verplaatst wordt naar een andere poort. Het kan best een vervelende klus zijn wanneer er een aantal bestanden in `/etc` en `.kermrc` bestanden verspreid over het gehele systeem gerepareerd moeten worden!

> Opmerking: `/dev/cuad0` is `COM1`, `cuad1` is `COM2`, etc.

Zorg ervoor dat u het volgende in uw kernel configuratie bestand hebt:

    device   sl

Deze is standaard opgenomen in de `GENERIC` kernel, dus dat zou geen problemen moeten opleveren tenzij u deze verwijderd heeft.

### 28.7.1.1. Dingen die u maar eenmalig hoeft uit te voeren

1. Voeg uw machine, de router en de naamservers toe aan uw `/etc/hosts` bestand. Ons bestand ziet er als volgend uit:

       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. Zorg ervoor dat u `files` voor `dns` in de `hosts:` sectie van uw `/etc/nsswitch.conf` bestand. Zonder deze parameters zouden er interessante dingen kunnen gebeuren.

3. Bewerk het `/etc/rc.conf` bestand.

   1. Stel uw hostnaam in door de regel te bewerken die aangeeft:

          hostname="myname.my.domain"

      De volledig gekwalificeerde internet hostnaam moet hier geplaatst worden.

   2. Stel de standaard router in door het aanpassen van de volgende regel van:

          defaultrouter="NO"

      naar:

          defaultrouter="slip-gateway"

4. Creeër en bestand genaamd `/etc/resolv.conf` welke het volgende bevat:

       domain CS.Example.EDU
       nameserver 128.32.136.9
       nameserver 128.32.136.12

   Zoals u kunt zien, stellen deze de naamserver hosten in. Uiteraard is het echte domein en adres afhankelijk van uw omgeving.

5. Stel het wachtwoord in voor de `root` en de `toor` gebruikers (en elke andere gebruiker die geen wachtwoord heeft).

6. Herstart de machine en controleeer of deze opkomt met de correcte hostnaam.

### 28.7.1.2. Het opzetten van een SLIP-verbinding

1. Bel in, type `slip` op de prompt en voer uw machine naam en wachtwoord in. Wat is vereist, is afhankelijk van uw omgeving. Als u gebruik maakt van Kermit kan een script als de volgende gebruikt worden:

       # kermit setup
       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
       # De volgende macro zal inbellen en ons inloggen.
       define slip dial 643-9600, input 10 =>, if failure stop, -
       output slip\x0d, input 10 Username:, if failure stop, -
       output silvia\x0d, input 10 Password:, if failure stop, -
       output ***\x0d, echo \x0aCONNECTED\x0a

   Uiteraard moet u uw gebruikersnaam en wachtwoord wijzigen zodat deze overeenkomen met die van u. Nadat dit gedaan is kunt u `slip` invullen op de Kermit prompt om verbinding te maken.

   > Opmerking: Het achterlaten van uw wachtwoord in leesbare tekst waar dan ook op het bestandssysteem is zeker een slecht idee. Doe dit op eigen risico.

2. Laat Kermit daar (het programma kan tijdelijk uitgeschakeld worden door Ctrl-z) en type vervolgens als `root`:

       # slattach -h -c -s 115200 /dev/modem

   Als u in staat bent om andere hosten met `ping` te benaderen aan de andere kant van de router, bent u verbonden! Als dit niet werkt kunt u wellicht de `-a` gebruiken in plaats van de `-c` als argument voor `slattach`.

### 28.7.1.3. Hoe de verbinding afgebroken moet worden

Doe het volgende::

    # kill -INT `cat /var/run/slattach.modem.pid`

om `slattach` te stoppen. Houd in uw achterhoofd dat u dit als `root` moet doen. Ga hierna terug naar `kermit` (door het intypen van `fg` als u deze tijdelijk uitgeschakeld had) en verlaat de applicatie (q).

De slattach(8) handleiding zegt dat `ifconfig sl0 down` uitgevoerd moet worden om de interface uit te schakelen, maar dit lijkt geen verschil op te leveren. (`ifconfig sl0` lijkt hetzelfde resultaat te geven.)

Soms kan het gebeuren dat het modem weigert om de carrier los te laten. Start in dat geval simpelweg `kermit` en stop deze wederom. Meestal stopt het met de tweede poging.

### 28.7.1.4. Problemen oplossen

Als dit niet werkt, voelt u zich dan vrij om rond te vragen op de freebsd-net mailing lijst. De volgende dingen zijn mensen al eens tegen aangelopen:

- Het niet gebruiken van de `-c` of `-a` optie voor `slattach` (Dit zou niet fataal moeten zijn, maar sommige mensen hebben aangegeven dat het de problemen oplostte.)

- Het intypen van `s10` in plaats van `sl0` (het verschil is wellicht lastig te zien met sommige fonts).

- Probeer `ifconfig sl0` uit te voeren om de interface status te zien. U kunt bijvoorbeeld krijgen:

      # ifconfig sl0
      sl0: flags=10<POINTOPOINT>
              inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00

- Als u “`no route to host`” krijgt van het ping(8) commando, is er mogelijk een probleem met uw route tabel. U kunt het `netstat -r` commando uitvoeren om de huidige routes te zien:

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

  Het voorgaand voorbeeld komt van een relatief druk systeem. De getallen op uw systeem zullen anders zijn naar gelang de netwerk activiteiten.

## 28.7.2. Het opzetten van een SLIP-server

Dit document levert suggesties voor het opzetten van een SLIP-server op een FreeBSD systeem, welke meestal betekent het configureren van uw systeem om automatisch verbindingen op te zetten wanneer er wordt ingelogt met remote SLIP cliënten.

### 28.7.2.1. Eisen vooraf

Deze sectie is vrij technisch van aard, dus achtergrond informatie is vereist. Er wordt aangenomen dat u bekend bent met het TCP/IP-netwerk protocol, en in dan in het bijzonder met netwerk en node adresseringen, netwerk adres maskers, subnetten, routes en dynamische routering protocollen zoals RIP. Het configureren van een SLIP-dienst op een inbel server vereist kennis van deze concepten en als u daarmee niet bekend bent, leest u dan aub een versie van of Craig Hunt's TCP/IP Network Administration gepubliceerd door O'Reilly & Associates, Inc. (ISBN Number 0-937175-82-X), of Douglas Comer's boeken over het TCP/IP protocol.

Daarnaast wordt er vanuit gegaan dat u reeds uw modem(s) heeft geconfigureerd en dat u de juiste systeem bestanden heeft aangepast zodat er logins mogelijk zijn door uw modem(s) heen. Als u dat nog niet heeft gedaan, zie dan Paragraaf 27.4 voor details over het opzetten van inbel diensten. Wellicht wilt u ook de handleiding bekijken voor sio(4) voor meer informatie over de seriële port device driver en de ttys(5), gettytab(5), getty(8), & init(8) handleidingen voor informatie die relevant zijn voor het configureren van het systeem zodat logins mogelijk worden op modems, en wellicht stty(1) voor informatie over het instellen van de seriële poort (zoals `clocal` voor direct verbonden seriële interfaces).

### 28.7.2.2. Snel overzicht

In een typische configuratie, werkt het gebruik van FreeBSD als een SLIP-server als volgend: een SLIP-gebruiker belt in op uw FreeBSD SLIP-server systeem en logt in met een speciaal SLIP-login ID dat gebruik maakt van `/usr/sbin/sliplogin`. Het `sliplogin` programma leest door het `/etc/sliphome/slip.hosts` bestand om een corresponderende regel te vinden voor de speciale gebruiker en als deze een match vindt verbind het de seriële lijn met een beschikbare SLIP-interface waarna het shellscript `/etc/sliphome/slip.login` wordt uitgevoerd om de SLIP-interface te configureren.

#### 28.7.2.2.1. Een voorbeeld van SLIP-server login

Bijvoorbeeld, als een SLIP-user-ID `Shelmerg`is, kan `Shelmerg`'s regel in `/etc/master.passwd` er als volgt uitzien:

    Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin

Wanneer `Shelmerg` inlogt, zoekt het `sliplogin` programma in het `/etc/sliphome/slip.hosts` bestand voor een regel dat een corresponderende user ID heeft, er kan bijvoorbeeld een regel staan in `/etc/sliphome/slip.hosts` dat eruit ziet als volgend:

    Shelmerg        dc-slip sl-helmer       0xfffffc00		  autocomp

`sliplogin` zal de corresponderende regel vinden en de seriële lijn koppelen aan de eerste beschikbare SLIP-interface, waarna `/etc/sliphome/slip.login` wordt uitgevoerd zoals volgend:

    /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp

Als alles goed gaat, zal `/etc/sliphome/slip.login` een `ifconfig` commando uitvoeren voor de SLIP interface waaraan `sliplogin` zichzelf koppelt (SLIP-interface 0 zoals in bovenstaand voorbeeld was de eerste parameter in de lijst welke gegeven is aan `slip.login`) om een lokaal IP-adres in te stellen (`dc-slip`), een remote IP adres (`sl-helmer`), een netwerk master voor de SLIP-interface (`0xfffffc00`), en enkele additionele vlaggen (`autocomp`). Als er iets misgaat zal `sliplogin` meestal voldoende goede informatie loggen via de syslogd daemon faciliteiten, welke meestal logt naar `/var/log/messages` (zie de handleidingen van syslogd(8) en syslog.conf(5) en controleer het `/etc/syslog.conf` bestand om te zien wat syslogd logt en waar dit naartoe gelogt wordt).

### 28.7.2.3. Kernel-configuratie

FreeBSD's standaard kernel (`GENERIC`) heeft reeds ondersteuning voor SLIP (sl(4)), in het geval van een custom kernel moet de volgende regel worden toegevoegd aan de kernel configuratie:

    device   sl

Standaard zal uw FreeBSD machine geen pakketten doorsturen. Als u wilt dat uw FreeBSD SLIP-server zich gedraagt als router zult u het bestand `/etc/rc.conf` moeten bewerken en de instelling van de `gateway_enable` variabele moeten aanpassen naar `YES`. Dit zorgt ervoor dat de machine na een herstart zich zal blijven gedragen als router.

Om de instellingen meteen actief te maken kunt u het volgende commando als `root` uitvoeren:

    # service routing start

Raadpleeg aub Hoofdstuk 9 over het configureren van de FreeBSD kernel voor meer hulp over het herconfigureren van uw kernel.

### 28.7.2.4. Sliplogin-configuratie

Zoals eerder vermeld, zijn er drie bestanden in de map `/etc/sliphome` die onderdeel zijn van de configuratie voor `/usr/sbin/sliplogin` (zie sliplogin(8) voor de actuele handleiding voor `sliplogin`): `slip.hosts`, welke de SLIP-gebruikers definieert en de gekoppelde IP adressen; `slip.login`, welke meestal de SLIP-interface configureert en (optioneel) `slip.logout`, welke de effecten van `slip.login` ongedaan maakt wanneer de seriële verbinding verbroken wordt.

#### 28.7.2.4.1. `slip.hosts` configuratie

`/etc/sliphome/slip.hosts` bevat regels welke minstens vier onderdelen heeft die gescheiden worden door een spatie:

- SLIP-gebruikers login ID

- Lokale adres (lokaal voor de SLIP-server) van de SLIP-link

- Remote adres van de SLIP-link

- Netwerk masker

De lokale en remote adressen mogen host namen zijn (Welke naar IP-adressen vertaald kunnen worden door `/etc/hosts` of door de DNS diensten, afhankelijk van uw specificaties in het `/etc/nsswitch.conf`, het netwerk masker mag een naam zijn dat vertaald kan worden door een zoek opdracht in `/etc/networks`. Op een voorbeeld systeem ziet het `/etc/sliphome/slip.hosts` bestand er als volgt uit:

    #
    # login local-addr      remote-addr     mask            opt1    opt2
    #                                               (normal,compress,noicmp)
    #
    Shelmerg  dc-slip       sl-helmerg      0xfffffc00      autocomp

Aan het einde van deze regel staan één of meerdere opties:

- `normal` — geen compressie van de header

- `compress` — comprimeer headers

- `autocomp` — comprimeer de headers als de remote kant dit accepteert

- `noicmp` — schakelt ICMP pakketten uit (dus alle “ping” pakketten worden geweigerd in plaats van dat deze bandbreedte verbruiken)

Uw keuze van een lokaal en remote adres voor uw SLIP verbindingen is afhankelijk van of u een speciaal toegewezen TCP/IP-subnet gebruikt, of dat u gebruik gaat maken van “proxy ARP” op uw SLIP-server (het is geen echte “proxy ARP”, maar het is de terminologie welke in deze sectie gebruikt wordt om het te beschrijven). Als u niet zeker bent welke methode u moet kiezen, of hoe u IP-adressen moet toewijzen, raadpleegt u dan de TCP/IP boeken die vermeld worden in de SLIP vereisten (Paragraaf 28.7.2.1) en/of vraag uw IP-netwerk manager om hulp.

Als u gebruik gaat maken van een separaat subnet voor uw SLIP-cliënten, moet u een subnet alloceren uit de voor u toegewezen IP-ruimte, en elke SLIP-cliënt een IP-adres geven uit dat subnet. Daarna moet u waarschijnlijk een statische route configureren voor uw SLIP-subnet via uw SLIP-server naar de dichtsbijzijnde IP-router.

In het andere geval moet u gebruik maken van de “proxy ARP” methode, u moet elke SLIP cliënt een IP-adres geven uit het Ethernet-subnet van uw SLIP-server, daarnaast moet u het `/etc/sliphome/slip.login` en het `/etc/sliphome/slip.logout` script aanpassen om gebruik te maken van arp(8) om de “proxy ARP” regels te beheren in de SLIP servers ARP tabel.

#### 28.7.2.4.2. `slip.login` configuratie

Een typisch `/etc/sliphome/slip.login` bestand ziet er als volgend uit:

    #!/bin/sh -
    #
    #       @(#)slip.login  5.1 (Berkeley) 7/1/90

    #
    # generiek loginbestand voor een SLIP-lijn.  sliplogin voert deze uit
    # met de volgende parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 inet $4 $5 netmask $6

Dit `slip.login` bestand start alleen het `ifconfig` commando voor de betreffende SLIP-interace met het lokale en remote adres met het netwerkmasker van de SLIP-interface.

Als u besloten heeft om gebruik te maken van de “proxy ARP” methode (in plaats van het gebruiken van een apart subnet voor uw SLIP-cliënten) moet u het `/etc/sliphome/slip.login` bestand aanpassen zodat deze er ongeveer als volgend uitziet:

    #!/bin/sh -
    #
    #       @(#)slip.login  5.1 (Berkeley) 7/1/90

    #
    # generiek loginbestand voor een SLIP-lijn.  sliplogin voert deze uit
    # met de volgende parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 inet $4 $5 netmask $6
    # Beantwoord ARP Verzoeken voor de SLIP-cliënt met ons Ethernet
    # adres
    /usr/sbin/arp -s $5 00:11:22:33:44:55 pub

De extra regel in het `slip.login` bestand, `arp -s $5 00:11:22:33:44:55 pub`, creeërt een ARP-regel in de ARP-tabel van de SLIP-server. Deze ARP regel zorgt ervoor dat de SLIP-server antwoord geeft met het Ethernet MAC adres van de SLIP-server wanneer een andere IP-node op het Ethernet vraagt om te communiceren met het IP-adres van de SLIP-cliënt.

Wanneer u gebruik maakt van het voorbeeld hierboven, wees u er dan zeker van dat u het Ethernet MAC adres (`00:11:22:33:44:55`) veranderd in het MAC adres van uw systeem's Ethernet kaart, anders werkt uw “proxy ARP” zeker niet! U kunt het Ethernet MAC adres van uw SLIP-server achterhalen door het bekijken van het resultaat van `netstat -i`; de tweede regel met resultaten moet er ongeveer als volgend uitzien:

    ed0   1500  <Link>0.2.c1.28.5f.4a         191923	0   129457     0   116

Dit geeft aan dat het specifieke Ethernet MAC adres van het systeem is `00:02:c1:28:5f:4a` — de punten in het Ethernet MAC adres welke gegeven wordt door `netstat -i` moet worden veranderd in dubbele punten (“:”) en voorloop nullen moeten worden toegevoegd aan elk enkel hexadecimaal getal om het adres te converteren naar de vorm die arp(8) wenst; zie de handleiding van arp(8) voor een compleet overzicht van het gebruik hiervan.

> Opmerking: Wanneer u `/etc/sliphome/slip.login` en `/etc/sliphome/slip.logout`, aanmaakt moet het “uitvoerbare” bitje gezet zijn (bijvoorbeeld `chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout`) anders is `sliplogin` niet in staat om deze uit te voeren.

#### 28.7.2.4.3. `slip.logout` configuratie

`/etc/sliphome/slip.logout` is niet strict noodzakelijk (tenzij u “proxy ARP” implementeert), maar als beslist om deze aan te maken is dit een voorbeeld basis `slip.logout` script:

    #!/bin/sh -
    #
    #       slip.logout

    #
    # uitlogbestand voor een SLIP-regel.  sliplogin voert deze uit met de
    # parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 down

Als u gebruik maakt van “proxy ARP” wilt u waarschijnlijk dat het `/etc/sliphome/slip.logout` bestand de ARP regel weghaalt voor de SLIP-cliënt:

    #!/bin/sh -
    #
    #       @(#)slip.logout

    #
    # uitlogbestand voor een SLIP-regel.  sliplogin voert deze uit met de
    # parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 down
    # Stop met het beantwoorden van ARP verzoeken voor de SLIP-cliënt
    /usr/sbin/arp -d $5

Het `arp -d $5` verwijderd de ARP regel, die “proxy ARP” heeft toegevoegd toen de SLIP-cliënt inlogde.

Het is belangrijk om dit te herhalen: zorg ervoor `/etc/sliphome/slip.logout` het uitvoerbare bitje heeft gezet nadat deze gecreeërd is (b.v. `chmod 755 /etc/sliphome/slip.logout`).

### 28.7.2.5. Routering-overwegingen

Als u geen gebruik maakt van de “proxy ARP” voor het routeren van pakketten tussen uw SLIP-cliënten en de rest van uw netwerk (en wellicht het internet), moeten er misschien een aantal statische routeringen naar de best bereikbare standaard router ingesteld worden om uw SLIP cliënts te routeren via uw SLIP0server.

#### 28.7.2.5.1. Statische routeringen

Het toevoegen van statische routeringen naar de dichts bijzijnde router kan problematisch zijn (of zelfs onmogelijk als u niet de bevoegdheden heft om dit te doen). Als u een netwerk heeft met meerdere routers binnen uw organisatie kan het zijn dat sommige routers, zoals die van Cisco en Proteon , niet alleen geconfigureerd moeten worden met de statische route naar het SLIP-subnet, maar deze moeten dan ook geconfigureerd worden over welke statische routes aan andere routers verteld moeten worden. Enige expertise en fine tunen kan nodig zijn om statische routing te laten werken.

Terug | Begin | Volgende
Gebruik maken van PPP over ATM (PPPoA) | Omhoog | Elektronische mail