Konfiguracja stosu PPP na FreeBSD

Podobnie, jak większość systemów UN*X, FreeBSD znakomicie obsługuje sieci TCP/IP. Fakt ten czyni go świetnym rozwiązaniem zarówno dla domu, jak i w roli wysoko wydajnych, stabilnych ruterów oraz serwerów w sieciach lokalnych i rozległych. Atutem systemów z rodziny BSD jest również obsługa wielu urządzeń sieciowych.

Wbrew pozorom, poprawna konfiguracja systemu do pracy w sieci nie jest trudna i sprowadza się do kilku kroków.

Konfiguracja jądra systemu

Porty szeregowe w systemie FreeBSD mogą pracować z prędkościami do 115200 bps. Obecność ich sterowników jest wymagana do poprawnej pracy modemów i urządzenia Ericsson HiS.

W standardowym jądrze GENERIC wkompilowane są cztery porty szeregowe z adresami i przerwaniami, odpowiadającymi portom COM1-4 w systemie DOS. Aby upewnić się, czy system poprawnie rozpoznał wszystkie porty, należy wydać polecenie /sbin/dmesg, np:

vodka:venglin:~> dmesg | grep sio
sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa
sio0: type 16450
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16450

W powyższym przykładzie system odnalazł dwa porty szeregowe i przydzielił im nazwy: sio0 i sio1.

Jeżeli zaś używane jądro nie posiada wkompilowanej obsługi portów szeregowych, należy ją dodać, dopisując następujące linijki do pliku konfiguracji jądra:

device sio0 at isa? port "IO_COM1" flags 0x10 tty irq 4
device sio1 at isa? port "IO_COM2" tty irq 3

Dla większości użytkowników sama obsługa portów szeregowych będzie niewystarczająca, ponieważ będą oni potrzebowali dostępu SLIP/PPP.

Aby skonfigurować interfejs SLIP należy dodać następującą deklarację do pliku konfiguracyjnego jądra:

pseudo-device sl N

gdzie 'N' jest liczbą interfejsów pracujących jednocześnie.

Konfigurację interfejsu PPP można przeprowadzić w dwojaki sposób, w zależności od tego, czy protokół ma być obsługiwany po stronie jądra, czy użytkownika. Zdecydowanie polecam tę drugą opcję. Należy zacząć od dopisania jednej (lub obu -- w przypadku rozwiązania mieszanego) linijki do pliku konfiguracji jądra:

pseudo-device tun N

pseudo-device ppp N

gdzie 'n' jest liczbą interfejsów, które będą pracować jednocześnie.

Ostatnim etapem jest sprawdzenie, czy istnieją pliki odpowiadające za dostęp do portów szeregowych i pseudo-urządzenia tunelującego: /dev/cuaa* i /dev/tun*. W przypadku ich braku, należy je utworzyć poleceniem MAKEDEV.



[Skonfigurowane i zestawione łącze dzierżawione]


Konfiguracja stosu PPP

W poniższej części opiszę sposób konfiguracji programu /usr/sbin/ppp, ktory -- moim zdaniem -- jest duzo lepszym rozwiązaniem niż znany z Linuxa program pppd, głównie ze względu na ogromne możliwości konfiguracji i monitorowania stanu połączenia.

Wśród wielu zalet podsystemu PPP, postaram się wymienić te najważniejsze:





   prosty i wygodny interaktywny interfejs użytkownika z możliwością zdalnego sterowania

   ręczne i automatyczne zestawianie połączenia

   zestawianie połączenia na żądanie

   obsługa połączenia zwrotnego (ang. callback)

   maskowanie adresów (NAT)

   praca po stronie serwera/routera PPP

   obsługa protokołów autentyfikacji PAP/CHAP/RADIUS

   obsługa wielu połączeń w jednej podsieci (proxy arp)

   podstawowe funkcje filtrowania pakietów

   obsługa tuneli PPP w TCP/UDP

   obsługa kompresji Predictor-1/DEFLATE

   obsługa wielu połączeń widzianych jako jeden logiczny kanał (ang. multilink)


[Monitorowanie stanu łącza przy użyciu
interaktywnego interfejsu]


Najważniejszym krokiem w konfiguracji stosu PPP jest edycja pliku /etc/ppp/ppp.conf. Znajdują się w nim deklaracje poszczególnych połączeń oraz skrypty używane do łączenia z odległym routerem.

Pierwszym parametrem wymaganym dla poprawnej pracy stosu PPP jest nazwa portu szeregowego oraz jego parametry transmisji. Można je zmienić przy pomocy komendy set, np:

default:
set device /dev/cuaa1
set speed 115200
set ctsrts on
set parity none


tpsa:
set phone 0202122

Powyższe ustawienia całkowicie wystarczą do łączenia się w trybie ręcznym, przy pomocy polecenia term w trybie interaktywnym. Umożliwia ono bezpośrednią komunikację z modemem oraz ręczne przejście w tryb pakietowy (komenda: ~p).

Połączenia w trybie 'na żądanie' (ang. dial on demand) wymagają, aby w pliku konfiguracyjnym został zdefiniowany skrypt połączeniowy. Może mieć on następującą postać:

set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK AT&FX4&C1&D2 OK \\dATDT\\T TIMEOUT 40 CONNECT"
set login "ABORT NO\\sCARRIER TIMEOUT 5 sername:--sername: ppp word: ppp"

Plik konfiguracyjny dla użytkowników urządzenia Ericsson HiS jest dość podobny do przedstawionego powyżej, jedyną róznicą jest 'sztywne' ustawienie adresów IP oraz autentyfikacji PAP/CHAP:

default:
set device /dev/cuaa1
set speed 115200

sdi:
set ifaddr <i>lokalny-adres-IP</i> <i>adres-IP-zdalnego-rutera</i>
set timeout 0
set dial "ATD OK"
set login
set authname <i>użytkownik</i>
set authkey <i>hasło</i>
set phone 0
Sposób uruchamiania

Stos PPP może pracować w następujących trybach:





   automatyczny (-auto) - używany do połączeń na żądanie, po uruchomieniu otwierany jest i konfigurowany interfejs tunelowy, po czym program rozpoczyna pracę w tle; połączenie jest zestawiane po wykryciu ruchu wychodzącego.

   w tle (-background) - połączenie jest zestawiane natychmiast po uruchomieniu, program rozpoczyna pracę w tle.

   bezpośredni (-direct) - kanał komunikacyjny otwierany jest na standardowym wyjściu/wejściu; używany głównie po stronie serwera w kooperacji z demonem getty lub mgetty.

   dedykowany (-dedicated) - urządzenie jest cały czas otwarte, nie są używane żadne skrypty; przeznaczony tylko i wyłącznie dla łącz dzierżawionych (wykluczone działanie z urządzeniem HiS).

   interaktywny (domyślny) - po uruchomieniu czeka na polecenia od użytkownika.

Program /usr/sbin/ppp jest najczęściej uruchamiany w trybie interaktywnym, co umożliwia zestawianie połączeń zarówno w trybie ręcznym (term), jak i automatycznym (open, dial).

W przypadku łącz stałych lub zestawianych na żądanie (ang. dial on demand) o wiele wygodniejsze okazuje się uruchamianie stosu PPP w tle lub z pliku konfiguracji systemu. Można to uczynić dopisując następujące linijki do pliku /etc/rc.conf:

ppp_enable="YES"
ppp_mode="tryb pracy"
ppp_profile="nazwa łącza zdefiniowana w ppp.conf"

Jeżeli zachodzi potrzeba monitorowania łącza zestawionego w tle, należy zastosować program pppctl, dopisując wcześniej następujące polecenie do pliku /etc/ppp/ppp.conf:

set server +port hasło
Monitorowanie stanu stosu PPP

Stan łącza i stosu PPP może być monitorowany na bierząco w trybie interaktywnym lub przy pomocy programu pppctl. Służą do tego następujące polecenia:





   show bundle - konfiguracja łącza na poziomie stosu PPP

   show compress - statystyki dotyczące kompresji pakietów

   show filter - konfiguracja filtra pakietów

   show iface - stan interfejsu tunelowego; informacje te można również uzyskać przy pomocy polecenia ifconfig

   show layers - przenoszone protokoły

   show link - informacje o konfiguracji połączenia

   show log - ilość informacji przekazywanych do demona syslogd

   show physical - niskopoziomowe informacje o stanie łacza

   show proto - ilości pakietów wygenerowanych przez poszczególne protokoły

   show ccp - używane protokoły kompresji

   show hdlc - statystyki błędów w warstwie ramek HDLC

   show ipcp - statystyki protokołu IP

   show lcp - statystyki protkołu LCP (negocjacji ustawień połączenia

   show mem - użycie pamięci, ilośc wywołań funkcji malloc() i free()

   show route - tablica rutingu

W przypadku wystąpienia błedów, stos PPP informuje o tym administratora, przekazując komunikaty demonowi syslogd. Przy pomocy polecenia set log można regulować ważność przekazywanych wiadomości.

Dodatkowe informacje na temat konfiguracji programu /usr/sbin/ppp można znależć w podręczniku systemowym (man ppp), a także w Handbook i FAQ, znajdujących się w katalogu /usr/share/doc.


Creative Commons License
Wszystkie materiały na mojej stronie dostępne są na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach 2.5 Polska.