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