|
Prawa autorskie
Prawa autorskie należą do autora dokumentu. Udziela się pozwolenia na dystrybycję tego dokumnetu w formie elektronicznej, na płytkach CD, pod warunkiem, że zostanie zachowana oryginalna forma dokumentu. Udziela się również pozwolenia na na wydrukowanie niniejszego dokumentu do użytku prywatnego.
Prawa autorskie do tłumaczenia (c)1997 piotr.pogorzelski@ippt.gov.pl.
Zabrania się publikowania fragmentów lub całości tego dokumnetu bez zgody autora, za wyjątkiem przypadków opisanych powyżej.
Dystrybucja
W miarę powstawania nowych wersji niniejszy dokument będzie wysyłany do pl.comp.os.linux.odpowiedzi. W postaci HTML można go zawsze zobaczyć pod adresem http://www.jtz.org.pl/Html/PPP-HOWTO.pl.html
W formie bardziej nadającej się do druku, można go znaleźć tutaj: ftp://www.jtz.org.pl/HOWTO/.
Najnowsza wersja tego dokumentu w wersji angielskiej dostępna jest pod adresem http://sunsite.unc.edu/pub/Linux/docs/HOWTO/PPP-HOWTO. Lub w róznych innych formatach (SGML, ASCII, postscript, DVI) ftp://sunsite.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/other-formats.
Podziękowania
W przygotowaniu tego dokumentu pomagało mi wiele osób. Specjalne podziękowania dla Ala Longyeara, za pomoc w zrozumieniu samego PPP (jeśli znajdziecie jakieś błędy, to są to moje błędy, nie jego), Gregowi Hankinsowi (opiekunowi Linux Howto) i Danielowi Berinsonowi za pomoc przy linuxdoc-sgml kiedy mialem z nim kłopoty(3dbu przed terminem publikacji), oraz Debi Trackett (MaximumAccess.com) za wiele pomocnych sugestii na temat stylu, zawartości, porządku i prostoty i jasności objaśnień.
I na koniec dziękuję wielu ludziom, którzy kontaktując się ze mną pocztą elektroniczną przesyłali swoje uwagi. Jak w przypadku wszystkich autorów, naszą jedyną wystarczającą zapłatą jest satysfakcja, że udało się nam pomóc wielu ludziom. Pisząc ten dokument spłacam część długu, jaki ja - iwszyscy użytkownicy Linuxa- zaciągnąłem wobec ludzi, którzy napisali i opiekują się systemem, który wybrałem.
PPP (Point to Point Protocol) jest mechanizmem umożliwijącym tworzenie i utrzymowanie połączeń w standardzie IP (Internet Protocol) i innych przez linie szeregowe - bezpośrednio między komputerami za pomocą kabla bezmodemowego, zestawione polązcenie sesji telnet, połączenie między dwoma komputerami zestawione za pomocą modemów i linii telefonicznych. Za pomoca PPP możesz połączyć Linuxa z serwerem PPP i mieć dostęp d ozasobów sieci, do których ma dostęp sam serwer (no prawie wszystkich), tak jakby twój komputer był bezpośrednio przyłączony do sieci.
Możesz również ze swojego Linuxa zrobić serwer WWW, tak aby inni użytkownicy mogli dzwonić do twojego komputera i korzystać z zasobów twojego komputera i sieci do której jest przyłączony.
Ponieważ PPP jest protokołem typu każdy-z-każdym, dlatego możesz wykorzystać dwa komputery PC z Linuxem do połączenia ze sobą dwóch sieci (lun np. sieci lokalnej do internetu).
Jednż z zasadniczych różnic pomiędzy PPP i siecią Ethernet jest przepustowość. Standardowa sieć Ethernet pracuje z maksymalną teoretyczną przepustowością 10 Mbs (milionów bitów na sekunde), podczas gdy modemy pracują z prędkościami do 33.6 kbps (tsiecy bitów na sekunde). Również w zależności od rodzaju połączenia PPP mogą zaistnieć ograniczenia w wykorzystaniu pewnych usłuch lub programów użytkowych.
PPP jest protokołem typu każdy-z-każdym; nie ma (technicznej) różnicy między komputerme który nawiązuje połączenie i komputerem które na nie odpowiada. Jednak wygodnie jest myśleć o tym jako o systemie klient i serwer.
Kiedy dzwonisz aby bawiazć połączenie jesteś klientem. Komputer z którym chcesz się połączyć jest serwerem.
Kiesdy konfigurujesz Linuxa, aby mogł odpowiadać na przychodzace połązcenia, wtedy konfigurujesz serwer.
Każdy kompuer PC z Linuxem, może być zarówno klientem i serwerem - nawet równocześnie, jeśli masz tylko więcej niż jeden port szeregowy (i modem, jesli to jest konieczne). Tak jak stwierdziliśmy wcześniej, tak naprawdę nie ma różnicy pomiędzy klientem i serwerem, przynajmniej tak długo, jak dotyczy to samego PPP od momentu zestawienia połączenia.
W tym dokumencie komputery które inicjują połączenie ("dzwonią do") nazwyamy KLIENTAMI. Komputery, ktróre odbierają połączenie, sprawdzają toższamość dzwoniącego (za pomoca haseł lub innych mechanizmów) nazwyamy SERWERAMI.
Ludzi najbardziej interesuje korzystanie z PPP jako klient w celu nawiazaniu połączenia z serwerem i połączeniu ich komputera lub całej sieci lokalnej z Internetem.
Procedura opisana w tym dokumencie pozwoli ci na zestawienie połązcenia z Inernetem a nawet zautomatyzowanie całej tej procedyry.
Pdamy również kilka wskazówek w jaki sposób skonfigurować Linuxa jako serwer PPP i jak połączyć ze sobą dwie sieci (z pełnym routingiem) , co jest często nazywane zestawianiem połączenia sieci WAN - Wide Area Network.
Istnieje wiele różnych dystrybucji Linuxa, i każda posiada własne sposoby na wykonywanie pewnych standardowych zadań.
W szczególności istnieją dwa różne sposoby jakich używa Linux (i Unix) do uruchomienia systemu, sonfigurowania interfejsów itp.
Mówimy o stylu stylu BSD inicjowania systemu i stylu systemu V. Możesz często spotkać zażarte dyskusja nad wyższoscią jednego systemu nad drugim. Jeśli cię to bawi możesz się przyłączyć.
Prawdopodobnie najbardziej rozpowszechnionymi dystrybucjami są:
Styl BSD polega na przetrzymywaniu plików inicjalizujących system w
katlogu /etc/...
, a mianowicie:
/etc/rc /etc/rc.local /etc/rc.serial
Pliki inicjalizacjne w wersji Systemu V są przecowywane w licznych
podkatalogach katalogu /etc/rc.d/...
:
drwxr-xr-x 2 root root 1024 Jul 6 15:12 init.d -rwxr-xr-x 1 root root 1776 Feb 9 05:01 rc -rwxr-xr-x 1 root root 820 Jan 2 1996 rc.local -rwxr-xr-x 1 root root 2567 Jul 5 20:30 rc.sysinit drwxr-xr-x 2 root root 1024 Jul 6 15:12 rc0.d drwxr-xr-x 2 root root 1024 Jul 6 15:12 rc1.d drwxr-xr-x 2 root root 1024 Jul 6 15:12 rc2.d drwxr-xr-x 2 root root 1024 Jul 18 18:07 rc3.d drwxr-xr-x 2 root root 1024 May 27 1995 rc4.d drwxr-xr-x 2 root root 1024 Jul 6 15:12 rc5.d drwxr-xr-x 2 root root 1024 Jul 6 15:12 rc6.d
Jeśli chcesz wiedzieć, w którym z tych plików jest inicjowana twoja karta sieciowa i tablice routingu, musisz poszukać w tych plikach odpowiednichj poleceń, które to wykonują.
Niektóre dystrybucje (RedHat i Caldera) posiadają progeam pod X służący do konfiguracji systemu PPP. W tym dokumencie nie opisujemy tych specyficznych narzędzi. Jeśli masz z nimi kłopot skontaktuja się bezpośrednio z dystrybutorami.
Każde urządzenie przyłączające komputer do Internetu musi posiadać własny, niepowtarzalny numer IP. Jest on przydzielany w każdym kraju centralnie przez odpowiednie instytucje.
Jeśli przyłączasz do Internetu sieć lokalną (LAN) musisz korzystać z numerów IP z własnej puli adresów IP (dla każdego komputera, urządzenia w sieci lokalnej). Nie możesz brać adresów z powietrza i korzystać z nich d ołączeia się z inną siecia, gdyż w najlepszym wypadku to nie bedzie działać, a w najgorszym moze zkłócić pracę innych systemów, których numery pokrywają się z wybranymi przez ciebie.
Pamiętajm że numery IP podawane w tym dokumencie (poza kilkoma wyjątkami) należą do puli numerów dla sieni nie przyłączonych do internetu, zarezerwowane dla sieci, które nigdy nie bedą do niego przyłączone.
Klasy numrów IP, zarezerwowwane dla sieci, które nigdy nie będą przyłaczone fo Interntu wyglądają następująco:
Jeśli posiadasz siec, krora nie otrzymała adresów od instytucji do tego celu przeznaczonej, powinieneś używac numerów z jendej z przedstawionej pozyżej grup.
Te numery nigdy nie powinny być używane w internecie. Mogą być z powodzeniem używane w lokalnych sieciach Ethernet na komputerach, które są przyłaczone do internetu. JEst to możliwe ponieważ numery IP są przydzielane urządzeniom a nie komputerom. Tak więc podczas gdy karta sieciowa twojego komputera moze być skonfigurawana do uzywania numeru 10.0.0.1, możesz być jednocześnie przyłączony do internetu za pomocą protokołu PPP i interfejs PPP na twoim komputerze otrzyma zupelnie inny (zarejestrowany do użycia w Internecie) numer IP. Twoj serwer będzie posiadał połączenie z internetem, lecz inne twoje komputery w sieci lokalnej nie będą.
Jednak wykorzaystując możliwości linuxa o nazwie masqueradeing i narzędzie ipfwadm, możesz dostępnić pozostałym komputerom dostęp do internetu (z pewnymi ograniczeniami).
Wiecej inforamcji na ten temat można znaleźć w dokumencie IP Masquerade mini HOWTO pod adresem Linux IP Masquerade mini HOWTO
Wiekszośc użytkwoników, która jest zinteresowana podłączeniem przez PPP swojego komputera do internetu przy wykorzystaniu w tym celu serwera dostarczanego przez swojego dostawcę Internetu nie musi starać sieo przydział własnego numeru IP.
Jeśli pragniesz przyłączyć do internetu małą podsieć, dostawcy Internetu (ISP) mogą zapewnić dedykowaną podsieć kilku numerów z puli własnych numerów IP.
W przypadku większości użytkowników przyłączających za pomocą PPP własny komputer do Internetu, większość dostawców stosuje dynamicznie przydzielany numer IP. To znaczy, zę w fazie połączenia, serwer PPP przekaże twojemu komputerowi, który numer IP masz przydzielony na czas zestawionego połączenia.
W przypadku dynamicznego rpzydzielania adresów IP, za każdym razem kiedy się łączysz możem otrzymać inny numer IP. MA t oznaczenie dla programów pracujących na twoim komputerze w trybie serwera, np. sendmail , ftpd, httpd i inne. Ogranizcenia wynikłe z dysnamicznego przydziału adresów (i spsoby ich obejściatam gdzie jest to możliwe) są omówione dalej.
Krok po kroku opisujemy w jaki sposób nawiązać połączenie między modemami i zestawić połączenie IP za pomocaprotokołu PPP. Zakładamy, że jądro ma wkompilowaną obsługę PPP (lub jest skompilowany odpowiedni moduł) oraz został zainstalwoane niezbędne oprogramowanie. (Nie podajemy w jaki sposób skonfigurować/skompilować jądro, dowiesz się na ten temat z innych dokumentów).
Choć DIP (standardowe narzędzei do zestawiania połączenia w trybie SLIP) może być również wykorzystane do zestawienia połączenia PPP, jednak skrypty dio tego wymagane są znacznie bardziej skomplikowane. Dlatego nie opisujemy jak korzystać z DIPa do tworzenia połaczenia PPP.
Zamiast tego opisujemy standardowe oprogramowanie wykorzystywane w tym celu, praę programów chat/pppd.
Pdajemy wskazówki w jaki sposób skonfigurować serwer PPP (pozwalający innym na nawiązywanie połaczeń modemowych i zestawianie połączeń PPP).
Pamiętaj, że zrobić z Linuxa serwer PPP można na mnóstwo sposobów. W tym dokumenci autor przedstawia w jaki sposób autor skonfigurował kilkanaście takich serwerów, każdy po 16 modemów.
Ta metoda została sprawdzona w działaniu. Jednak nie musi być najlepszą. Jeśli któs ma sprytniejszą,lepsza konfigurację swerwera PPP, nie wahajcie się napisać na ten temat do autora niniejszego dokumentu.
Przedstawiamy podstawowe informacje na temat łączenia dwóch sieci LAN, lub sieci LAN z Internetem przy wykorzystaniu oritikołu PPP.
Ten dokument zakłada, zę korzystasz zjadra Linuxa w wersji 1.2.x i PPP w wersji 2.1.2 lub jądra w wersji 1.3.x/2.0.x u PPP 2.2
Możliwe jest korzystanie PPP w wersji 2.2.0 z jądrem 1.2.13 lecz wymagane są odpwiednie łaty. Ten dokument NIE omawia tego przypadku.
Powinieneś również wiedizeć, że nie można używać PPP 2.1.2 z jądrem 2.0.X.
Pamiętajm ze ten dokument nie porusza problemów związanych z
wykorzysatniem ładowalnych modułów jądra w wersji 2.0.x. Przeczytaj
kerleld mini-HOWTO i dokumetacje kernel/module w dystrybucji jąder
2.0.x ( w katalogu /usr/src/linux/Documentation
.
Ponieważ ten dokument jest rpzeznaczony dla początkujących użytkowników, mocno zalecamy korzystanie z wersji linuxa i towarzyszącego oprogramowania, których wspołraca jest uważana za stabilną.
Radzimy zapoznać się z :-
/usr/doc...
)man chat
i man pppd
)
Najlepszym punktem początkowym dokumentacji Linuxa po polsku jest Strona macierzysta polskich tłumaczeń dokumentacji Linuxa
Choć do zestawienia połączenia PPP wystarczą informacje zawarte w tym dokumencie bez konieczności czytania innych, lecz radzimy to zrobić , przez co uzyskasz lepsze zrozumienie całego zagadnienia. Bedziesz w stanie samemu wykrywać problemy (lub choćby zadawać mądrzejsze pytania na pl.comp.os.linux).
Wspomniane dokumenty (jak zresztą cała masa innych, włączając odpowiednie RFC) dostarczają dodatkowej, szczegółowej informacji od tej jaką można było przedstawić w niniejszym dokumencie.
Jeśli masz zamiar podłączyć do Internetu sieć lokalną LAN, powinieneś
posiadać podstawowe informacje na temat sieci TCP/IP. Prócz
wspomnianych wcześniej dokuentów na pewno bardzo wartościowymi będą
dla ciebie pozycje wydawnictwa O'Reilly: "
TCP/IP
Network Administration"
i "
Building
Internet Firewalls"
.
Istnieje wiele list dyskusjnych na temat Linuxa, jako forum wymiany informacji między użytkownikami o różnym poziomie znajomości tematu. Zachęcamy do korzystania z tych, które cię interesują i w miarę możliwości dostarczania tam własnego wkładu.
Część z list jest przeznaczowna dla bardzo zaawansowanych użytkowników lub specjalistów w danym temacie. Choć nikt nie będzie narzekał jeśli się na taką listę zapiszesz, lecz nie będziesz wysyłał żadnych pytań, lecz jeśli zadasz początkujące pytania na takich listach, możesz spodzieać się goroących odpowiedzi. Nie jest tak dlatego, ze guru nienawidzą początkujących, lecz dlatego, że przeznaczeniem tych list jest obsługa konkretnych problemów ma odpowiednio wysokim poziomie trudności.
Zachęcamy do dołączenia się do list, które nie mają szcególnyc hwywmagań c odo uczestników, lecz pamiętaj aby twoje wiadomości były ściśle związane z tematem listy.
Dobrym punktem startowym na temat list i grup dyskusyjnych o Linuxe jest strona Linux Mailing List Directory
Abyś mogł korzystać z PPP jądro Linuxa musi być skompilowane w taki
sposób aby wspomagać jego obsługę. Jeśli jeszcze nie posiadasz,
zaopatrz się w kod źródłowy jądra - jeśli jest zainstalowany
znajdziesz go w katalogu /usr/src/linux
.
Sprawdź zawartość tego katalogu, wiele dystrybucji podczas instalacji wgrywają również pliki źródłowe jądra.
Źródła jądra możne również zfobyć przez Internet z
sunsite.unc.edu
lub jego licznych kopii.
Krótka instrukcja jak zdobyć i zainstalować źródła jądra Linuxa. Pełną inforamcję na ten temat zawiera dokument Linux Kernel HOWTO.
Aby zainstalować i skompilować jądro Linuxa musisz być zalogowany jako administrator(root).
/usr/src
cd /usr/src
/usr/src/linux
czy są jużtam zainstalowane
pliki źródłowe jądra./usr/src
.rm -rf /usr/src/linux
tar xzf linux-2.0.29.tar.gz
cd /usr/src/linux
, przezcytaj plik
README. Zawiera doskonałe wyjaśnienie w jaki sposób skonfogurować i
skompilować nowe jądro. Przeczytaj ten plik (mozesz go wyderukować,
gdyż papierowa kopia może być przydatna podczas konfiguracji i
kompilacji jądra).
MUSISZ wiedzieć jakiego rodzaju karty posiadasz. W niektórych przypadkach (karty dźwiękowe) musisz również znać różne inne ustawienia (np przerwanie IRQ, adrew We/Wy i podobne).
Aby rozpocząć proces konfiguracji, wykonaj polecenia opisane w pliku README. Rozpozcynasz proces konfiguracji jądra poleceniem
make config
Aby korzystać z PPP, musisz skonfigurować jądro tak, aby została dołączniea obsługa PPP w jądrze (PPP wymaga zarówno obsługi protokołu przez jądro, jak i samego programu pppd).
PPP (point-to-point) support (CONFIG_PPP) [n] y
Odpowiedz na następne pyania zgodnie z posiadanycm sprzętem i pożądanyc hcech systemu. Następnie wykonaj kolejne polecenie przedstawione w pliku README.
Jadro 1.2.13 tworzy jedynie 4 urządzenia PPP. W przypadku korzystania z kart wieloportowych musisz poprawić pliki źródłowe jądra. (Zobacz README.linux, część dystrybucji palietu PPP-2.1.2.
Uwaga: dialog komfiguracyjny jądra w wersji 1.2.13 nie pozwala na
cofanie się do pytań na które już zostałą podana odpowiedź. Więc jeśli
pomylisz się musisz przerwać program (naciskając Ctrl-C i
powtórzenie polecenia make config
.
W przypadku jądra 2.0.x możesz wykorzystać przedstawioną wcześńiej procedurę. W celu przwidłoweg ozinstalowania plików źródłowych wykonuj instrukcje z pliku README. Następnie rozpocznij konfigurację wydając polecenie:
make config
Możesz spróbować innego sposobu, a mianiwicie
make menuconfig
Ta metoda przywołuje program konfiguracyjny oparty o listę prostych w obsłudze menu, z osiągalną pomocą on-line.
Jesnieje również bardzo rekomentowana wersja pod X
make xconfig
Obsługa PPP może być wkompilowana bezpośrednio w jądro lub jako oddzielny moduł. Jeśli będziesz korzystął z PPP tylko od czasu do czasu, wtedy polecamy skompilowanie PPP jako oddzielnego modułu. Jeśli korzystasz zporgramu 'kerneld', modul PPP zostanie załadowany automatycznie w momencie gdy jądro zostanie poproszone o obsługę protokołu PPP. W ten sposób oszczedzasz cenna pamięc operacyjną w systuacji kiedy nie korzystasz z PPP, ponieważ kod jadra musis w całości znajdować sie w pamięci operacujnej komputera, lecz moduły łwadowane przez kerneld saautomatyczne usuwane z pamięci jęsli nikt z nich nie korzysta.
W tym celu musisz włączyć obsłygę ładowania modułow:
Enable loadable module support (CONFIG_MODULES) [Y/n/?] y
Aby dodać obsługę PPP odpowiedz na następujące pytanie:
PPP (point-to-point) support (CONFIG_PPP) [M/n/y/?]
Jeśli chcesz aby to był ładowalny moduł odpowiedz M. Jeśli bma być wkompilowany bezpośrednio w jądro odpowiedz Y.
W przeciwieństwie do jądra w wersji 1.2.13 jądro 2.0.x tworzy urżadzenie PPP w locie wtedy, kiedy są potrzebne i nie trzeba zmieniać źródęł jądra aby dodać więcej niź 4 kanały PPP.
/proc/net/dev
Jesli korzystasz z PPP-2.2 stwierdzisz, zę efektem ubocznym tworzenia kanałów PPP w locie jest fakt, że nie są one wykazywane w pliku /proc/net zanim nie zostanie utworzone przez uruchomiony program pppd.
[hartr@archenland hartr]$ cat /proc/net/dev Inter-| Receive | Transmit face |packets errs drop fifo frame|packets errs drop fifo colls carrier lo: 92792 0 0 0 0 92792 0 0 0 0 0 eth0: 621737 13 13 0 23 501621 0 0 0 1309 0
Jeśli już jakieś połączenia zostaną nawiązane, na serwerze PPP będziesz mógł obejżeć listę urządzeń podobną do tej poniżej:
[root@kepler contrib]# cat /proc/net/dev Inter-| Receive | Transmit face |packets errs drop fifo frame|packets errs drop fifo colls carrier lo: 428021 0 0 0 0 428021 0 0 0 0 0 eth0:4788257 648 648 319 650 1423836 0 0 0 4623 5 ppp0: 2103 3 3 0 0 2017 0 0 0 0 0 ppp1: 10008 0 0 0 0 8782 0 0 0 0 0 ppp2: 305 0 0 0 0 297 0 0 0 0 0 ppp3: 6720 7 7 0 0 7498 0 0 0 0 0 ppp4: 118231 725 725 0 0 117791 0 0 0 0 0 ppp5: 38915 5 5 0 0 28309 0 0 0 0 0
Jeśli konfigurujesz swojego Linuxa jako serwer PPP, musisz wkompilować w jądro obsługę forwardowania pakietów (IP forwarding). Jest to również konieczne, jeśli twoj Linux ma łączyć ze sobą dwie sieci LAN lub przyłączyć lokalną sieć LAN do Internetu.
Jeśli przyłączasz sieć LAN do Internetu (lub łączysz ze sobą dwie sieci LAN) powinieneś poświęcić dużo uwagi bezpieczeństwu. Dlatego obowiązkowe wydaje się w takim przypadku wkompilowanie obsługi firewalla (IP Firewalling).
Będziesz tego potrzebował również w przypadku, gdy chcesz skorzystać z IP masquerade w celu podłączenia do internetu sieci lokalnej pracującej na zastrzeżonych klasach numerów IP.
Jak już zainstalujesz nowe jądro i zrestartujesz komputer aby było aktywne, wtedy możesz rozpocząć konfigurowanie i testy połączenia PPP.
Zanim będziesz w stanie ustanowić połączenie PPP z serwerem, musisz zdobyć następujące informacje (od administratora opiekującego sie serwerem):
Zapisz dokładnie wszystkie te informacje - będziesz z nich korzystać.
Powinieneś się upewnić że twój modem jest poprawnie podłączony i skonfigurowany, i wiesz do którego portu szeregowego jest podłączony.
Pamiętaj:-
Korzystając z programu komunikacyjnego (mp minicom), wybierz numer telefoniczny serwera PPP do którego chcesz się przyłączyć za pomocą PPP.
(Uwaga: W tym stadium nie staramy się nawiązać połączenia PPP - jednynie chcemy się upewnić, że posiadamy poprawny numer telefonu, chcemy sorawdzić, że nasz modem działa poprawnie i chcemy dowiedzieć się jakie dokladnie komunikaty wysyła w czasie logowania się serwer PPP).
Podzcas czałego tego procesu powinieneś prowadzić bardzo dokładne notatki wszelkich zachęt i komunikatów wysyłanych przez serwer lub najlepiej włączyć rejestrownianie wszystkiego do pliku (log file). Szczególnie nas interesuje cała procedura logowania się do systemu, w jaki sposób serwer zachęca cię do wprowadzenia identyfikatora, a potem hasła i jakie komunikaty wyświetla podczas uruchamiania PPP.
Warto zadzwonić co najmniej dwukrionie. Niektóre serwery zmieniają sposób zachęcania do wprowadzania informacji (np. z czasem). Dwie najważniejsze zachęty jakie potrzebujesz znać to:-
Jeśli w celu uruchomieania na serwerze PPP musisz wydać jakieś polecenie, musisz również zanotować jak wygląda zacheta serwera do wywdawani poleceń, po tym jak już się zalogujesz do serwera.
Jeśli serwer automatycznie uruchamia PPP zaraz po tym jak się zalogujesz, zobaczysz na ekranie serie smieci - to serwer PPP przesyła inforamcje niezbędne do konfiguracji i zestawienia połączenia PPP.
To powinno wyglądać mniej więcej tak:-
~y}#.!}!}!} }8}!}$}%U}"}&} } } } }%}& ...}'}"}(}"} .~~y}
(pojawia się raz za razem)
W tym momencie możesz przerwać połączenuie (zwykle wpisz szybko +++, a gdy twój modem odpowie OK wydaj polecenie ATHO).
W niektórych systemach PPP musi zostać uruchomione przez użytkownika. Zwykle jest tak dlatego, ze serwer został skonfigurowany w ten sposób aby umożliwić połączenia PPP i zwykłe sesje terminalowe przy wykorzystaniu tego samego konta. W takim przypadku, jak już sięzalogujesz na serwerze musisz wydać to polecenie. Ponownie zobaczysz smiecie pojawiające się na ekranie - to serwer PPP próbuje nawiązać połączenie z twoim komputerem. Możesz odłozyć słuwawkę.
Jeśli nie zobaczysz na ekranie wspomnianych wcześniej śmieci wszystko wskazuje (choć nie na pewno), że popełniłeś jakiś błąd.
Może się zdarzyć taki przypadek, ze trafiłeś na serwer pracujący w trybie pasywnym - to znaczy taki, który nie wysyła komunikatów zanim klient (twój komputer) nie rozpocznie zestawiania połączenia PPP.
Jednakże większość serwerów jest w tym wzgłędzie aktywna i powinieneś jednak zobaczyć te śmiecie.
Jeśli nie możesz uruchomićmodemu, przeczytaj dokumentację, która mu towarzyszy, strony podręcznika dotyczące oprogramowania komunikacyjnego z którego korzystasz (man minicom) i Serial-JTZ!. Kiedy się z tym uporasz powtórz całą procedurę.
Jeśli korzystasz z szybkich (zewnętrznych) modemów (14400 Bodów i więcej) twój port szeregowy musi umożliwiać przesyłanie inforamcji z odpowiednią prędkością jaka może wygenerować modem, sczególnie gdy modem posiada kompresję sprzętową.
To wymaga korzystania z portów z nowoczesnymi ukłądami UART (Universal Asynchronous Receiver Transmitter) takimi jak 16550A. Jeśli korzystasz ze starego komputera (lub starą kartę portów szeregowych) całkiem możliwe, że korzystasz z układów UART 8250, które mogą powodować klopoty przy korzystaniu z modemów o dużej prędkości.
Linux potrafi powiedzieć jakiego rodzaju układu używasz. Skorzystaj z polecenia
setserial -a /dev/ttySx
Jeśli nie posiadasz układów 16550A, kup nową kartę portów szeregowych zawierającą te uklady (cena poniżęj $ 50).
Uwaga: pierwsze wersje układu 16550 miały bląd. Został on szybko rozpoznany i powstala nowa poprawiona wersja tego układu 16550A. Cześć błędnych układów dostała się jednak do obiegu. Prawdopodobieństwo, że natrafisz na takie układy jest niezwykle małe, lecz sprawdzając układy szukaj oznaczenia 16550A, sczególnie w starszych kartach.
Muszi poprawnie skonfigurować modem, przeczytaj jego dokumentację. Większość modemów jes dotarczana z ustawieniami fabrycznymi, które włączają opcje wymagane dla PPP. Minimalna konfiguracja powinna określać:-
&
K3 w wielu modemach Hayes)Inne ustawienia (standardowe polecenia modemów Hayes), którym powinieneś się przyjżeć to:
&
C1 Carrier Detect ON Tylko po połączeniu&
S0 Data Set Ready (DSR) zawsze ONWarto również się dowiedzieć w jaki sposób pracuje połączenie między modemem i twoim komputerem. Wiekszość nowoczesnych modemów pozwala na pracę z USTALONĄ predkością, pozwalając jednocześnie na zmianę prędkości połączenia przez linię telefoniczną na największą jaką potrafi przenieść sama linia i obsłużyć zdalny modem.
Jest to znany jako tryb pracy z dzieloną prędkościa. Jeśli twoj modem potrafi to obsłużyć, zblokuj interfejs szeregowy modemu na najwiekszą prędkość jaką porafi obsłużyć (zwykle 115200 bps lub 38400 bps dla modemów 14400 bodów).
Skorzystać z oprogramowania komunikacyjnego (np minicom) aby
dowiedzieć się więcej na temat konfiguracji modemu i skonfiguruj go do
pracy z PPP. Wiekszość modemów pokazuje aktualne ustawienia po wydaniu
polecenia AT&
V, lecz sprawdź to w dokumentacji modemu.
Jeśli przypadkiem nabałaganisz w ustawieniach, możesz powrócić do
ustawień fabrycznych wydając polecenie AT&
F. W większości
modemów jakie spotkałem ustawienia fabryczne były wystarczajace do
poprawnej współpracy z PPP, lecz powinieneś to sprawdzić.
Zachować konfigurację modemu w pamięci modemu (zwukle poleceniem
AT&
W - sprawdz w dokuentacji).
Zachowanie prawidłowej konfiguracji w modemie, włączenie modemu, lub jego zerowanie ją uaktywnia. Dzięki temu w znaczny sposób uraszcza się skrypty niezbędne do zestawienia połączenia PPP.
Kiedy informacje podróżują przez linie szeregowe, może się zdarzyć, że dane przybywają szybciej, niż komputer jest w stanie je obsłużyć (komputer może być zajęty czymś innym - pamiętaj Linux jest systemem wielozadaniowym i wieloużytkownikowym). Aby zapewnić, że informacja nie zostanie utracona konieczne jest odpowiednie sterowanie przepływem danych (dane nie miesczą się w buforze i są tracowne).
Istnieją dwie metody:-
Podczas, gdy ta ostatnia może być wystarczająca w przypadku termianli (danych tekstowych), połączenia PPP korzystają z wszystkich 8-miu bitów i moze się zdarzyć, że gdzieś w strumieniu danych znajdzie się znak odpowiadający sygnałowi Control Q lub Control S. Więc jeśli modem zostanie skonfigurowany do obsługi sysgnałów programowych, wszystko może gwałtownie przestać działać.
Dal PPP korzystającego z danych 8-mio bitowych sprzetowe sterowanie przepływaem danych jest absolutnie niezbędne.
Ponieważ PPP musi skonfigurować urządzenia sieciowe, zmodyfikować tabele routingu itp. musi wtedy posiadać uprawnienia administratora.
Jeśli połączenie PPP zestawia użytkownik inny niż root, wtedy program pppd musi mieć ustawiony bit setuid i należeć do aministratora (setuid root) :-
-r-sr-xr-x 1 root root 95225 Jul 11 00:27 /usr/sbin/pppd
Jeśli /usr/sbin/pppd nie ma takich atrybutów, musisz jako administrator (root) wydać polecenie :-
chmod u+s /usr/sbin/pppd
Powuższe polecenie umozliwia uruchomienie programu pppd z uprawnieniami administratora nawet przez zwykłego użytkwonika. W ten sposób zwykły użytkownik może zainicjować połączenie PPP, a sam program będzie posiadał odpowiednie uprawnienia do skonfigurowania urządzeń sieciowych i modyfikacji tabeli routingu.
Programy z ustawionym bite, suid są potencjalnymi dziurami w systemie zabezpieczeń i powinieneś być niesłychanie ostrożny w ustawianiu biru suid dla programów, których właścicielem jest administrator (root). Cześć programów (włączając pppd) była napisana ze specjalnym uwzglednieniem minimalizowania niebezpieczeństwa wykoklego z wykonywania tego programu jako administrator, więc powinieneś tym razem czuć się bezoieczny (choć nie dajemy żadnych gwarancji).
W zależności od sposobu pracy twojego systemu - sczegołnie jeśli chesz umożliwić KAŻDEMU użytkownikowi twojego systemu inicjowanie połączeń PPP powinieneś zmienić atrybuty sktyptów do włączania/wyłączania PPP tak, aby te pliki mogły byc czytane i wykonywane przez wszystkich.
Jednakże jeśli NIE chcesz aby każdy mogł uruchomić PPP (np twoje dzieci posiadają konta na twoim komputerze i nie chesz aby podłaczały się do internetu bez twojego nadzoru) musisz utworzyć odzielna grupę PPP (zmień plik /etc/group) a następnie:-
-rwxr-x--- 1 root PPP 587 Mar 14 1995 /usr/sbin/ppp-on
-rwxr-x--- 1 root PPP 631 Mar 14 1995 /usr/sbin/ppp-off
Nawet jeśli tak postąpisz, zwykli użytkownicy NADAL nie będą w stanie zamknąć połączenia PPP!. Pamiętaj, że kązdy może wyłączyć modem.
Na moim domowym PC NIE ustawiam bitu suid dla pppd. Abyuruchomić połączenie muszę zalogować sie jako administrator - czyli znać hasło. W ten sposób kontroluję dostęp mojego syna do Internetu.
Jeśli nawet chcesz aby PPP było dostępne dla wszystkich użytkowników, podczas wykonywania opisyuwanych poniżej modyfikacji plików i katalogów musisz pracować jako administrator.
PPP korzysta z kilku plików podczas zestawiania połączenia. Ich nazwy i położenie sąinne dla PPP w wersji 2.1.2 i 2.2.
W przypadku PPP 2.1.2 są to:-
/usr/sbin/pppd # plik binarny /usr/sbin/ppp-on # skrypt do nawiązywania połaczenia /usr/sbin/ppp-off # skrypt kasujący połączenie /etc/ppp/options # plik z opcjami totyczacymi wszystkich połączeń /etc/ppp/options.ttyXX # opcje specyficzne dla połączeń przez ten port
For PPP 2.2 the files are:-
/usr/sbin/pppd # plik binarny /etc/ppp/scripts/ppp-on # skrypt do nawiązywania połaczenia /etc/ppp/scripts/ppp-on-dialer # skrypt do wybierania numeru serwera /etc/ppp/scripts/ppp-off # skrypt dla programu chat /etc/ppp/options # plik z opcjami totyczacymi wszystkich połączeń /etc/ppp/options.ttyXX # opcje specyficzne dla połączeń przez ten port
Jak widać w katalogu /etc powinieneś znaleźć podkatalog ppp:-
drwxrwxr-x 2 root root 1024 Oct 9 11:01 ppp
Jeśli nie istnieje musisz go utworzyć.
Jeśli ten katalog już istnieje, powinien zawierać plik wzrocowy o nazwie options.tpl. Poniżej przedstawiamy zawartość tego pliku.
Powinieneś go wydrukować ponieważ zawiera wyjaśnienie wszystkich opcji
PPP (dobrze się z nimi zapoznać w połączeniu ze stronami podręcznika
dotyczącymi programu pppd (man pppd)). Choć mogłbyć użyć tego pliku
jako
podstawy d utworzenia pliku /etc/ppp/options
, prawdopodobnie
lepiej jest go utworzyć od początku, tak aby nie zawierał tych
wszyskich komentarzy - będzie znacznie łatwiejszy w utrzymaniu.
Jeśli posiadasz wiele linii modemowych (przypadek serwera PPP),
powinieneś utworzyć plik /etc/ppp/options
z opcjami wspólnymi
dla wszystkich portów i jeśli jest to konieczne utworzyc indywidualne
pliki dla każdej linii oddzielnie, które będą zawierały indywidualne
ustawienia wymagane dla konkretnego portu.
Są to pliki o nazwach options.ttyx1<
, options.ttyx2
itd.
(x X oznacza odpowiednią literę oznaczjąca port szeregowe twojego
komputera).
Jednak w przypadku pojedynczego połączenia PPP całkowicie wystarczy
jeden plil /etc/ppp/options
. Ostatecznie mogłbyś podać
wszystkie te parametry w wierszu poleceń programu pppd.
Łatwiej jest opiekować się konfiguracją, która korzysta z plików
/etc/ppp/options.ttySx
. Jeśli korzystasz z PPP aby łączyć
się z różnymi serwerami, możesz utworzyć dla każdego serwera wlasny
plik konfiguracyjny i przekazywać jego nazwę jako argument polecenia
uruchamiającego połączenie PPP.
Częsć dystrybucji PPP wydaje się być pozbawiona pliku options.tpl,
dlatego tutaj podajemy jego pełną treść. Zamiast zmieniać ten plik,
lepiej stworzyć /etc/ppp/options
od nowa. Rownież nie
wprowadzaj zmian bezpośrednio do tego pliku. Zrob wpierw jego kopię i
ją modyfikuj. W razie klopotów możesz wtedy rozpocząć wszystko na nowo.
# /etc/ppp/options -*- sh -*- ogólne opcje pppd # created 13-Jul-1995 jmk # autodate: 01-Aug-1995 # autotime: 19:45 # Do sestawienia połączenia między modemami wykorzystaj program lub # skrypt. Bedzie tozwyklę program "chat", który wybierze numer # zaloguje się i uruchomi ppp po drugiej stronie #connect "echo Musisz zainstalować program do nawiązania połączenia modemowego" # Wykonaj ten program, lub skrypt po tym, Jak pppd zerwie połączenie. # ten skrypt może w przypadku braku sprzętowego sterowania modemem # wydać modemowi aby odłożył słuchawkę. #disconnect "chat -- \d+++\d\c OK ath0 OK" # async character map -- 32-bit hex; każdy bit oznacza znak, który # musi być poprzedzony znakiem escape (escaped char), tak aby pppd mogł # go odebrać. 00000001 oznacza '\x01', a 0x80000000 oznacza '\x1f'. #asyncmap 0 # Wymaga potwierdzenia toższamoaći przed zezwoleniem na # wysyłanie/odbiór pakietów sieciowych #auth # Do sterowania przepływem inforamcji przez port szeregowy skorzystaj # ze sprzętowego sterowania modemem (tzn. RTS/CTS). #crtscts # Do sterowania przepływem inforamcji przez port szeregowy skorzystaj # ze programowego sterowania modemem (tzn/ XON/XOFF). #xonxoff # Po zakończonych sukcesem negocjacjach IPCP dodaj to tabeli routingu # domyślną trasę, używając jako bramę komputer po drugiej stronie # połączenia ppp. Trasa ta jest usuwana z tabeli routingu w momencie # zerwania połączenia PPP. #defaultroute # Określa, które znaki muszą być przesyłąne specjalnie (escaped) - # niezależnie czy druga strona (za pomocą opcji asyncmap) zażądała aby # były w taki sposób przesyłane, czy nie. Znaki są podane jako ciągi # liczb w notacji szesnastkowej, rozdzielone przecinkami. Zauważ, że # możesz tu wpisać niemal każdy znak, w przeciwieństwie do parametru # asyncmap, który jako swoje argumenty przyjmuje jedynie znaki sterujące # (control characters). Znaki, które nie mogą być przesyłane w sposób # specjalny to znaki, których kody zawierają się w przedziale 0x20-0x3f # i znak 0x5e. #escape 11,13,ff # Nie korzystaj z sygnałów strowania modememe #local # Określa, że pppd w celu zapewnienia wyłącznści w dostępie do portów # szeregowych powinno korzystać z plików blokady w stylu UUCP. #lock # Krzystaj z sysgnałów sterownai modemem. Na Ultrixie, ta opcja # oznacza spzętowe sterownie przepływem danych, tak jak to włącza opcja # crtscts. # (Ta pcja nie jest w pełni zaimplementowana) #modem # Nadaj zmienej MRU [Maximum Receive Unit - Największy blok # otrzymywany] wartość <n>. Pppd poprosi drugą stronę o nie przysyłanie # większych pakietów niż <n> bajtów. Minimalna wartość MRU wynosi # 128. Wartością domyślną jest 1500. W przypadku wolnych łączy zaleca # się wartosć 296 (40 bajtów na nagłówek TCP/IP i 256 bajtów danych) #mru 542 # Ustawienie netmaski interfejsu sieciowego. 32-wu bitowa w notacji # dajtowo-dziesiętnej (np. 255.255.255.0). #netmask 255.255.255.0 # Wyłączenie opcji negocjowania adresu IP z serwerem. Jeśli ta opcja będzie # włączona adres IP musi zostać podany jako parametr połączenia (w pliku # opcji lub w wierszu poleceń, lub przekazany przez serwer w czasie # negocjacji IPCP. #noipdefault # Włącza pasywne zachowanie LCP. PPP spróbuje nawiązać połączenie, # jeśli to się nie uda, zamiast zakończenia pracy (normalne zachowanie # gdy ta opcja jest wyłączona) bedzie oczekiwał na poprawny pakiet LCP # nadesłany przez drugi komputer. #passive # PPP nie będzie wysyłało żadnych pakietów LCP, w celu nawiązania # połączenia. Będzie jedynie nasłuchiwało na nadejście takich pakietów # z drugiej strony połączenia (zachowanie opcji "passive" w starszych # wersjach pppd) #silent # Nie żądaj i nie pozawalaj na ustalenie jakichkolwiek opcji w czasie # negocjacji LCP czy IPCP (wykorzystaj wartości domyślne). #-all # Wyłączenia kompresji negocjacji adresu/sterowania (wykorzystaj # ustawienie domyślne, tzn pole adres/sterowanie wyłaczone). #-ac # Wyłącz negocjacje opcji asyncmap (skorzystaj z domyślnej wartości # asyncmap, czyli przesyłaj w sposób specjalny jedynie znaki sterujące. #-am # Nie twórz procesu potomnego w tle ( w przeciwnym wypadku pppd # zachowa się w ten sposób jesli podany port oznacza urządzenie szeregowe) #-detach # Wyłącz negocjację adresu IP (pppd musi otrzymac jako parametr adres # IP komputera na drugim końcu połączenia - w wierszu poleceń lub # pliku opcji) #-ip # Wyłącz negocjację numeru magicznego/specjalnego/charakterystycznego # (magic number). W ten sposób pppd nie wykryje urządenia pętli zwrotnej. #-mn # Wyłącz negocjację parametru MRU [Maximal Receive unit]. Wykorzystaj # wartośćdomyślną 1500. #-mru # Wyłącz negocjację pola protokołu (skorzystaj z opcji domyslnej: # kompresja wyłączona). #-pc # Zażądaj aby druga strona przedstawiła się za pomocą protokołu PAP. #+pap # Nie zgadzaj się na przedstawianie się za pomocą PAP #-pap # Zażądaj aby druga strona przedstawiła się za pomocą protokłu CHAP # [Cryptographic Handshake Authentication Protocol]. #+chap # Nie zagadzaj się na przedstawienei się za pomocą CHAP. #-chap # Wyłącz negocjację kompresji nagłówków IP w styly Van # Jacobsena. Skorzystaj z wartości domyślnej: brak kompresji. #-vj # Zwiększ posiom odpluskwiania (to camo co opcja -d). Pppd będzie # rejestrowało zawartość wszystkich wysłanych i otrzymanych pakietów # kontrolnych w formie nadającej się do interpretacji przez # człowieka. Rejestrowanie dokonuje się za pomocą dzienników systemowych # (syslog) na poziomie `debug' z wartościa `daemon'. Informacje te mogą # być zapisywane w pliku. Przeczytaj o pliku konfiguracyjnym # /etc/syslog.conf (man syslog.conf). Jeśli pppd zostało skompilowane z # włączeniem dodatkoweg oodpluskwiania, wiadomości będą rejestrowane z # warością `local2' zamiast `daemon'. #debug # W celach przedstawiania się i weryfikacji tożsamości do nazwy # komputera dodaj domenę <d>. Np. jeśli funkcja gethostbyname() # przekazuje wartość `porshe', lecz pełna nazwa komputera jest # `porsche.Quotron.COM' musisz skorzystać z tej opcji i podać domenę # Quotron.COM. #domain <d> # Włącz kod udpluskwiania na poziomie drajwera jądra. Argument n jest # liczba składającą się z sumy poszczególnych elementów: 1 włączenie # ogólnych komunikatów odpluskwiających, 2 - wyświetlanie zawartości # przychodzących pakietów, 4 wyświetlanie zawartości pakietów wysyłanych. #kdebug n # Nadaj parametrowi MTU [Maximum Transmit Unit] warość<n>. Jeśli druga # strona w czasie negocjacji nie zarząda mniejszej wartośćMTU, pppd # poprosi aby kod jądra wywyłał przez interfejs ppp pakiety o wielkości # nie przekraczającej n bajtów. #mtu <n> # Do celów weryfikacji tożsamości przyjmij nazwę <n>. #name <n> # Do celów weryfikacji tożsamości w protokole PAP przyjmij nazwę # uzytkownika równą <u>. #user <u> # Wymuś wykorzystywanie do celów weryfikacji tożsamości przyjęcie # nazwy komputera jako nazwy systemu próbującego nawiącać połączenie. #usehostname # Do celów weryfikacji tożsamości przyjmij nazwę zdalnego systemu # równą <n>. #remotename <n> # Dodaj pozycję do systemowej tabeli ARP [Address Resolution Protocol] # z adresem IP systemu po drugiej stronie połączenia i twoim adresem # Ethernetowym. #proxyarp # Do celów weryfikacji tożsamości w protokole PAP skorzystaj z # systemowej bazy haseł. #login # Pppd będzie wysyłało do systemu po drugiej stronie ramki LCP # echo-request (żądanie echa) co n sekund. Pod Linuxe, echo-request jest # wysyłany wtedy, gdy z drugiej strony w ciągu ostanich n sekund nie # nadszedł żaden pakiet. Zwykle druga sptrona powinna odpowiedzieć na # echo-request wywłając echo-reply (odpowiedź na żądanie echa). Wraz z # opcją lcp-echo-failure może być wykorzystana do wykrywania przerwania # połączenia przez drugą stronę. #lcp-echo-interval <n> # Jeśli po n ramkach echo-request nie nadejdzie żadna rama echo-reply # pppd potraktuje to jako zerwanie połączenia przez drugą stronę. Jeśli # tak się stanie pppd przerwie połączenie. Korzystanie ztej opcji wymaga # podania niezerowego parametru w opcji lcp-echo-interval. Zwykle # korzysta się z tej opcji w celu wykrycia fizycznego przerwania # połązenia (np odłożenie słuchawki przez modem) w systucajch, gdy nie # stosuje się sprzętowych liniisterowania modemem. #lcp-echo-failure <n> # Przyjij przerwę między właczaniem negocjacji LCP równą <n> sekund # (retransmission timeout). Domyślnie 3 #lcp-restart <n> # Przyjmij maksymalną liczbę transmisjji polecenia przerwania żądania # (terminate-request) w protokole LCP. Domyśłnie 3. #lcp-max-terminate <n> # Przyjmij maksymalną liczbę transmisjji polecenia konfiguracyjnego # protokołu LCP równą <n>. Domyśłnie 10. #lcp-max-configure <n> # Ustaw maksymalną liczbę zwróconych w protokole LPC żądań # configura-NAK, zanim rozpocznie się transmisja poleceń # configure-Reject. Domyślnie 10. #lcp-max-failure <n> # Ustaw przerwę w protokole IPCP (retransmission timeout) równą <n>. # Domyśłnie 3. #ipcp-restart <n> # Ustaw maksymalną liczbę transmisji polecenia terminate-request protokołu # IPCP równą <n>. Domyślnie 3. #ipcp-max-terminate <n> # Ustaw maksymalną liczbę transmisji polecenia configure-request protokołu # IPCP równą <n>. Domyślnie 10. #ipcp-max-configure <n> # Ustaw maksymalną lizcbę zwróconych poleceń configure-NAK protokołu # IPCP zanim rozpocznie się wysyłanie poleceń configure-Reject równą # <n>. Domyśłnie 10. #ipcp-max-failure <n> # Ustaw przerwę między uruchamianiem protokołu PAP (retransmission # timeout) rowną <n> sekund. Domyśłnie 3. #pap-restart <n> # Ustaw maksymalną liczbę transmisji polecenia authenticate-request # protokołu PAP równą <n>. Domyśłnie 10. #pap-max-authreq <n> # Ustaw przerwę między uruchamianiem protokołu CHAP (retransmission # timeout) równą <n> sekunt. Domyślnie 3. #chap-restart <n> # Ustaw liczbę wysłanych żądań rozpoczęcia protokołu CHAP równą <n>. # Domyśłnie 10. #chap-max-challenge # Pppd będzie próbowało nawiązać połączenie z drugą stroną co <n> # sekund. #chap-interval <n> # Pppd zakceptuje podany przez drugą stronę nasz lokalny adres IP, # nawet jeśli został on podany również jako opcja dla programu pppd. #ipcp-accept-local # Pppd zakceptuje podany przez drugą stronę jej adres IP, # nawet jeśli został on podany również jako opcja dla programu pppd. #ipcp-accept-remote
Jak zwykle: to zależy.
Przedstawiay dwie podstawowowe wersje pliku options, które dotyczą większości przypadków.
Jeśli nasza propozycja nie zadziała, PRZECZYTAJ PLIK WZORCOWY
(/etc/ppp/options.tpl
) i strony podręcznika programu
pppd (man pppd) i porozmawiaj z administratorem/ludźmi
zajmującymi się obsługą użytkowników serwera, z którym starasz się
nawiązać połaczenie.
W przypadku połączeń, które nie wymagają weryfikacji PAP/CHAP powinien wystarczyć taki plik.
# /etc/ppp/options (bez PAP/CHAP) # # Zapobiegnij odłączaniu się od terminala przez program pppd. -detach # Jeśli korzystasz ze statycnych numerów IP, wpisz tutaj swój numer 0.0.0.0: # # Korzystaj z linii sterowania modemu modem # korzystaj z plików blokady w stylu uucp, zapewniając sobie wyłączny # dostęp do urządzeń szeregowych lock # korzystaj ze sprzętorwego sterowana przepływem danych crtscts # po nawiązaniu połaczenia dodaj do tabli routingu domyślną trasę dla # biegnącą właśnie przez to połączenie defaultroute # Znaki specjalne mają być przesyłane normalnie asyncmap 0 # maksymalny rozmiar pakietu wychodzącego 552 bajty mtu 552 # maksymalny rozmiar pakietu przychodzącego 552 bajty mru 552 # #-------KONIEC /etc/ppp/options (bez PAP/CHAP)
Jeśli serwer wymaga jednak weryfikacji PAP lub CHAP powinieneś spróbować opcji pokazanyhc powyżej z dodatkowymi kilkoma wierszami jakie przedstawiamy poniżej
# # zmus pppd do korzystania do przedstawiania się identyfikatorem # użytkownika jakim posługujesz sie uswojego dostawcy name <twój identyfikator u dostwcy> # musisz zmieić ten wiersz # # Jeśli musisz korzystać z protokołów PAP lub CHAP, usuń znaki # komentarza z kolejnych dwóch wierszy #+chap #+pap # # Jeśli korzystasz z ZAKODOWANYCH haseł w pliku /etc/ppp/pap-secrets # to usuń znak komentarza z wiersza poniżej #+papcrypt
Podczas gdy my, Ludzie lubimy podawać adresu komputerów w postaci ich
nazw, komputery korzystają z liczb. W sieci TCP/IP (czym jest
Internet) nazwymay koputery ich nazwami, akażdy z komputerów żyje we
własnej dquot;
domeniedquot;
. Np. moj komputer nazywa
się archenland i należy do domeny
hedland.edu.au. Czyli adres mojego komputera w postaci łatwej
do posługiwania się przez człowieka jest
archenland.hedland.edu.au. Inne komputery w Internecie rozpoznają go
jednak przez przydzielony mu adres IP.
Tłumaczenie (resolving) nazwy komputera i domeny na numerki, które są niezbędne do nawiazania połączenia jest wykonywane przez komputery oferujące usługę o nazwie DNS (Domain Name Service).
Podczas zestawiania połączenia PPP musisz powiedzieć swojemu komputerowi skąd może pobierać informacje na temat numeru IP przydzielonego do nazwy komputera, tak abyś ty mógł używać nazw komputerów, lecz twój komputer był w stanie zamienić je na odpowiednie numery IP.
Jednym ze sposobów jest umieszcenie nazwy i numeru każdego komputra, którym będziesz sięchciał połączyć w pliku /etc/hosts ( w rzeczywistoście jest to niemożliwe przy połączeniach z Internetem), innym rozwiązaniem jest podawanie numerów komputerow zamiast ich nazw (możliwe jedynie w przypadku małych sieci)
Najlepiej w taki sposób skonfigurować Linuxa, aby sam wiedział skąd pobrać niezbędne informacje - automatycznie. Tej usługi dostarzca system DNS. Wszystkiego c opotrzebujesz jest umiesczenie w pliku /etc/resolv.conf numeru IP serera udostępniającego usługę DNS.
Ludzie opiekujacy się serwerem PPP powinni dostarczyć ci dwa numery IP serwerów DNS (tylko jeden jest niezbędny, lecz drugi jest przydatny w przypadku, gdy nastąpi awaria pierwszego)
Plik /etc/resolv.conf powinien wyglądać mniej wiećej tak:-
domain domena.twojego.dostawcy.internetu nameserver 10.25.0.1 nameserver 10.25.1.2
Popraw ten plik (utwórz jeśli jest to konieczne) i wprowaź opdpowiednie inforamcje. Pownien mieć następujące atrybuty:-
-rw-r--r-- 1 root root 73 Feb 19 01:46 /etc/resolv.conf
Jeśli posiadasz już działający plik /etc/resolv.conf, ponieważ jesteś przyłączony do sieci LAN, po prostu dodaj numery IP serwera DNS.
Jeśli korzystasz z weryfikacja toższamośći pap lub chap, musisz również utworzyć odpowiedni plik sekretny:
/etc/ppp/pap-secrets /etc/pp/chap-secrets
Podstawową cechą tych plików jest to, że mają uwiarygodniać toższamość komputera (systemu) a nie użytkownika.
"Tak? A jaka to róznica ?" słyszę jak zadajesz to pytanie.
Taka, że po zestawieniu połączenia PPP z serwerem KAŻDY użytkownik twojego komputera może korzystąc z tego połączenia - nie tylko ty. To właśnie dlatego możesz za pomocą PPP zestawić połączenie WAN łączące ze sobą dwie sieci LAN.
Twój dostawca poza podaniem ci identyfikatora użytkownika i hasła wymaganego do przyłązenia się do jego systemu prawdopodobnie nie będzie zainteresowany jakią nazwę nadałeś swojemu komputerowi, dlatego prawdopodobnie powienienś korzystać z identyfikatora użytkownika jaki masz u dostawcy jako nazwy swojego koputera [mówimy o PAP/CHAP].
Dokonuje sie tego za pomocą opcji name username
programu
pppd. Jeśli muszisz więc podawać swój identyfikator w systemie
dostawcy dodaj do pliku /etc/ppp/options
wiersz
name twoj_identyfikator_obowiązujący_u_dostawcy
Technicznie rzecz biorąc tak naprawdę powienieneś korzysztać z
usertwoj_identyfikator_obowiązujący_u_dostawcy
dla PAP, lecz pppd
jest na tyle inteligentny aby zinterpretować name
jako
user
jeśli tylko serwer zażąda użycia PAP. Zaletą
korzystania z opcji name
jest, to, że jest ona również poprawna
dla CHAP.
Ponieważ PAP/CHAP służy so sprawdzania toższamości komputerów, potrzebujesz również podać nazwę zdalnego komputera. Ponieważ jednak większość korzysta tylkoz jednego dostawcy, może w pliku sekretnym w miejscu nazwy zdalnego komputera wstawić znak uniwersalny (*).
Wrto również pamiętać, że wielu dostawców korzysta z wielokrotnych farm modemowych podłączonych do różnych serwerów, dostępnych pod WSPÓLNYM numerem telefonicznym. Dlatego nie można być pewnym, do którego komputera zostaniemy przyłączeni.
Plik /etc/ppp/pap-secrets
wygląda mniej więcej tak
# Secrets for authentication using PAP # client server secret acceptable local IP addresses
ćżtery pola rodzielaone odstępami.
Pwiedzmy, że twój dostawca nadał ci nazwe fred
i hasło
flintstone
. Wrtedy w pliku /etc/ppp/options.ttySx
ustawił byś opcję name fred
, a w pliku
/etc/ppp/pap-secrets
dopisał
# Hasła do weryfikacji tożsamości za pomocą protokołu PAP # client server secret dopuszczalny lokalny adres IP fred * flintstone
To oznacza, że w przypadku połązcenia lokalnego komputera o nazwie
frd
(którą używa pppd choć to nie musis być prawdziwa nazwa tego
komputera) z dowolnym serwerm PPP należy używać hasła flintstone
.
Zauważ, że nie musimy podawać lokalnego adresu IP, cgyba że jesteśmy ZMUSZENI do korzystania zkonkretnego, STATYCZNEGO adresu IP.
Jeśli łączysz sie korzystając z PAP z kilkoma różnymi serwerami,
powinieneś albo zaranżować to w taki spsób aby na każdym serwerze
posiadać inny identyfikator username lub poznać nazwy zdalnych
serwerów, z którymi się łączysz. W ten sposób będziesz mógł dodać do
pliku pap-secrets
kolejne wiersze definiujące hasło połączenia -
pod warunkiem, że nadasz prawidłową wartość
opci tt/name/ odpowiednią dla każdego serwera z którym nawiązujesz połączenie,
Aktualna wersja porgramu pppd wymaga korzystania z wzajemnych metod potwierdzania tożsamości - to znaczy musisz pozwolić aby twój komputer mogł zweryfikowac odległy serwer i aby odległy serwer mogł zweryfikować twój ompuer.
Jęsli twój komputer nazywa się fred
a zdalny serwer nazywa się
barney
, to podpowiednie pliki /etc/ppp/options.ttySx
na
twoim komputerze powinny zawierać name fred remotename barney
, a
na zdalnym serwerze na odwrót name barney remote name fred
.
Plik /etc/chap-secrets
dla komputera fred wygląda tak
# Hasła do weryfiakcji tozsamości za pomocą protokołu CHAP # client server secret dopuszczalny lokalny adres IP fred barney flintstone
a dla komputera barney, tak
# Hasła do weryfiakcji tozsamości za pomocą protokołu CHAP # client server secret dopuszczalny lokalny adres IP barney fred flintstone
Teraz kiedy masz już utworzone pliki /etc/ppp/options
i
/etc/resolv.conf
( i jeśli jest to konieczne pliki
/etc/ppp/pap|chap-secrets
) możesz sprawdzić poprawność
konfiguracji przez ręczne zestawienie połączenia PPP. (Kiedy będziemy
potrafili zestawić połączenie PPP ręcznie, zautomatyzowanie całego
procesu będzie bardzo proste).
W tym celu twój program komunikacyjny musi mieć możliwość zkończenia pracy BEZ zerowania modemu. Minicom to potrafi - ALT Q (lub w starszych wersjacj CTRL A Q).
Pamiętaj aby być zlogowanym jako root.
Uruchom program komuniikacyjny (np minicom), wybierz numer do serwera PPP i zaloguj się jak zwykle. Jeśli do uruchomienia PPP wymagane jest wydanie specjalnego polecenia zrób to. Zobaczysz teraz śmiecie o których pisaliśmy wcześniej.
Jeśli korzystasz z pap/chap, wtedy tuż po nawiązaniu połączenia ze zdalnym serwerem powinieneś od razy zobaczyć wspomniane śmiecie, bez potrzeby logowania się (choć w niektórych przypadkach może to być rozwiązane inaczej).
Teraz zakończ pracę programu komunikacyjnego, bez zerowania linii (przerywania połączenia modemowego) - jeśli używasz minicomu wciścnij ALT Q lub CTRL A Q. Nastepnie w wierszu zachęty (jako root) napisz
pppd -d -detach /dev/cuaX &
Opcja -d włącza odpluskwianie - rozpoczyna się rozmowa mająca na celu zestawienie połączenia PPP. Jest ona rejestrowana w dziennikach (log files) co jest przydatne w razie kłopotów.
Naturalnie powinieneś apisać cua0
lub cua1
itd. -
prawdziwą nazwę portu do którego przyłaczony jest modem, nie cuaX!.
Diody twojego modemu powinny migotać podczas zestawiania połączenia PPP. Samo zestawienie połączenia trwa któtką chwilę.
W tym momencie możesz przyjżeć się interfejsowi ppp0 wydając polecenie
ifconfig
Poza inforamcjami o karcie Ethernetu (jelsi taką posiadasz) i urządzeniu o pętli zwrotnej powinieneś zobaczyć cos takiego :-
ppp0 Link encap:Point-Point Protocol inet addr:10.144.153.104 P-t-P:10.144.153.51 Mask:255.255.255.0 UP POINTOPOINT RUNNING MTU:552 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0
Gdzie
(naturalnie ifconfig nie przedstawi podanych przeze mnie numerów, lecz numery wykorzystywane przez serwer twojego dostawcy).
Uwaga: polecenie ifocnfig iformuje cię również o tym, że połączenie jest zestawione (UP) i dziala (RUNNING).
Jeśli otrzymasz taki komunikat
ppp0 Link encap:Point-Point Protocol inet addr:0.0.0.0 P-t-P:0.0.0.0 Mask:0.0.0.0 POINTOPOINT MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0
to znaczy, że połączenie PPP nie zostało poprawnie zestawione... przeczytaj rozdział o odpluskwianiu!
Pownieneś rownież móc zobaczyć tabelę routingu z wprowadzoną trasą do serwera PPP i dalej. W tym celu wydaj polecenie
route -n>
Powinieneś zobaczyć coś w tym stylu:-
Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface 10.144.153.3 * 255.255.255.255 UH 1500 0 1 ppp0 127.0.0.0 * 255.0.0.0 U 3584 0 11 lo 10.0.0.0 * 255.0.0.0 U 1500 0 35 eth0 default 10.144.153.3 * UG 1500 0 5 ppp0
Szczególnie ważne jest to, że do interfejsu ppp0 odnoszą się dwie różne pozycje.
Pierwsza oznacza trasę do KOMPUTERA (flaga H) i pozwala nam "widzieć" komputer, do którego się przyłączylśmy - lecz nie dalej.
Druga oznacza domyślną (default)
trasę - to jest trasa jaką wędrują
pakiety, które nie są przeznaczne dla naszej sieci lokalnej lub
bezpośrednio dla samego serwera PPP. Serwer PPP jesr odpowiedzialny za
przekazywanie naszych pakietów dalej do Internetu i przekazywanie nam
pakietów przychodzących do nas z odległych adresów.
Jeśli twoja tabela routingu nie zawiera tych dwóch pozycji, to znaczy, że coś jest nie tak (patrz rozdział o odpluskwianiu).
Teraz przetestuj połączenie 'pingując' serwer (numer IP przekazany przez polecenie ifconfig) tzn.
ping 10.144.153.51
Pwienieneś otrzymać podobną odpowiedź.
PING 10.144.153.51 (10.144.153.51): 56 data bytes
64 bytes from 10.144.153.51: icmp_seq=0 ttl=255 time=328.3 ms
64 bytes from 10.144.153.51: icmp_seq=1 ttl=255 time=190.5 ms
64 bytes from 10.144.153.51: icmp_seq=2 ttl=255 time=187.5 ms
64 bytes from 10.144.153.51: icmp_seq=3 ttl=255 time=170.7 ms
Kolejne wiersze będą pojawiać się w nieskończoność, aż do momentu kiedy wciśniesz CTRL C, a wtedy otrzymasz dodatkowe informacje :-
--- 10.144.153.51 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 170.7/219.2/328.3 ms
Jak na razie wszystko w porządku.
Teraz spróbuj 'pingnąć' komputer podając jego nazwę (nie nazwę serwera PPP lecz zupelnie innego komputer, którego nazwę znasz i który jest w tej chwili włączony do interentu). Np.
ping sunsite.unc.edu
Tym razem najpier nastąpi krótka przerwa, kiedy Linux zamienia nazwę na odpowiadający jej numer korzystając z serwera DNS, którego numer wpisałeś do pliku /etc/resolv.conf - więc się nie martw (powinieneś wiedzieś migające świtełka swojego modemu). Krótko potem zobaczysz cos podobnego do
PING sunsite.unc.edu (152.2.254.81): 56 data bytes
64 bytes from 152.2.254.81: icmp_seq=0 ttl=254 time=190.1 ms
64 bytes from 152.2.254.81: icmp_seq=1 ttl=254 time=180.6 ms
64 bytes from 152.2.254.81: icmp_seq=2 ttl=254 time=169.8 ms
64 bytes from 152.2.254.81: icmp_seq=3 ttl=254 time=170.6 ms
64 bytes from 152.2.254.81: icmp_seq=4 ttl=254 time=170.6 ms
Pwtórnie przerwij wciskając CTRL C, a zobaczysz statystyki
--- sunsite.unc.edu ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 169.8/176.3/190.1 ms
Jeśli nie otrzymałeś żadnej odpowiedzi, przeczytaj rozdział o odpluskwianiu.
Jeśli wszystko działało poprawnie, przerwij połączenie wydając polecenie
ppp-off
Po krtótkiej chwili modem powienien "odłożyć słuchawkę".
Jeśli to nie zadziała, albo wyłącz zasialanie modemu modem, lub uruchom swój program komunikacyjny i przerwij połączenie wciskając szybko +++, a gdy modem odpowie OK wydając polecenie ATH0.
Być może będziesz zmuszony usunąć również pliki blokady (lock files) utworzone przez program pppd
rm -f /var/lock/LCK..cua?
Skrypt o którym mowa automatyzuje procedurę logowania się i uruchamiania połączenia PPP, tak aby administrator lub członek grupy PPP do zestawienia połączenia musiał jedynie eydać polecenie ppp-on.
Jeśli twój dostawca nie korzysta z PAP/CHAP, te skrypty są dla ciebie.
Jeśli pakiet PPP jest zainstalowany poprawnie powinieneś być w posiadaniu dwóch przykładowych plików. W przypadku PPP 2.1.2 będą to
/usr/sbin/ppp-on
/usr/sbin/ppp-off
a w przypadku PPP-2.2
/etc/ppp/scripts/ppp-off
/etc/ppp/scripts/ppp-on
/etc/ppp/scriptsppp-on-dialer
Jeśli korzystasz z PPP 2.1.2 mocno namawiam cię do usunięcia tych plików. Są źródłem potencjalnych klopotów - nie mów mi że działają poprwnie - korzystałem z nich przez długi czas i rekomendowałem w pierwszej wersji tego dokuemntu.
Dla użytkowników PPP 2.1.2 przedstawiam LEPSZE wersje wzorcowe tych plików, pobrane z dystrybucjie PPP 2.2. Sugeruję skopiowanie i korzystanie z tych skryptów zamiast startych skryptów z wersji 2.1.2.
Pierwszy z PARY skryptów, uruchamiający połączenie.
#!/bin/sh # # Script to initiate a PPP connection. This is the first part of the # pair of scripts. This is not a secure pair of scripts as the codes # are visible with the 'ps' command. However, it is simple. # # These are the parameters. Change as needed. TELEPHONE=555-1212 # The telephone number for the connection ACCOUNT=george # The account name for logon (as in 'George Burns') PASSWORD=gracie # The password for this account (and 'Gracie Allen') LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0 REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0 NETMASK=255.255.255.0 # The proper netmask if needed # # Export them so that they will be available to 'ppp-on-dialer' export TELEPHONE ACCOUNT PASSWORD # # This is the location of the script which dials the phone and logs # in. Please use the absolute file name as the $PATH variable is not # used on the connect option. (To do so on a 'root' account would be # a security hole so don't ask.) # DIALER_SCRIPT=/etc/ppp/ppp-on-dialer # # Initiate the connection # # exec /usr/sbin/pppd debug /dev/ttySx 38400 \ $LOCAL_IP:$REMOTE_IP \ connect $DIALER_SCRIPT
A oto skrypt ppp-on-dialer:-
#!/bin/sh # # This is part 2 of the ppp-on script. It will perform the connection # protocol for the desired connection. # chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT '' \ ogin:--ogin: $ACCOUNT \ assword: $PASSWORD
Ponieważ nowe skrtypty są podzielone na dwie częście, bedziemy je zmieniać po kolei.
Muszisz zmienić ten skrypt podając TWÓJ identyfikator u teojego prowajdera, TWOJE haslo dla tego konta i numer telefonu TWOJEGO prowajdera.
Każdy z wierszy postaci TELEPHONE=
tworzy zmienne którcy warość
to tekst występujący po prawej stronie znaku '='. (oczywiście poza
wierszami komentarza). Popraw wszystkei te wiersze, aby zawierały
poprawną inforamcje na temat twojego konta u dostawcy internetu.
Jeśli w pliku /etc/ppp/options
podajesz numery IP (jeśli
potrzebujesz to robić) to USUŃ ze skryptów odpowiednie wiersze
zawierające
$LOCAL_IP:$REMOTE_IP \
Upewnij się również, że zmienna DIALER_SCRIPT wskazuje na pełną
ścieżkę dostępu do skryptu, którego chcesz ostatecznie używać. Więc
jeśli przeniosłeś ten skrypt w inne miejsce, lub zmieniłeś jego nazwę
pamiętaj o poprawieniu informacji w pliku ppp-on
.
Jeśli skonfigurowałeś pp-on
poprawnie i twój serwer PPP korzysta
z weryfikacj toższamości za pomocą pary identyfikator/hasło, nie
musisz już modyfikować skryptu ppp-on-dialer
!!!
Pomimo, że port szeregowy może być konfigurowany w plikach startowych systemu (/etc/rc.serial), stwierdziłem, że dobrym pomysłem jest ponowne skonfigurowanie portu szeregowego w skrypcie ppp-on. W ten sposób moge wykorzystywać modem do innych celów, i nie muszę pamiętać o konieczności sprawdzania aktualnej konfiguracji portu szeregowego.
Tuż przed wierszem uruchamiającym pppd dodaj
/bin/setserial /dev/cuaX spd_vhi
W ten sposób port szeregowy jest ostatecznie ustawiany za prędskość 115200 bps, zamiast 38400. Jest to poprawna prędkość dla modemów 28.8k (i szybszych). Jednakże wiele modemów 14.4k nie potrafi skonfigurować swojego interfejsu modem-kompueter na taką prędkość.
Sprawdź w dokumentacji modemu, jeśli maksymalna prędkość modemu wynosi 38400, korzystaj z polecenia
/bin/setserial /dev/cuaX spd_normal
Podczas gdy skrypt ppp-on-dialer jest dobry dla serwera, który automatycznie uruchamia pppd jak tylko zalogujesz się na serwerze, niektóre systemy wymagają jawnego uruchomienia PPP.
Jeśli w celu uruchomienia PPP na serwerze musisz wydać określone
polecenie, MUSISZ poprawić skrypt ppp-on-dialer
.
Na KOŃCU skryptu (po wierszu z hasłem) dodaj wiersz zawierający parę expect send - taką , która będzie oczekiwała na zachętę (uwaga na znaki o specjalnym znaczeniu w powłoce Bournea - np $ , [ lub ] (otwierający i zamykający nawais kwadratowy).
Kiedy chat rozpozna zachęte powłoki, musi wydać polecenie, które uruchamia PPP na serwerze twojego dostawcy.
W moim przypadku serwer PPP korzysta ze standardowego wiersza zachety powłaoki Bash
[hartr@kepler hartr]$
i wymaga aby w celu uruchomienia PPP na serwerze wydał polecenie
ppp
Zawsze dobrze jest przewidzieć możliwości pewnych pomyłek. Dlatego w moim przypadku używam
hartr--hartr ppp
To znaczy - jeśli nie doczekamy się zachęty w określonym czasie wyślij znak enter i czekaj na zachęte raz jeszcze.
Kiedy jesteś pewien, ze otrzymałeś zachętę , wyślij ciag 'ppp'.
Uwaga: pamiętaj o doadniu znaku \ na końcu wiersza, tak aby chat nadal myślał, że cały skrypt znajduje się w jednym wierszu!
Niestety część serwerów generuje bardzo zmienne zachęty! Być może będzisz musiał zalogować się kilkakrotnie za pomocą programu komunikacyjnego, zanim dokladnie zrozumiesz jak to jest i co można przyjąć za zachętę do wydania polecenia.
To jest drugi ze skryptów, który ostatecznie zestawia połączenie PPP.
Uwaga: skrypt chat zawiera się zwykle w jednym wierszu. Znaki '\' pozwalają na kontynuwanie jednego logicznego wiersza skryptu przez wiele fizycznych wierszy pliku (aby człowiek mogł się w tym lepiej połapać) i nie tworzą same z siebie części skryptu.
Dobrze jest się temu przypatrzeć z bliska, abyśmy dobrze rozumieli co tu się dzieje.
Skrypt chat to sekwencja par "
oczekiwany ciąg znaków
"
"
ciąg znaków do
wysłania"
. W szczególności zanim cokolwiek wyślemy
ZAWSZE czegoś oczekujemy.
Jeśli mamy coś wysłać, BEZ wstępnego oczekiwania na cokolwiek,
musimy użyć putsego napisu oczekiwanego (oznaczanego w skryptach
tak: "
"
) i podobnie jeśli czekamy na
cos, lecz nie mamy zamiaru w odpowiedzi niczego wysyłać! Również w
przypadku, napis składa się z kilku słów (np. NO CARRIER), musimy
otoczyć napis apostrofami tak aby char rozpoznał go jako pojedynczy
element.
Wiersz chat w naszym wzorcu wygląda następująco:-
exec chat -v
TIMEOUT 3
ABORT '\nBUSY\r'
ABORT '\nNO ANSWER\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
\\ \rAT
\OK-+++\c-OK\ ATH0
TIMEOUT 30
OK ATDT$TELEPHONE
CONNECT ''
ogin:--ogin: $ACCOUNT
assword: $PASSWORD
Pwyższy skrypt ma sensowne możliwości radzenia sobie z niekturymi
sytuacjami wyjątkowymi. Sam program chat ma znacznie większe
możliwości, zapoznaj się ze stroną podręcznika, która go dotyczy (man 8 chat
).
Jeśli twój dostawca korzysta z możliwości PAP/CHAP, wtedy twój skrypt jest znacznie prostszy. Wszystko co muszisz zrobić to wybrać numer, poczekać na połączenie i pozwolić pppd na wejście do systemu i zestawienie połączenia PPP.
#!/bin/sh # # This is part 2 of the ppp-on script. It will perform the connection # protocol for the desired connection. # exec chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT '' \
Jak już to pokazaliśmy, w programie pppd istnieje możliwość włączenia wyprowadzania i rejestracji komunikatów odpluskiwających. Służy do tego opcja -d lub debug.
Podczas uruchamiania nowego połączenia PPP pozostaw w skrupcie opcję -d. (Ostrzeżenie: jesli masz mało wolnej przestrzeni dyskowej włączenie rejestracji odpluskwiających pppd może bardzo szybko zapełnić wolne miejsce i możesz mieć z tego powodu kłopoty - wystarczy aby nie udało ci się połączyć, a będziesz próbował nawiązać połączenie jescze przez kila minut).
Kiedy będziesz pewien, że wszystko działa poprawnie, możesz ją wtedy usunąc.
Jeśli swoj plik z opcjami ppp nazwałeś incaczej niż
/etc/ppp/options
lub /etc/ppp/options.ttySx
możesz
go uaktywnić podając jego nazwę w wierszu poleceń jako wartość opcji
-f programu pppd - np.
exec /usr/sbin/pppd debug -f options.myserver /dev/ttySx 38400 \
Otwórz nowy xterm (jesli pracujesz pod X) lub nową konsole tekstową i zaloguj się jako root.
W tej nowej sesji wydaj poleceni
tail -f /var/log/messages
(lub jaki tam jest twój plik zawierający komunikaty systemy)
W poprzednim oknie (konsoli wirtualne) wydaj polecenie
ppp-on &
(lub jak nazwałeś zmienioną wersję skryptu /usr/sbin/ppp-on). Jeśli nie uruchomiłeś skryptu w tle przez akończenie wiersza poleceń znakiem & nie odzyskasz wiersza zachety do momentu zamknięcia połączenia PPP.
Teraz przełącz się do konsolu, gdzie są wyświetlane komunikaty systemu.
Zobaczysz cos podobnego (pod warunkiem, że oprogram chat został uruchomiony z opcją -v, a pppd z -d) ... są to sekwencje rejestrowane przez program chat, po których następują komunikaty wysłane przez rozpoczynający połączenie PPP program pppd :-
Oct 21 16:09:58 hwin chat[19868]: abort on (NO CARRIER) Oct 21 16:09:59 hwin chat[19868]: abort on (BUSY) Oct 21 16:09:59 hwin chat[19868]: send (ATZ^M) Oct 21 16:09:59 hwin chat[19868]: expect (OK) Oct 21 16:10:00 hwin chat[19868]: ATZ^M^M Oct 21 16:10:00 hwin chat[19868]: OK -- got it Oct 21 16:10:00 hwin chat[19868]: send (ATDT722298^M) Oct 21 16:10:00 hwin chat[19868]: expect (CONNECT) Oct 21 16:10:00 hwin chat[19868]: ^M Oct 21 16:10:22 hwin chat[19868]: ATDT722298^M^M Oct 21 16:10:22 hwin chat[19868]: CONNECT -- got it Oct 21 16:10:22 hwin chat[19868]: send (^M) Oct 21 16:10:22 hwin chat[19868]: expect (ogin:) Oct 21 16:10:22 hwin chat[19868]: 57600^M Oct 21 16:10:23 hwin chat[19868]: ^[[;H^[[2J^M^M Oct 21 16:10:23 hwin chat[19868]: ^M Oct 21 16:10:23 hwin chat[19868]: ^M Oct 21 16:10:23 hwin chat[19868]: ^I^I This is node kepler.hedland.edu.au^M Oct 21 16:10:23 hwin chat[19868]: ^I^I^I at Hedland Campus^M Oct 21 16:10:23 hwin chat[19868]: ^I^I^I Hedland College^M Oct 21 16:10:23 hwin chat[19868]: ^M Oct 21 16:10:23 hwin chat[19868]: ^I^I Authorised user ONLY are to use this system^M Oct 21 16:10:23 hwin chat[19868]: ^M Oct 21 16:10:23 hwin chat[19868]: ^M Oct 21 16:10:23 hwin chat[19868]: ^I^I For more information, contact ComputerSystems^M Oct 21 16:10:23 hwin chat[19868]: ^I^I^I on +61 (0)91 72 0400^M Oct 21 16:10:23 hwin chat[19868]: ^I^I^I^I or^M Oct 21 16:10:23 hwin chat[19868]: ^I^I email: help@hedunx.hedland.edu.au^M Oct 21 16:10:23 hwin chat[19868]: ^M Oct 21 16:10:23 hwin last message repeated 3 times Oct 21 16:10:23 hwin chat[19868]: kepler login: -- got it Oct 21 16:10:23 hwin chat[19868]: send (hartr^M) Oct 21 16:10:23 hwin chat[19868]: expect (ssword:) Oct 21 16:10:23 hwin chat[19868]: hartr^M Oct 21 16:10:23 hwin chat[19868]: Password: -- got it Oct 21 16:10:23 hwin chat[19868]: send (??????^M) Oct 21 16:10:23 hwin chat[19868]: expect (hartr) Oct 21 16:10:23 hwin chat[19868]: ^M^M Oct 21 16:10:24 hwin chat[19868]: Last login: Sat Oct 21 14:55:53 on ttyC0^M Oct 21 16:10:24 hwin chat[19868]: ^M Oct 21 16:10:24 hwin last message repeated 9 times Oct 21 16:10:24 hwin chat[19868]: ^I^IYou have logged into node kepler.hedland.edu.au^M Oct 21 16:10:24 hwin chat[19868]: ^M Oct 21 16:10:24 hwin chat[19868]: This is a Compaq Prolinea 486DX2/50 running Linux 1.1.54^M Oct 21 16:10:24 hwin chat[19868]: ^M Oct 21 16:10:24 hwin chat[19868]: This computer operates as the main Hedland Campus communications^M Oct 21 16:10:24 hwin chat[19868]: ^I node, providing dial-in terminal and SLIP access,^M Oct 21 16:10:24 hwin chat[19868]: ^I^I Kepler also runs the Hedland end of^M Oct 21 16:10:24 hwin chat[19868]: ^I^I the Hedland/Newman inter-Campus WAN link^M Oct 21 16:10:24 hwin chat[19868]: ^M Oct 21 16:10:24 hwin chat[19868]: ^M Oct 21 16:10:24 hwin chat[19868]: [hartr -- got it Oct 21 16:10:24 hwin chat[19868]: send (ppp^M) Oct 21 16:10:27 hwin pppd[19872]: pppd 2.1.2 started by root, uid 0 Oct 21 16:10:27 hwin pppd[19873]: Using interface ppp0 Oct 21 16:10:27 hwin pppd[19873]: Connect: ppp0 <--> /dev/cua1 Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 1, id 1. Oct 21 16:10:27 hwin pppd[19873]: LCP: sending Configure-Request, id 1 Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(LCP): Rcvd id 1. Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MRU Oct 21 16:10:27 hwin pppd[19873]: (1500) Oct 21 16:10:27 hwin pppd[19873]: (ACK) Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ASYNCMAP Oct 21 16:10:27 hwin pppd[19873]: (0) Oct 21 16:10:27 hwin pppd[19873]: (ACK) Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd MAGICNUMBER Oct 21 16:10:27 hwin pppd[19873]: (a098b898) Oct 21 16:10:27 hwin pppd[19873]: (ACK) Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd PCOMPRESSION Oct 21 16:10:27 hwin pppd[19873]: (ACK) Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: rcvd ACCOMPRESSION Oct 21 16:10:27 hwin pppd[19873]: (ACK) Oct 21 16:10:27 hwin pppd[19873]: lcp_reqci: returning CONFACK. Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(LCP): Sent code 2, id 1. Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfack(LCP): Rcvd id 1. Oct 21 16:10:27 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1. Oct 21 16:10:27 hwin pppd[19873]: IPCP: sending Configure-Request, id 1 Oct 21 16:10:27 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 1. Oct 21 16:10:27 hwin pppd[19873]: ipcp: received ADDR Oct 21 16:10:27 hwin pppd[19873]: (10.144.153.51) Oct 21 16:10:27 hwin pppd[19873]: (ACK) Oct 21 16:10:27 hwin pppd[19873]: ipcp: received COMPRESSTYPE Oct 21 16:10:27 hwin pppd[19873]: (45) Oct 21 16:10:27 hwin pppd[19873]: (ACK) Oct 21 16:10:27 hwin pppd[19873]: ipcp: returning Configure-ACK Oct 21 16:10:28 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 1. Oct 21 16:10:30 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 1, id 1. Oct 21 16:10:30 hwin pppd[19873]: IPCP: sending Configure-Request, id 1 Oct 21 16:10:30 hwin pppd[19873]: fsm_rconfreq(IPCP): Rcvd id 255. Oct 21 16:10:31 hwin pppd[19873]: ipcp: received ADDR Oct 21 16:10:31 hwin pppd[19873]: (10.144.153.51) Oct 21 16:10:31 hwin pppd[19873]: (ACK) Oct 21 16:10:31 hwin pppd[19873]: ipcp: received COMPRESSTYPE Oct 21 16:10:31 hwin pppd[19873]: (45) Oct 21 16:10:31 hwin pppd[19873]: (ACK) Oct 21 16:10:31 hwin pppd[19873]: ipcp: returning Configure-ACK Oct 21 16:10:31 hwin pppd[19873]: fsm_sdata(IPCP): Sent code 2, id 255. Oct 21 16:10:31 hwin pppd[19873]: fsm_rconfack(IPCP): Rcvd id 1. Oct 21 16:10:31 hwin pppd[19873]: ipcp: up Oct 21 16:10:31 hwin pppd[19873]: local IP address 10.144.153.104 Oct 21 16:10:31 hwin pppd[19873]: remote IP address 10.144.153.51
(Zauważ, że ja korzystam ze STATYCZNYCH numerów IP - dlatego mój komputer wysłał je do serwera - nie zobaczysz tego, jeśli korzystasz z dynamicznych numerów IP.)
To wygląda na poprawne połaczenie, przyjżyj się temu dokładnie ,zanim zaczniesz testować połączenie przez 'pingowanie' numerów ip i komputerów.
Uruchom swoją przeglądarkę www lub cokolwiek - jesteś podłączony do Internetu!
Kiedy połączenie PPP nie jest już ci potrzebne, zamykasz je wydając ztandardowe polecenie ppp-off (pamiętaj musisz być administratorem lub należeć do grupy PPP).
W pliku dziennika powinno znaleźć się coś takiego:-
Oct 21 16:10:45 hwin pppd[19873]: Interrupt received: terminating link Oct 21 16:10:45 hwin pppd[19873]: ipcp: down Oct 21 16:10:45 hwin pppd[19873]: default route ioctl(SIOCDELRT): Bad address Oct 21 16:10:45 hwin pppd[19873]: fsm_sdata(LCP): Sent code 5, id 2. Oct 21 16:10:46 hwin pppd[19873]: fsm_rtermack(LCP). Oct 21 16:10:46 hwin pppd[19873]: Connection terminated. Oct 21 16:10:46 hwin pppd[19873]: Exit.
Nie mart się komunikatem SIOCDELRT
- to tylko pppd informuje, że
kończy pracę, nie ma się czym martwić.
Istnieje wiele przyczyn, dlaczego twoje połączenie nie może zostać nawiązane - program chat nie potrafi poprawanie wejść do sysytemu, masz linię telefoniczną o bardzo złej jakości itp. Przeglądaj pliki dzienników, tam znajdziesz wskazówki.
BARDZO częstym błędem jest zwykła literówka w skryptach lub plikach konfiguracyjnych. Muszisz je sprawdzić bardzo dokładnie - pamiętaj, że ludzie mają tendencję do odczytywania tego, o czym MYŚLIMY, że jest napisane - a nie tego co w rzeczywistości się tam znajduje!
Może chcesz używać PPP 2.2 z jądrem 1.2.x lub PPP-2.1.2 z jądrem 1.3.X/2.0.X. - używaj odpowiedniej wersji PPP.
Przeczytaj PPP FAQ (dokument, który jest serią pytań i odpowiedzi). To jest bardzo obszerny dokumen i można tam znaleźć mnóstwo odpowiedzi. Z mojego (smutnego) doświadczenia wiem, że jeśli nie znajdę tam odpowiedzi na moj problem, to nie jest to problem związany z PPP. W moim przypadku było to korzystanie z jądra w wersji ELF lecz ze starymi wersjami modułow. Straciłem jedynie 2 dni (i większą część jednej nocy)
Jeśli korzystasz z jądra 1.3.x/2.0.x to skompilowałeś wpierw obsługę modułów, potem moduł PPP i zainstalowałeś moduły - prawda ?
Jeśli nie korzystasz z programu kerneld do automatycznego ładowania modułow, wtedy zanim zaczniesz uruchamiać PPP musisz samemu załadować moduł jądra (i prawdopodobnie również moduł obsługi portów szeregowych).
Możesz t ozrobic ręcznie - jako root, napisz
insmod ppp
Może się zdarzyć, że wpierw musisz załadować moduł obsługi portów szeregowych...
insmod slhc
Najlepije jednak korzystać z automatycznego ładowania modułów, przeczytaj kerneld mini-howto!
Mogło się jescze tak zdarzyć, że korzystasz z ppp-2.1.2 z jądrem w wersji 2.0.x (lub uzywasz ppp-2.2 z jądrem 1.2.x bez nałożonych odpowienich łatek).
Sprawdź wersję jądra i PPP! Powtórzę raz jescze:-
Jądro Linuxa w wersji 2.0.x WYMAGA ppp-2.2.
Jądro Linuxa w wersji 1.2.x działa z ppp-2.1.2 lecz po nałożeniu odpowiednich łat może współpracowac również z ppp-2.2.
Posiadasz sieć lokalną Ethernet (lub inną) z już wprowadzoną pozycją domyślnej trasy.
Rozdział na temat 'Łączenie dwóch sieci za pomoca PPP' omawia w skrócie poprawne rozwiązanie tego problemu.
Problem polega na tym, że nie możesz mieć wiecej niż jedną pozycję dotyczącą domyślnej trasy. Domyślna trasa oznacza trasę którą są wysyłane wszystkie pakiety, które nie zostały zakwalifikowane na konkretną trasę. Ogólnie rzecz biorąc domyślna trasa wskazuje na trasę prowadząca od twojego komputera do Internetu.
Niestety niektóre dystrybucje Linuxa ustawiają domyślną trasę w ten sposób, że wskazuję ona na lokalną sieć Ethernetu. W takim przypadku będziesz musiał zmienić sposób w jaki jest inicjowany system w części dotyczącej konfuguracji urządzeń sieciowych i definiowania tabelei routingu tak, aby były dodawane tylko specyficzne trasy do konkretnych komputerów lub podsieci.
Informacje na ten temat można znaleźć w dokumentach NET2-HPWTP, NET-3_HOWTO (po polsku) i Linux Network Administration Guide.
Zasadniczo nie ma żadnej różnicy pomiędzy łączeniem pojedynczego komputera PC z Linuxem z serwerem PPP, a łączeniem dwóch sieci LAN za pomocą PPP na dwóch komputerach należących do tych sieci. Pamiętaj, PPP to protokół każdy-z-każdym.
Jednakże ABSOLUTNIE musisz rozumieć w jaki sposób konfigurowane są tablice routingu. Przeczytaj NET2-HOWTO (NET-3-HOWTO) i Linux Netwoek Administrator Guide (NAG). Nieocenioną pomoc może również dostarczyć książka " TCP/IP Network Administration" (wydana przez O'Reilly and Assoc - ISBN 0-937175-82-X).
W celu połączenia dwóch sieci LAN musisz używać dwóch różnych adresów sieci IP (lub dwóch różnych podsieci tej samej sieci) oraz będziesz musiał używać statycznych numerów IP - lub korzystać z IP masquerade. Jeśli chcesz korzystać z IP masquerade instrukcje na temat korzystania z tej funkcji znajdziesz w IP masquerade howto.
Musisz uzgodnić z administratorem drugiej sieci LAN, których adresów IP będziecie używać do zestawienia połączenia PPP. Jeśli korzystacie ze statycznych numerów IP, będziez prawdopodobnie zmuszony do dzwonienia pod określony numer.
Następnie popraw odpowiedni plik /etc/ppp/options[.ttyXX]
-
dobrym pomysłem jest posiadanie modemu i portu konkretnie dla tego
połączenia. To może również wymagać poprawienia pliku
/etc/ppp/options
, a być może również utworzenia plików
options.ttyXX dla innych połączeń PPP.
Zapisz w odpowiednim pliku opcji adres IP twojego końca połączenia, zgodnie z przedstawionym wcześniej przykładem zestawiania połączenia PPP ze statycznymi adresami IP.
Muszisz sprawić aby pakiety z twojej lokalnej sieci były przesyłane przez zestawione połączenie PPP. Jest to proces dwuetapowy.
Na początku musisz trasę od komputera zestawiającego połączenie PPP do sieci znajdującej się na drugim końcy tegto połączenia. Jeśli jest to połączenie z internetem, może być obsłużone przez domyślną trasę wprowadzoną do tabeli routingu przez program pppd na twoim końcu połączenia jako realizacja opcji 'defaultroute'.
Jeśli ma to być jedynie połączenie dwóch sieci LAN, wtedy należy dla konkretnej sieci dodać pozycję w tabeli trasowania. Służy do tego polecenie 'route' umiesczone w skrypcie /etc/ppp/ip-up (patrz Po zestawieniu połączenia... , tam znajdziesz instrukcje, jak to zrobić).
Drugą rzeczą jaką musisz zrobić jest powiadomienie innych komputerów należących do twojej sieci lokalnej, że twój komputer stał się 'bramą' do odległej sieci leżącej po drugiej stronie połączenia PPP.
Oczywiście administrator sieci po drugiej stronie połączenia musis zrobić to samo. Ponieważ będzie on przesyłał pakiety do konkretnej sieci, wymagana będzie pozycja tabeli routingu do konkretnej sieci, a nie pozycja domuślnej trasy (chyba, że sieć podrugiej stronie połączenia łączy się z Internetem właśnie przez wasza sieć).
Jeśli łączysz się za pomocą PPP z Internetem, lub cjoścby z drugą siecią LAN, powinieneś pomyśłeć o bezpieczeństwie. Mocno zalecam włączenie firewalla.
Po zestawieniu połączenia program pppd szuka skryptu
/etc/ppp/ip-up
. Jeśli istneije i jest wykonywalny, to zostaje
uruchomiony. W ten sposób możesz zautomatyzować wszelkie specjalne
polecenia ustawiania tabeli routingu, które mogą być niezbędne oraz
wszelki inne działania, które chcesz aby były wykonywane za każdym
razem, gdy polączenie PPP
To jest po prostu skrypt i możesz w nim robić wszystko, co tylko skrypt poptrafi (tzn. mniej więcej wszystko).
Na przykład możesz zmusić sendmail do opróżnieia kolejki.
W podobny sposób możesz umieścić polecenia, które za pomocą protokołu POP poniorą twoją pocztę oczekującą na ciebie u dostawcy.
Łączenie za pomocą PPP dwóch sieci LAN wymaga dodania do tbeli
routingu pozycji dla konkretnej podsieci. Można to łatwo zrealizować w
pliku /etc/ppp/ip-up
. Trudność powstaje wtedy, gdy twój
komputer obsługuje wiele połączeń PPP jednocześnie.
Dzieje się tak, dlatego, żę skrypt /etc/ppp/ip-up
jest
wykonywany dla każdego zestawionego połączenia ppp, datego musisz
szczególnie ostrożnie uruchamiać polecenia modyfikujące tabele
trasowania dla konkretnego połączenia ppp.
Można to łatwo wykonać korzystając z możliwości samej
powłoki. Zwykle przez wykorzystanie polecenia 'case' na odpowiednim
parametrze przekazanym do skryptu przez program pppd. Poniżesj skrypt
/etc/ppp/ip-up
/etc/ppp/ip-up
, którego używam do
obsługi połączeń WAN i połączenia z moją domową siecią Ethernet
(obsługiwanego przez ten sam serwer).
#!/bin/bash # # Script which handles the routing issues as necessary for pppd # Only the link to Newman requires this handling. # # When the ppp link comes up, this script is called with the following # parameters # $1 the interface name used by pppd (e.g. ppp3) # $2 the tty device name # $3 the tty device speed # $4 the local IP address for the interface # $5 the remote IP address # $6 the parameter specified by the 'ipparam' option to pppd # case "$5" in # Handle the routing to the Newman Campus server 202.12.126.1) /sbin/route add -net 202.12.126.0 gw 202.12.126.1 # and flush the mail queue to get their email there asap! /usr/sbin/sendmail -q & ;; 139.130.177.2) # Our Internet link # When the link comes up, start the time server and synchronise to the world # provided it is not already running if [ ! -f /var/lock/subsys/xntpd ]; then /etc/rc.d/init.d/xntpd.init start & fi # Start the news server (if not already running) if [ ! -f /var/lock/subsys/news ]; then /etc/rc.d/init.d/news start & fi ;; 203.18.8.104) # Get the email down to my home machine as soon as the link comes up # No routing is required as my home Ethernet is handled by IP # masquerade and proxyarp routing. /usr/sbin/sendmail -q & ;; *) esac exit 0
W rezultacie podniesienia połączenia PPP do naszego kampusu Newman i wykonania tego skryptu, otrzymujemy następującą tabelę trasowania (ten komputer jest również naszym serwerem dla przychodzących połaczeń modemowych oraz obsługuje nasze połączenie z Internetem). Wstawiłem komentarze pomiędzy wiersze wydruku aby można było łatwiej wyjaśnik każdą pozycję :-
[root@kepler /root]# route -n Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface # trasa do odległego komputera-bramy do iternetu 139.130.177.2 * 255.255.255.255 UH 1500 0 134 ppp4 # trasa do kampusowego komputer Newman 202.12.126.1 * 255.255.255.255 UH 1500 0 82 ppp5 # trasa do mojego domogego komputera-bramy 203.18.8.104 * 255.255.255.255 UH 1500 0 74 ppp3 # dwa zwykle połączaenia PPP (ludzi , tórzy zadzwonili do serwera) 203.18.8.64 * 255.255.255.255 UH 552 0 0 ppp2 203.18.8.62 * 255.255.255.255 UH 552 0 1 ppp1 # trasa do sieci kampusowaej (za momputerem Newman) 202.12.126.0 202.12.126.1 255.255.255.0 UG 1500 0 0 ppp5 # trasa do naszej lokalne sieci Ethernet (obejmuje dwie kolejne klasy C) 203.18.8.0 * 255.255.254.0 U 1500 0 1683 eth0 # trasa do urządzenie pętli zwrotnej 127.0.0.0 * 255.0.0.0 U 3584 0 483 lo # domyślna trasa do interentu default 139.130.177.2 * UG 1500 0 3633 ppp4
W poprzedniej sesji powiedzieliśmy jak sobie radzić z pocztą wychodzącą - po prostu opróżniać kolejkę tuż po nawiązaniu połączenia.
Jeśli posiadasz połączenia WAN, możesz uzgodnić z administratorrem
zdalnej sieci LAN, aby robił dokładnie to samo. Np. skrypt
/etc/ppp/ip-up
na komputerze Newman wygląda następująco:-
#!/bin/bash # # Script which handles the routing issues as necessary for pppd # Only the link to Hedland requires this handling. # # When the ppp link comes up, this script is called with the following # parameters # $1 the interface name used by pppd (e.g. ppp3) # $2 the tty device name # $3 the tty device speed # $4 the local IP address for the interface # $5 the remote IP address # $6 the parameter specified by the 'ipparam' option to pppd # case "$5" in 203.18.8.4) /usr/sbin/sendmail -q ;; *) esac exit 0
Kiedy posiadasz jedynie łącze PPP z dynamicznym adresem IP, musisz wtedy pobierać pocztę ze swojego konta na komputerze distawcy ISP. Zwykle robi się to za pomocą protokołu POP (Post Office Protocol). Dostępny jset program o nazwie 'popclient', który potrafi zautomatyzować całą procedurę.
Po prostu zmodyfikuj odpowiednio skrypt /etc/ppp/ip-up
, tak
aby zawierał wywołanie programu popclient. Mój laptom, na któym działa
RedHat Linux robi to tak:
popclient -3 -c -u hartr -p <password> kepler.hedland.edu.au |formail -s procmail
Do pobierania nowinek (newsów) możesz wykorzystać slurp. Pamietaj, że
ip-up
jest zwykłym skryptem powłoki Bournea i może być
wykorzystany do KAŻDEGO zadania, które musi być wykonane za kązdym
razem, gdy zestwimy połączenie PPP.
Istniejący skrypt /usr/sbin/ppp-off
powinien działać
prawidłowo, kied jest używany przez administratora. Jednyną zmianę
jaką możesz chcieć wprowadzić jest opróżnienie kolejki pocztowej, tuż
przed zamknięceim łącza.
Pozostawiamy to jako ćwiczenie domowe!
Co więcej możesz stworzyć skrypt, który będzie uruchamianyza każdym
razem, gdy zostanie zamknięte połączenie PPP. Należy go nazwav
/etc/ppp/ip-down
. Może być wykorzystany d oodwrócenia działań
jakie wykonałes w skrypcie /etc/ppp/ip-up
.
Jeśli masz połączenie z siecią LAN, lecz nadal chcesz korzystać na swio komputerze z PPP, musisz pamiętać aby prawidłowo ustawić tabele routingu, tak aby pakiety doceirały zarówno do komputera na drugim końcu połączenia PPP i dalej, ale również do komputerów w lokalnej sieci LAN.
NIE chcemy cię uczyć zasad trasowania - mówimy jedynie o prostym, specyficznym przypadku trasowania statycznego.
Jeśli NIE wiesz co to jest trasowanie mocno zlecam przeczytanie Linux Network Administrator Guide (NAG). W brdzo przystępny sposób porusza te problemy książka "TCP/IP Network Administration" wydawnictwa O'Reilly.
Podstawową zasadą trasowania statycznego jest to, aby trasa domyślna (default) prowadziła do NAJWIEKSZEJ liczby adresów komputerowych. W przpadku innych sieci należy dodawać do tabeli trasowania konkretne pozycje.
JEDYNYM przypadkiem, który chciałbym omówić jest sytuacja, gdy twój Linux jest przyłączony do sieci LAN, która nie jest przłączona do Internetu - a ty chcesz łączyć się ze swoim dostawcą Internetu będąc cały czas przyłączony do sieci LAN.
Po pierwsze upewnij się, że trasa do wojej sieci Ethernetowej jest trasą do konkretnej sieci, a nie trasą domyślną!.
Sprawdź to wydając polecenie route, powinieneś zobazcyć coś takiego:
[root@hwin /root]# route -n
Kernel routing table
Destination Gateway Genmask Flags MSS Window Use Iface
loopback * 255.255.255.0 U 1936 0 50 lo
10.0.0.0 * 255.255.255.0 U 1436 0 565 eth0
Jeśli twoja karta sieciowa (urządzenie eth0) jest wykorzystywane przez pozycję domyśłnej trasy (w pierwszej kolumnie będzie słowo "default", a w ostatniwej eth0) musisz zmodyfikować skrypty inicjujące twój system, w części która zajmuje się inicjowaniem kart sieciowych i ustawianiem tabeli trasowania, tak aby ustawiały trasę do konkretnej sieci, jaką jest rpzecież twoja sieć lokalna i nie wykorzystywały w tym celu trasy domyśłnej (zobacz NET2-HOWTO, NET-3-HOWTO i NAG).
Powyższe zmiany pozwolą programowi pppd na dodawania domyślnej trasy prowadzącej do twojego dostawcy Internetu i dalej:-
[root@hwin /root]# route -n
Kernel routing table
Destination Gateway Genmask Flags MSS Window Use Iface
10.144.153.51 * 255.255.255.255 UH 488 0 0 ppp0
127.0.0.0 * 255.255.255.0 U 1936 0 50 lo
10.1.0.0 * 255.255.255.0 U 1436 0 569 eth0
default 10.144.153.51 * UG 488 0 3 ppp0
Zauważyłeś, że dodawane są dwie pozycje do tabeli, trasa bezpośrednio do samogo komputera ( 10.144.153.51), serwera PPP z którym się polączyłś i trasa domyśłna przez interfejs ppp0 i serwer PPP jako bramę do internetu.
Jeśli twoja konfiguracja jest bardziej złożona - zapoznaj się dokumentami, o których wcześniej wspominałem i skonsultuj się ze swoim lokalnym ekspertem w wych sprawach.
Jeśli w twojej sieci są już routery, masz już zapewne utworzone połączenia do większych sieci. Jednak NADAL powinieneś wykorzystywać trasę domyśłna do połączeń z internetem, a ewentualnie dodać nowe pozycje, dla tras do tych dalszych sieci, z któymi się łączysz przez swoją kartę sieciową.
Jeśli skonfigurujesz Linuxa włączonego do lokalnej sieci LAN jako komputer łączący sie ż Internetem , otwierasz w ten sposób całą swoją sieć lokalną na próby penetracji z internetu. Zanim to zrobisz zalecamy konsultacje ze swoim administratorem sieci i zapoznanie się z obowiązującą polityką bezpieczeństwa sieci. Jeśli twój komputer zostanie wykorzsytany do zaatakowania sieci lokalnej, może cię spotkac więcej niż złość kolegów czy administratorów sieci. Możesz popaść w naprawdę poważne kłopoty.
Zanim przyłączysz sieć LAN do Internetu, zastanów się czy nie wykorzystać pownej ochrony jaka dają połączenia z DYNAMICZNYM przydziałem numerów IP - może warto zapoznać się z książką "Building Internet Firewalls" wydawnictwa O'Reilly.
Jeśli połączenie PPP nadal nie działa, przeczytaj ten dokument raz jeszcze, sprawdź wszystko dokłądnie, przyjżyj się komuniokatom w dziennikach generowanych przez program "chat -v" i "pppd -d".
Przeczytaj dokumentacje do PPP , FAQ na ten temat i inne dokumentu, o których wspominałem.
Jeśli nadal stoisz w miejscu, spróbuj zadać pytanie na pl.comp.os.linux.
W szczególności - NIE WYSYLAJ MNÓSTWA WYDRUKÓW ODPLUSKWIANIA DO GRUP NOWINKOWYCH, ANI POCZTA DO MNIE - to pierwsze zajmuje tylko łącza, a drugie zostanie od razu wrzucone do /dev/null (chyba, że specjalnie o to poprosze).
Wielu dostawców mogą wspomagać instalaję tylko tego oprogramowania, które dostarczają nowym użytkownikom. Sa to zwykle programy po MS Windows :-( - wiele osób zajmujących się pomaganiem nowym użytkownikom nic nie wie na temat Unixa (czy Linuxa). Muszisz być przygotowany, że w takij systuacji nie znajdziesz u nich pomocy.
Mogłbyś zrobić takiej osobie przysługę i wyjaśnić jej co nieco na ten temat (większość osób pracujących przy pomaganiu ludziom powinna być rozsądna).
OK, twoje połączenie PPP działa poprawnie i możesz 'pingnąc' serwer PPP podając jefo numer IP (drugi lub oznaczony jako "remote" numer IP wyświetlony przez polecnie ifconfig ppp0), lez nie możesz osiągnąć komputerów poza nim.
Po pierwsze spróbuj 'pingnąć' numery IP, jakie podałeś w pliku
/etc/resolv.conf
. Jeśli zadziała, to znaczy, że możesz wyjść
poza serwer PPP (chyba, że w /etc/resolv.conf jest właśnie podany
numer IP serwera PPP). Spróbuj teraz 'pingnąc' pełną nazwe twojego
dostawcy - np.
ping komputer.mojego dostawcy.pl
Jeśli to nie zadziała, masz problem z rozwiązywaniem nazw. Może być
spowodowany literówką w pliku /etc/reslov.conf
. Sprawdź to
dokladnie z informacjami jakie sobie zanotowałeś zanim zacząłeś
onfigurować PPP. Jeśli wszystko się zgadza, zadzwoń do dostawcy i
dowiedz się, czy poprawnie zapisałes ten numer.
Jeśli nadal nie działa (a twój dostawca potwierdził poprawność numeru serwera DNS i to, żę są sprawne), problem leży gdzieś indziej. Sugeruję sprawdzenie dokładnie twojej instalacji linuxa (zwracającsczególną uwagę na atrybuty plików).
Jeśli NADAL nie możesz 'pingnąć' komputera swojego dostawcy podając jego nazwe, nie numer to może on być wyłączony (zadzwoń i się dowiedz) albo twoj dostawca ma klopoty z trasowaniem (routingiem). Zadzwoń i sprawdź to.
Jedną z możłiwości jest sytuacja, kiedy zdalnym serwerem PPP jest linux, z wyłączoną w jądrze opcją przesyłania pakietów (IP forwarding).
Dobrym testem jest próba połączenie się za pomocą oprogramowania, które on dostarcza (zwykle dla MS Windows). Jeśli wszystwo działa poprawnie dla innego systemu operacyjnego i dokladnie tego samego konta u dostawcy, to znaczy, że problem leży po stronie twojego Linuxa, a NIE dostawcy.
Jeśli korzystasz z polączenia z dyamicznym przydziałem numerów IP zobacz rozdiał "Konfiguraja usług" poniżej.
Ponownie, jeśli korzystasz z polączenia z dyamicznym przydziałem numerów IP zobacz rozdiał "Konfiguraja usług" poniżej.
Jeśli korzystasz z dynamicznych numerów IP (wielu dostawców umożliwi ci korzystanie z PPP jedynie tylko w ten sposób, chyba, że zapłacisz odpowiedno dużą sumę pieniędzy) musisz sobie zdawać z ograniczęć jakie to ze sobą niesie.
Po pierwsze korzystanie z usług zewnętrznych działa poprawnie. To znaczy możesz wysłać poczte sendmailem, pobrać pliki przez ftp, korzystać z www,fingera itp.
W szczególności możesz odpowiadać na poczte, zostanie zmagazynowana podczas gdy nie było polączenia i zostanie wyłana tuż po jego nawiązaniu.
Pamiętaj, że twój komputer nie ejst podłączony do internetu przez 24 godziny, ani nie posiada przy każdym połączeniu tego samego numeru IP. Dlatego nie możesz otrzymywać poczty bezpośrednio na swój komputer i jest bardzo trudno umożliwić twoim kolegom przegładanie twojego serwera www czy ftp. Tak długo kiedy mówimy o Interneie, twój komputer nie istnieje jako pełnoprawny, unikalny, cały czas osiągalny komputer internetowy ponieważ nie posiada jednoznacznego, stałego numeru IP (pamietaj, że numer IP nie jest przydzielony do komputera tylko do linii telefonicznej, gdy nie jesteś połączony z "twojgo" numeru IP korzysta ktoś inny.
Jeśli uruchimisz serwer WWW (lub inna usługę), nikt o niej nie wie, CHYBA, że ktoś wie, że twój komputer jest w tej chwili podłączony do internetu i zna numer IP, którego w danej chwili używasz. Taką informację można zdobyć na wiele sposobów, możesz informować ludzi telefonicznie, listowanie, zostawić ospowiednie inforamcje w pliku /.plan na komputerze dostawcy (pod warunkiem, że masz dostęp do interpertera).
Nie jest to problem większości użytkowników. Oni chcą jedynie wysyłać i otrzymywać pocztę (korzystając z konta u dostawcy) i korzystać z internetowych serwerów WWW i ftp. Jeśli koniecznie MUSISZ mieć możliwość udostępniania własnych usług, powinieneś otrzymać statyczny numer IP. Albo próbować się ratować metodami opisanymi powyżej...
Nawet w przypadku korzystania z dynamicznych adresów IP, możesz tak
skonfogurować sendmail, aby wysyłał listy napisane lokalnie na twoim
komputerze. Konfiguracja sendmaila może być BARDZO trudna - nie mamy
zamiaru uczyć cię, jak to się robi. Powienieneś skonfigurować sendmail
podając jako "smart host" komputer pocztowy twojego dostawc (opcja
DS
w pliku /etc/sendmail.cf
). Szczegółowe instrukcje na
temat konfiguracji sendmaila znajdziesz w jego dokumantacji - przyjżyj
się plikom m4, które wchodzą w sklad dystrybucji sendmaila. Na pewno
znajdziesz tam jeden, który spełni twoje wymagania.
Dostępne są również wspaniałe książki na temat sendmaila, lecz zwykle nie nadają się dla początkujących użytkowników.
Jeśli już uda ci się skonfigurować sendmaila, bedziesz zapewne chciał
tuz po nawiązaniu połązcenia PPP opóżniać kolejkę z listów czekającyh
na wysłanie do adresatów gdzieś tam w internecie. W tym celu dodaj
do pliku /etc/ppp/ip-up
polecenie
sendmail -q &
Przychodząca poczta jest problemem dla osób korzystających z dynamicznych numerów IP. Rozwiązaniem jest :-
Możesz zautomatyzować cały ten proces umiesczając niezbędne polecenia
w pliku /etc/ppp/ip-up
(pisaliśmy o tym wczśniej).
Choć możesz korzystać zserwera DNS, który zapewnia ci twój dostawca
ISP, możesz również uruchomić lokalny serwer DNS (tylko buforujący)
włączany przez sktypt ip-up
. Zaletą tego rozwiązania jest
osczędność czasu i łącza w przypadku częstego nawiązywania połączeń z
tymi samymi komputerami.
Konfiguracja serwera DNS do pracy w trybie buforowania jest całkiem
prosta (opcja forwarders w pliku /etc/named.boot
wskazujaca
serwer DNS twojego dostawcy). Książka wydawnictwa O'Reilly "DNS and
Bind" odpowie na wszelkie twoje pytania.
Dostępny jest również dokument DNS-HOWTO.
Jeden z punktów Netykiety mówi: zanim zaczniesz używać drugorzędnego serwera DNS do buforowania, wewnątrz domey twojego dostawcy, spytaj go wpierw o pozwolenie. Poprawnie skonfigurowany serwer DNS nie jest problemem dla twego dostawcy, lecz jeśli popełnisz ajkiś błąd, może wtedy sprawiać kłopoty.
Jak już wspominałem istnieje wiele metod na wykonanie tego zadania. To co chcę zaprezentować to sposób, którego używam (korzystając z wieloportowej karty Cycades i kilku linii telefonicznych na wspolnym numerze).
Jeśli ci się nie spodoba, możesz to zrobić na swój sposób. Zawsze chętnie w kolejnych wersjach tego dokumentu umieszczę inne sprawdzone metody. Jeśli znasz taką przyślij mi jej opis wraz ze swoimi uwagami.
Pamiętaj, ze w tej części mówimy jedynie o konfiguracji Linuxa jako sewera PPP. Nie zamierzam kiedykolwiek umieszczać tutaj informacji o konfigurowaniu specjalnych terminali dostępowych i innych tego typu zabawek.
Czekają mnie jescze eksperymenty z shadow password. Aktualnie prezentowane informacje NIE zawierają żanych udogoniej jakie można uzyskać korzystając z shadow password.
Wszelki wcześniejsze uwagi na temat wersji jądra i pakietu PPP są nadal aktualne. Zkładam, że przeczytałeś poprzednie rozdziały.
MUSISZ włączyć w jąrdze orzesyłanie pakietów (IP forwarding). Może to być dobry moment do włączenia również takich udogodniej jak zliczanie pakietóe (accounting) i firewall.
Jeśli korzystasz z kart wieloportowych muszisz oczywiscie korzystać z ich drajwerów.(zobacz Serial-JTZ).
Oferujemy konta PPP (i SLIP) oraz konta zwykłe sprawdzając tożsamość za pomocą identyfikatora i hasła. Jest to dla nas ułatwieniem, ponieważ uzytkownik korzystając z jednego konta ma dostęp do wszystkich usług.
Ponieważ jestemy organizacją edukacyjną, nie pobieramy opłat za korzystanie z systemu i nie musimy się martwić o zliczanie ruchu i naliczanie opłat.
Firewall działający pomiędzy naszą siecią a internetem ogranicza dostęp naszysch użytkowników do wybranych usług internetowych, ponieważ łącząc się z naszym serwerem pracują wewnątrz naszej sieci, lecz nie będzeimy tutaj rozwijać tego tematu.
Proces uruchomie połączenia PPP przez uzytwkonika posiadającego onto na serwerze wygląda następujaco:-
ppp
które uruchamia PPP
na serwerze.
Serwer korzysta z indywidualnych plików
/etc/ppp/options.ttyXX
każdego portu wejściowego, gdzie jest
zapisany zdalny numer IP (dynamiczny przydział numerów IP). Do
zapewnienia komunikacji z komputerami sieci lokalnej i koputerem po
drygiej stronie połączenia PPP serwer korzysta z proxyarp (włączonej
przez odpowiednią opcję pppd) unikając uruchomienia takich programów
jak routed lub gated.
Kiedy użytkownik zamyka połączenie PPP, pppd na serwerze to wykrywa, poleca modemowi przerwać połączenie likwidując w tym samym czasie łącze PPP.
Potrzebne będą następujące programy:-
Zanim skonfigurujesz swój komputer jako serwer PPP, musi on wpierw umożliwiać dostęp użytkownikom di uch kont.
Nie zamieszcamy w tym dokumencie informacji jak to zrobić. Przeczytaj dokumentację programu getty i Serial-JTZ.
Musisz stworzyć plik z opcjami dotyczacymi wszystkich połączeń
/etc/ppp/options
. My używamy takich opcji:
asyncmap 0 netmask 255.255.254.0 proxyarp lock crtscts modem
Zauważ, że NIE korzystamy z trasowania - a w sczególności nie ma domyślnej trasy, ponieważ jako serwer PPP powinieneś jedynie zapewnić przesyłanie pakietów z komputer klienta do Internetu i twojej sieci lokalnej i z Internetu (sieci lokalnej) do komputera klienta.
Wszystko co jest wymagane do realizacji tego celu, to trasa do komputer klienta i użycie opcjie 'proxyarp' w programi pppd.
Opcja 'proxyarp' dodaje do tabeli apr serwera PPP ppozycją proxy arp (już wszystko jasne :), która powiadamia komputery sieci lokalnej, że wszystkie pa kiety przeznaczone dla klineta PPP należy przesyłać bezpośrednio do serwera - nie można jej niestety użyć przy routingu pakietów pomiędzy dwiema sieciami LAN - muszisz dodać do tabeli routingu odpowiednie trasy.
Prawdopodobnie chcesz aby użytkownicy twojego serwera PPP korzystali z
dysnamicznego przydzielania adresów IP. Można to osiągnąć przypisując
każdemu portowi szeregowemu inny adres IP. Zrobisz to umieszczając
odpowiednią inforamacje w plikach /etc/ppp/options.ttyXX
.
Po prostu umieść tam lokalny muer IP (serwera PPP) i numer IP, który ma być wykorzystywany przez ten port. Np.
kepler:slip01
Ponieważ uruchomienie połązeniea PPP jest związane z konfiguracją urządzeń sieciowych i manipulowaniem tabelą routingu, dlatego wymagane są do tego specjalne uprawnienia - w rzeczywistości uprawnienia administratora.
Na szczęści pppd został zaprojektowany do takiego użycia i możemy włączyć bit suid root. Musisz po prostu wydać polecenie
chmod u+s /usr/sbin/pppd
Teraz atrybuty tego pliku powinny wygładać tak
-rwsr-xr-x 1 root root 74224 Apr 28 07:17 /usr/sbin/pppd
Jeśli tego nie zrobisz, twoi użytkownicy nie będą mogli uruchomić połączenia PPP.
Aby uprościć użytkownikom pewne działania, w pliku
/etc/bashrc
tworzymy globalny alias, tak aby proste polecenie
uruchamiało całą procedurę PPP po stronie serwera.
This looks like
alias ppp="exec /usr/sbin/pppd -detach"
Co to znaczy?
w
mniej więcej tak
6:24pm up 3 days, 7:00, 4 users, load average: 0.05, 0.03, 0.00 User tty login@ idle JCPU PCPU what hartr ttyC0 3:05am 9:14 -
I to już wszystko... mówiłem, że zrobienie prostego serwera PPP jest banalne.
TO jest jeszcze prostsze - nie ma modemu to znaczy nie trzeba dzwonić.
Po pierwsze wybierz ,który kompter będzie pracował jako 'serwer'. Muszisz skonfigurować na porcie szeregowym getty, abyś mogł za pomocą minicomu przetestować połączenie z drugiego komputera.
Jeśli połączenie między portami działa poprawnie, możesz usunąć niepotrzebne getty, CHYB, że chcesz aby to połączenie bylo weryfikowane przez identyfikator i hasło. Ponieważ masz kontrolę nad oby komputerami podejżewam, że nie jest ci to potrzebne.
Teraz, na serwerze należy usunąć getty i upewnić się, że porty na obu komputerach są skonfigurowane tak samo.
Teraz musisz tylko ruchomićna obu systemach pppd. Zakładam, że po obu stronach będzie to port /dev/cua4. Na oby komputerach wydaj polecenie :-
pppd -detach crtscts lock <local IP>:<remote IP> /dev/cua4 38400 &
Spowoduje to zestawienie połączenia - lecz nie masz jescze poprawionych tabel routingu. Możesz przetestować połączenie 'pingując' komputery nawzajem, a następnie zamknąć połączeni zabijając jeden z procesów pppd.
Routing jaki jest potrzebny zależy od tego co tak naprawdę chcesz robić. Zwykle jeden z komputerów będzie przyłączony do Ethernetu, a przez to do Internetu, więc wymagany routing jest taki sam, jak w przypadku serwera i klienta PPP.
Na komputerze wyposarzonym w kartę Ethernetu należy wydać polecenie
pppd -detach crtscts lock proxyarp <local IP>:<remote IP> /dev/cua4 38400 &
a na tym drugim
pppd -detach crtscts lock defaultroute <local IP>:<remote IP> /dev/cua4 38400 &
ppp-on
i ppp-off
w dokładnie taki sam
sposób, jaki został opisany wcześniej.
Robert Hart
Port Hedland, Western Australia
August 1996
Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całęgo dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia.
Wszelkie tego typu uwagi proszę przesyłać na adres piotr.pogorzelski@ippt.gov.pl
Inne przetłumaczone dokumenty można znaleźć na stronie http://www.jtz.org.pl/. Zapraszamy!.
piotr.pogorzelski@ippt.gov.pl. # # # #
Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:22