38.DOC

(110 KB) Pobierz









Rozdział 38.
SLIP i PPP









E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\38.DOC              615










Rozdzia³ 38. ¨ SLIP i PPP              615

Tim Parker

W tym rozdziale:

u                                          Konfiguracja protokołu SLIP             

u                                          Konfiguracja protokołu PPP             

u                                          Używanie systemu DNS z protokołami SLIP i PPP             

Większość systemów linuxowych i UNIX-owych połączonych jest z Internetem za pomocą protokołów SLIP (ang. Serial Line Internet Protocol) lub PPP (ang. Point-to-Point Protocol). Oba te protokoły służą do obsługi połączenia modemowego (przez modem synchroniczny, asynchroniczny lub ISDN). Linux obsługuje również ulepszoną wersję protokołu SLIP – CSLIP (ang. Compressed SLIP).

Konfigurację tych protokołów można przeprowadzić podczas instalowania TCP/IP, ale można również odłożyć ją do czasu, gdy będziesz chciał połączyć się z Internetem (ponieważ większość usługodawców internetowych wymaga łączenia się za pomocą tych protokołów).

Sam proces konfigurowania protokołów SLIP i PPP nie jest skomplikowany. Jeśli będziesz trzymał się podanych niżej wskazówek, całość zajmie Ci tylko kilka minut.

Konfigurowanie interfejsu pozornego

Interfejs pozorny jest sposobem na przydzielenie komputerowi numeru IP w przypadku, gdy korzysta on tylko z interfejsów SLIP i PPP. Interfejs pozorny rozwiązuje problem pojawiający się w systemach nie podłączonych na stałe do sieci, w których jedynym prawidłowym adresem IP, pod który można wysłać dane, jest 127.0.0.1. Problem ten jest szczególne widoczny, gdy musisz używać aplikacji wymagających podania prawidłowego adresu IP, którego zwykle nie posiadasz jeśli nie jesteś podłączony do sieci.

Konfigurowanie takiego interfejsu jest bardzo proste. Jeśli w pliku /etc/hosts jest wpisany adres IP komputera, wystarczy wydać polecenie tworzące odpowiedni interfejs i powiadomić system, że może za jego pośrednictwem przesyłać dane:

 

ifconfig dummy nazwa_komputera
route add nazwa_komputera

Powyższe polecenia spowodują utworzenie połączenia z Twoim własnym adresem IP. Jeśli wcześniej nie wpisałeś adresu IP do pliku /etc/hosts, musisz to najpierw zrobić, dopisując do niego wiersz:

 

127.0.0.1              loopback

W niektórych wersjach Linuxa zamiast programów ifconfig i route używa się odpowiednich programów obsługiwanych za pomocą menu. W większości przypadków sterownik pętli zwrotnej jest konfigurowany automatycznie przy instalacji Linuxa. Sprawdź, czy w pliku /etc/hosts znajduje się wiersz zawierający adres 127.0.0.1. Jeśli nie, dodaj go i uruchom ponownie komputer.

Konfiguracja protokołu SLIP

Protokół SLIP używany jest przy kontaktowaniu się z usługodawcą internetowym i do połączeń pomiędzy dwoma komputerami. Nawiązywanie połączenia przez modem odbywa się w zwykły sposób, a następnie SLIP przejmuje kontrolę nad połączeniem. Sterownik SLIP powinien być częścią jądra systemu – jeśli tak nie jest, należy je przekompilować. Większość sterowników SLIP obsługuje również protokół CSLIP, umożliwiający kompresję nagłówków, co prowadzi do uzyskania większej szybkości przesyłania danych (nie każdy usługodawca internetowy pozwala jednak na połączenia CSLIP – powinieneś to sprawdzić, zanim zaczniesz konfigurację).

W większości systemów linuxowych do obsługi protokołu SLIP musi być przeznaczony jeden z portów szeregowych, co oznacza, że nie będzie go można używać do innych celów. Kernel używa programu SLIPDISC (ang. SLIP Discipline) do kontrolowania portu szeregowego i blokowania dostępu do niego aplikacjom próbującym wykorzystać go w inny sposób nawet wtedy, gdy protokół SLIP nie jest wykorzystywany.

Protokół SLIP

Połączenia SLIP obsługiwane są przez dwa programy: dip i slattach. Oba mogą zostać użyte do zainicjalizowania połączenia. Nie można natomiast do tego celu użyć standardowych programów komunikacyjnych.

Przeznaczenie obu programów jest nieco różne. slattach, który po prostu podłącza się do portu szeregowego, używany jest gdy istnieje stałe połączenie z serwerem SLIP (wtedy niepotrzebna jest obsługa modemu ani potwierdzanie transmisji). Program dip obsługuje inicjalizowanie połączenia, logowanie i potwierdzanie transmisji. Powinieneś go używać, jeśli łączysz się przez modem. Można go również użyć, by skonfigurować system jako serwer SLIP, pozwalając innym łączyć się z Twoim komputerem.

SLIP jest protokołem bardzo prostym, ponieważ w transmisji danych biorą udział tylko dwa urządzenia: Twój komputer i serwer. Po nawiązaniu połączenia, SLIP przesyła numer IP, który będzie później używany. Niektóre systemy wysyłają ten sam numer za każdym razem (adresowanie statyczne), inne natomiast mają różne numery przy różnych połączeniach (adresowanie dynamiczne). Konfigurowanie obu typów połączeń wymaga nieco innych zabiegów.

Najłatwiejszym sposobem na to, aby przeznaczyć port szeregowy do połączeń SLIP, jest użycie programu slattach. Jest on dostępny w przeważającej większości systemów linuxowych. Jego argumentem powinna być nazwa portu szeregowego. Przykładowo, aby do połączeń SLIP przeznaczyć drugi port szeregowy, wydaj polecenie

 

slattach /dev/cua1 &

Gdyby po poleceniu tym nie postawić znaku & powodującego uruchomienie go w tle, konsola przestałaby być dostępna. Powyższe polecenie można również wpisać do któregoś z plików inicjalizacyjnych.

Po uruchomieniu programu slattach, port szeregowy jest podłączany do pierwszego urządzenia SLIP (zwykle /dev/sl0). Jeśli używasz więcej niż jednego portu do połączeń SLIP, musisz uruchomić program slattach odpowiednią liczbę razy. Domyślnie większość systemów linuxowych używa dla takich portów interfejsu CSLIP. Jeśli nie odpowiada Ci taka sytuacja, powinieneś explicite zażądać użycia protokołu SLIP:

 

slattach –p slip /dev/cua1 &

Ważne jest, aby po obu stronach połączenia ustawiony był taki sam protokół – w przeciwnym przypadku prawidłowe przesyłanie danych będzie niemożliwe (istnieją jeszcze dwie wersje protokołu SLIP: slip6 – protokół sześciobitowy, oraz protokół, który potrafi dostosować się do wersji używanej przez serwer). Nie można na przykład nawiązać połączenia, jeśli jeden komputer używa protokołu slip6, a drugi CSLIP.

Po przydzieleniu protokołowi SLIP portu szeregowego, należy skonfigurować interfejs sieciowy tak samo, jak dla wszystkich innych urządzeń, za pomocą poleceń ifconfig i route. Przykładowo, jeśli Twój komputer nazywa się merlin, a chcesz połączyć się z komputerem arthur, powinieneś wydać polecenia:

 

ifconfig sl0 merlin-slip pointtopoint arthur
route add arthur

Polecenie ifconfig służy do konfiguracji interfejsu sieciowego o nazwie merlin-slip (lokalny adres interfejsu SLIP), natomiast polecenie route powoduje dodanie odpowiedniego wpisu do tablic kierowania przesyłem danych.

Jeśli chcesz używać protokołu SLIP do łączenia się z Internetem, musisz posiadać adres IP i odpowiedni wpis w pliku /etc/hosts.

Po wykonaniu poleceń ifconfig i route możesz przetestować połączenie – powinno działać bez problemów. Jeśli w przyszłości będziesz chciał usunąć interfejs SLIP, najpierw należy usunąć odpowiedni wpis z tablic kierowania przesyłem danych, później wyłączyć interfejs poleceniem ifconfig, a na koniec zakończyć działanie procesu slattach. Można to zrobić w następujący sposób:

route del arthur
ifconfig sl0 down

Aby zakończyć działanie procesu slattach, trzeba podać jego numer identyfikacyjny (wyświetlany przez polecenie ps) jako argument polecenia kill (patrz rozdział 34. „Procesy”).

Jeśli posiadasz dedykowane połączenie z serwerem SLIP i chcesz używać programu slattach, plik rc.inet1 powinieneś zmodyfikować następująco:

 

IPADDR="123.12.3.1"                            #adres IP Twojego komputera
REMADDR="142.12.3.12"              #adres IP serwera SLIP

slattach –p cslip –s 19200 /dev/ttyS0              #ustawienie predkosci i portu
/etc/ifconfig sl0 $IPADDR pointtopoint $REMADDR up

/etc/route add default gw $REMADDR

Wiersze podobne do powyższych zwykle znajdują się już w tym pliku, tyle że zaznaczone są jako komentarz. Informacje o prędkości połączenia, protokole i porcie powinieneś oczywiście dostosować do swoich potrzeb. Jeśli serwer nie obsługuje protokołu cslip, zamiast niego jako parametru polecenia slattach użyj wartości slip.

Jeśli serwer SLIP przydziela adresy IP dynamicznie, nie możesz wpisać adresu IP do pliku konfiguracyjnego. Większość serwerów SLIP wyświetla wtedy informację zawierającą przydzielony numer IP, który może zostać przechwycony za pomocą programu dip.

dip

Program dip znakomicie upraszcza łączenie się z serwerem SLIP. Aby go użyć, będziesz potrzebował skryptu, zawierającego wszystkie polecenia związane z nawiązaniem połączenia. W skrypcie takim zwykle następuje również przesłanie identyfikatora i hasła, co jeszcze bardziej upraszcza logowanie.

Przykładowy skrypt dip zamieszczony jest ma stronach man dotyczących tego programu – jeśli chcesz go użyć, skieruj go do pliku i dostosuj do swoich potrzeb. Oto prosty skrypt (jeśli jest taka potrzeba, możesz oczywiście wpisać go ręcznie, nie zapominając o dostosowaniu danych do swojego systemu).

 

#
# sample.dip   Dialup IP connection support program.
#
# Version:     @(#)sample.dip 1.40 07/20/93
#
# Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
#

              main:
                            # First of all, set up our name for this connection.
                            # I am called "uwalt.hacktic.nl"  (== 193.78.33.238)
                            get $local uwalt.hacktic.nl

                            # Next, set up the other side's name and address.
                            # My dialin machine is called 'xs4all.hacktic.nl'
             å(== 193.78.33.42)
                            get $remote xs4all.hacktic.nl
                            # Set netmask on sl0 to 255.255.255.0
                            netmask 255.255.255.0
                            # Set the desired serial port and speed.
                            port cua02
                            speed 38400
                            # Reset the modem and terminal line.
                            # This seems to cause trouble for some people!
                            reset

                            # Prepare for dialing.
                            send ATQ0V1E1X4\r
                            wait OK 2
                            if $errlvl != 0 goto modem_trouble
                            dial 555-1234567
                            if $errlvl != 1 goto modem_trouble

                            # We are connected.  Login to the system.
              login:
                            sleep 2
                            wait ogin: 20
                            if $errlvl != 0 goto login_error
                            send MYLOGIN\n
                            wait ord: 20
                            if $errlvl != 0 goto password_error
                            send MYPASSWD\n
              loggedin:

                            # We are now logged in.
                            wait SOMETEXT 15
                            if $errlvl != 0 goto prompt_error

                            # Set up the SLIP operating parameters.
                            get $mtu 296
                            # Ensure "route add -net default xs4all.hacktic.nl" will be
             ådone
                            default

                            # Say hello and fire up!
              done:
                            print CONNECTED $locip ---> $rmtip
                            mode CSLIP
                            goto exit

              prompt_error:
                            print TIME-OUT waiting for SLIPlogin to fire up...
                            goto error

              login_trouble:
                            print Trouble waiting for the Login: prompt...
                            goto error

              password_error:
                            print Trouble waiting for the Password: prompt...
                            goto error

              modem_trouble:
                            print Trouble occurred with the modem...

              error:
                            print CONNECT FAILED to $remote
                            quit 1

              exit:
                            exit

Obecnie dostępnych jest kilka wersji tego skryptu, również na dołączonej do książki płycie CD-ROM. Jeśli masz dostęp do Internetu, możesz znaleźć je w węzłach FTP i w grupach dyskusyjnych.

Konfiguracja protokołu PPP

Protokół PPP jest używany częściej niż SLIP, głównie dlatego, że ma większe możliwości. Jego funkcje podzielone są na dwie grupy: protokół HLDC (ang. High Level Data Link Control), który definiuje zasady przesyłania bloków informacji pomiędzy maszynami, oraz funkcje rezydentnego programu pppd, obsługującego protokół po nawiązaniu połączenia przez HDLC.

Podobnie jak w przypadku protokołu SLIP, najpierw następuje normalne połączenie pomiędzy dwoma komputerami poprzez modem, a dopiero później PPP przejmuje kontrolę nad połączeniem. Zanim uda Ci się ustanowić połączenie PPP, musisz skonfigurować sterownik pętli zwrotnej. Powinieneś również posiadać prawidłowo działający system tłumaczenia nazw, obojętnie, czy zapisany w pliku /etc/hosts, czy w postaci serwera DNS (patrz podrozdział „Używanie systemu DNS z protokołami SLIP i PPP” w dalszej części tego rozdziału).

Zakładanie konta PPP

Jeśli zamierzasz pozwolić innym użytkownikom łączyć się z Twoim systemem za pomocą protokołu PPP, ze względów...

Zgłoś jeśli naruszono regulamin