# Linux PPP HOWTO

## Robert Hart, hartr@hedland.edu.au
v2.2, 25 sierpnia 1996
Wersja polska:Piotr Pogorzelski piotr.pogorzelski@ippt.gov.pl
w1.0, luty 1997

Prezentujemy w jaki sposób podłączyć komputer PC z Linuxem do serwera PPP, w jaki sposób za pomocą PPP połączyć ze sobą dwie sieci oraz jedną z metod sworzenia z twojego Linuxa serwera PPP.

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.

## 1. Wprowadzenie

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.

## 1.1 Klienci i serwery

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.

## 1.2 Różnice pomiędzy dydtrybucjami Linuxa

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ą:

- Slackware
  która korzysta ze stlu BSD
- Red Hat (and its sibling Caldera)
  zbliżona do stylu Systemu V.

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.

## 2. Numery IP

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:

- One A Class Address
  10.0.0.0 - 10.255.255.255
- 16 B Class Addresses
  172.16.0.0 - 172.31.255.255
- 256 C Class Addresses
  192.168.0.0 - 192.168.255.255

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.

## 3. Cel tego dokumentu

## 3.1 Konfiguracja klienta PPP

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

### Korzystanie z DIPa - NIE, korzystaj z CHATa

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.

## 3.2 Konfiguracja serwera PPP

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.

## 3.3 Połąćzenie dwóch sieci LAN, lub sieci LAN z Internetem

Przedstawiamy podstawowe informacje na temat łączenia dwóch sieci LAN, lub sieci LAN z Internetem przy wykorzystaniu oritikołu PPP.

## 3.4 W chwili obecnej ten dokument nie obejmuje...

- Przyłączenia i konfiguraji modemu (szczegówłów)
  patrz Serial-JTZ.
- Zestawiania połączeń PPP za pomocą DIPa
  Korzystaj z CHATa
- Korzystaniaz Z Scoks lub IP Masqueradeing
  Istneiją bardzo dobre dokumenty na ten temat

## 4. Wersje opisywanych programów

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ą.

## 5. Inne pożyteczne/ważne dokumenty

Radzimy zapoznać się z :-

- dokumentacją towarzyszącą oprogramowaniu PPP
  (Zobacz `/usr/doc...`)
- stronami podręcznika dla programów pppd i chat
  (napisz `man chat` i `man pppd` )
- Linux Network Administration Guide (NAG)
  The Network Administrators' Guide
- Net-2/3 JTZ
  Linux NET-2/3-HOWTO
- Dokumentacją jądra w katalogu /usr/src/linux/Documentation
- Świetnymi książkami dotyczącymi Unix/Linux wydanymi przez O'Reilly and Associates. ( O'Reilly and Associates On-Line Catalogue). Jeśli nie miałeś doświadczenia z Linuxem/Unixem biegnij do najbliższej księgarni.

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`"`.

## 5.1 Pożyteczne Listy dyskusyjne na temat Linuxa

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

## 6. Konfigurajca jądra

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.

## 6.1 Instalacja plików źródłowych jądra Linuxa

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

1. zmień katalog roboczy na `/usr/src`
   `cd /usr/src`
2. Sprawdź `/usr/src/linux` czy są jużtam zainstalowane pliki źródłowe jądra.
3. Jeśli nie masz źródeł, pobierz je z ftp://sunsite.icm.edu.pl/pub/Linux/helsinki/v2.0
   Jeśli szukasz starszych wersji jądra np. 1.2.x zobacz ftp://sunsite.icm.edu.pl/pub/Linux/helsinki/v1.2
4. Wybierz odpowiednią wersję - zwykle najnowszą. Pobierz ją i umieść w katalogu `/usr/src`.
   Uwaga: plik 'tar' jest plikiem-archiwum - zwykle skompresowanym, tak jak pliki archiwa zawierające źródła jądra Linuxa - zawierającym wiele innyc plików i katalogów. TO jest taki Linuxowy odpowiednik DOSowego archiwum zip.
5. Jeśli masz już zainstalowane pliki źródłowe, lecz chcesz odświeżyć wersję jądra musisz usunąc stare pliki. Wydaj polecenie:
   `rm -rf /usr/src/linux`
6. teraz rozkompresuj i zainstaluj źródłą wydając polecenie: `tar xzf linux-2.0.29.tar.gz`
7. NAstępnie, `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).

## 6.2 Rozpoznanie sprzędtu

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

## 6.3 Kompilacja jądra - Wersja 1.2.13

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`.

## 6.4 Kompilacja jądra - wersje 1.3.x i 2.0.x

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.

## 6.5 Uwaga na temat PPP-2.2 i `/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

## 6.6 Ogólne ueagi na temat konfiguracji jądra

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.

## 7. Zbieranie niezbędnych inforamcji na temat usługi PPP

Zanim będziesz w stanie ustanowić połączenie PPP z serwerem, musisz zdobyć następujące informacje (od administratora opiekującego sie serwerem):

- Numer telefomu pod jaki należy dzwonić aby skorzystać z usługi
  Jeśli znajdujesz się za centralą PABX potrzebujesz również numer wyjściowy, po którym otrzymujesz sygnał centrali - zwukle ejst o zero (0) lub dziewięć (9).
- Serwer korzysta z DYNAMICZNYCH czy STATYCZNYCH numerów IP?
  Jeśli serwer korzysta ze STATYCZNYCH numerów IP, wtedy musisz wiedzieć które numery IP używać. Większość dostawców Internetu korzysta z DYNAMICZNIE przydzielanych numerów IP. Jak wspomnieliśmy ma to pewne skutki na rodzaje usług z których mogłbyś chcieć skorzystać.
- Jeśli korzystasz ze statycznych numerów IP dowiedz się jescze jaki numer sieci i maskę sieciową (nemtask) używa twój dostawce.
- Jakie są numery IP serwera DNS u twojego dostawcy Internetu?
  Powinny być co najmniej dwa, choć niezbędny jest tylko jeden.
- Czy serwer wymaga użycia PAP/CHAP?
  Jeśli tak, musisz jeszcze znać "id" o "secret" których masz używać przy zestawianiu połaczenia (zwykle jest to twój identyfikator i hasło).
- Czy serwer automatycznie uruchamia PPP czy musisz wydać dodatkowe polecenia po zalogowaniu się na serwerze?
  Jeśli musisz wydać jakieś polecenie aby uruchomić PPP dowiedz się jakie jest to polecenie?

Zapisz dokładnie wszystkie te informacje - będziesz z nich korzystać.

## 7.1 Testowanie modemu dla połączeń wychodzących

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:-

- DOS com1: = Linux /dev/cua0 (i /dev/ttyS0)
- DOS com2: = Linux /dev/cua1 (i /dev/ttyS1)
  itd.

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:-

- zachęta do wprowadzenia identyfikatora użytkownika;
- zachęta do wprowadzenia hasła;

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ę.

## 8. Uwaga na temat portów szeregowych i ich przepustowwości

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.

## 9. Konfiguracja modemu

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ć:-

- Sprzętowe sterowanie przełaniem danych (RTS/CTS) (`&`K3 w wielu modemach Hayes)

Inne ustawienia (standardowe polecenia modemów Hayes), którym powinieneś się przyjżeć to:

- E1 Echo poleceń włączone ON(wymagane przez program chat)
- Q0 Przekazywanie kodów wynikowych ON(wymagane przez program chat)
- S0=0 Automatyczne odpowiadanie na połączenie OFF (chyba, że chcesz aby twój modem "podnosił słuchawkę")
- `&`C1 Carrier Detect ON Tylko po połączeniu
- `&`S0 Data Set Ready (DSR) zawsze ON
- (zależnie od systuacji) Data Terminal Ready

(ON - właczone; OFF - wyłączone)

Warto 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.

## 9.1 Uwagi na temat sterowania przepływem danyc przez porty szeregowe

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:-

- Sygnalizacja sprżetowa (Clear To Send/Request to Send - CTS/RTS)
- Sygnalizacja programowa (control S i control Q).

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.

## 10. Korzystanie z PPP, a uprawnienia administratora

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:-

- Zmień wlaściciela i grupę skryptów ppp-on/off na root,PPP
- Zmień atrybuty plików ppp-on/off aby mogły być czytane/uruchamiane tylko przez właścićiela i członków grupy

  > `

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

  > `

- Wyłącz pozostalym wszelkie prawa dostępu do tych plików.
- dodaj do grupy PPP (plik /etc/group) użytkowników, którzy są uprawnieni do zestawiania połączenia PPP.

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.

## 11. Ustawianie plików konfiguracyjnych PPP

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.

## 11.1 Plik options.tpl

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

## 11.2 Których opcji powinienem używać?

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.

### /etc/ppp/options (bez PAP/CHAP)

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)

### /etc/ppp/options (korzystamy z 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

## 12. Konfiguracja pliku /etc/resolv.conf

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;`domenie`dquot;`. 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.

## 13. Skekretny plik PAP/CHAP

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.

## 13.1 Plik sekretny PAP

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,

## 13.2 Sekretny plik CHAP

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

## 14. Reczne zestawianie połączeniea PPP

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

- inet addr:10.144.153.10 oznacza numer IP twojego końca połączenia.
- P-t-P:10.144.153.5 jest numerem IP serverea.

(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?

## 15. Zautomatyzowanie połączenia - tworzenie skryptów do nawiązywaniapołączenia

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.

## 15.1 Skrypty w przypadku weryfikacji Identyfikatr//Hasło

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.

## 15.2 ppp-on script

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

## 15.3 Poprawianie dostarczonych skryptów startowych

Ponieważ nowe skrtypty są podzielone na dwie częście, bedziemy je zmieniać po kolei.

### Skrypt ppp-on

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

### Uruchamianie PPP po stronie serwera

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.

### Skrypt ppp-on-dialer

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.

## 15.4 Co to jest skrypt chat ...

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`
  Uruchom program chat, -v informuje program, aby wszelkie dane WE/Wy rejestrpwał w dzienniku systemowym (zwykle /var/log/messages).
  Kiedu już jesteś pewien, że skrypt jest poprawny usun opcję -v, w ten sposób zredukujesz rozmiar dziennika.
- `TIMEOUT 3`
  Ten wiersz ustawia czas oczekiwania na nadejscie oczekiwanych znaków na 3 sekundy. Jesli korzystasz z naprawdę wolnego modemu, możesz być zmuszonym do wydłuzenia tego czasu do 5 lub 10 sekund.
- `ABORT '\nBUSY\r'`
  Jeśli napotkasz na napis BUSY przerwij działanie programu.
- `ABORT '\nNO ANSWER\r'`
  Jeśli napotkasz na napis NO ANSWER przerwij działanie programu.
- `ABORT '\nRINGING\r\n\r\nRINGING\r'`
  Jeśli napotkasz (powtarzający się) napis RINGING, przerwij działąnie programu
  . To znaczy, że ktoś do ciebie dzwoni!
- `\\ \rAT`
  Nie czekając wyślij do modemu napis AT
- `\OK-+++\c-OK\ ATH0`
  To jest troszkę skomplikowane, ponieważ korzysta z możliwości naprawiania sytuacji wyjątkowych jakie ma zaimplementowane program chat. Oznacza mniej więcej to ...
  Oczekuj na napis OK, jeśli się nie doczekasz (ponieważ modem nie jest w trybie poleceń) wyślij napis +++ (standardowe polecenie nakazujące modemowi przejście w tryb poleceń) i oczekuj napisu OK; następnie wyslij polecenie ATH0 (polecenie "odłożenia słuchaki" - przerwania połączenia).
  W ten sposób twój skrypt ma możliwość poradzić sobie z modemem, który jest zablokowany w trybie on-line!
- `TIMEOUT 30`
  Ustaw czas oczekiwania dla pozostałej częsci skryptu na 30 sekund. Jeśli napotkasz na klopoty z powodu przekroczenia czasu oczekiwania, zwiększ tę wartość do 45 lub więcej sekund.
- `OK ATDT$TELEPHONE`
  Oczekuj na napis OK (odpowiedź modemu na polecenie ATH0) i wybierz numer pod który chcemy zadzwonić.
- `CONNECT ''`
  Oczekuj na napis CONNECT (który jest wysyłany przez nasz modem po nawiązaniu połącenia z modemem odległym) i nie wysyłaj nic w odpowiedzi
- `ogin:--ogin: $ACCOUNT`
  Powtórnie trochę obsługi systuacji wyjątkowych. Oczekuj na zachętę przedstawienia się systemowi (...ogin:) lecz jeśli się jej nie doczekamy, wyślij znak niwego wiersza i ponownie czekaj na tę samą zachętę. Jeśli się doczekasz wyślij identyfikator użytkownika (przechowywany w zmiennej $ACCOUNT).
- `assword: $PASSWORD`
  Oczekuj na napis assword: i w zamian wyślij hasło (również przechowywane w zmiennej powłoki).

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`).

## 15.5 Skrypt chat dla połączeń wymagających weryfiakcaji PAP/CHAP.

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         ''                              \

## 15.6 Opcja debug i -f option_file programu pppd

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 \

## 16. Testowanie skryptu nawiazującego połączenie

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!

## 17. Zamykanie połączenia PPP

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ć.

## 18. Odpluskwianie

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)

## 18.1 Skompilowałem PPP, lecz linux twierdzi że go nie ma!

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.

## 18.2 Nie mogę ustawić domyślnej trasy w tabeli trasowania (routingu).

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.

## 19. Łączenie dwóch sieci za pomocą PPP.

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.

## 19.1 Konfiguracja adresów IP

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.

## 19.2 Konfiguracja routingu

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ć).

## 19.3 Bezpieczeństwo sieci

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.

## 20. Po zestawieniu połączenia...

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.

## 20.1 Specjalne pozycje tabeli routingu

Łą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

## 20.2 Obsługa poczty elektronicznej

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.

## 21. Zamykanie połączenia

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`.

## 22. Uwagi na temat tabel trasowania sieci LAN

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ą.

## 22.1 Uwagi na temat bezpieczeństwa

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.

## 23. Gdzie znaleźć pomoć jeśli całkowicie ugrzęzłeś

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

## 24. Zwykłe klopoty z działającym łączem

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

## 24.1 Nie moge wyjść poza serwer PPP do którego jestem podłączony

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.

## 24.2 Mogę wyłać poczte, lecz nie otrzymują żadnych listów

Jeśli korzystasz z polączenia z dyamicznym przydziałem numerów IP zobacz rozdiał "Konfiguraja usług" poniżej.

## 24.3 Dlaczego ludzie nie mogą krzystać z usług finger, WWW, gopher,talk mojego komputera

Ponownie, jeśli korzystasz z polączenia z dyamicznym przydziałem numerów IP zobacz rozdiał "Konfiguraja usług" poniżej.

## 25. Korzystanie z usług sieciowych w przypadku dynamicznyhc numerów IP

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

## 25.1 Konfiguracja poczty elektronicznej

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 :-

- skonfigurowanie programu pocztowaego w taki sposób, aby w nagłówku Reply-To: w każadym wychodzącym liście podawał twój adres na komputerze dostawcy.
  Jeśli możesz, powinieneś tak to wszystko sonfigurować, aby adres podawany w polu FROM był również sdresem twojego konta u dostawcy.
- ponieranie poczty z konta komputera dostawcy za pomocą programu popclient.

Możesz zautomatyzować cały ten proces umiesczając niezbędne polecenia w pliku `/etc/ppp/ip-up` (pisaliśmy o tym wczśniej).

## 25.2 Konfiguracja lokalnego serwera DNA

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.

## 26. Konfiguracja serwera PPP

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.

## 26.1 Kompilacja jądra

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

## 26.2 Zarys konfiguracji serwera

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:-

- Zadzwonienie i zestawienie połączenia między modemami.
- Wejscie na swoje konto podając identyfikator i hasło
- W wierszu zachęty wydanie polecenia `ppp` które uruchamia PPP na serwerze.
- Uruchomienie PPP na komputrze klienta (niezależnie czy jest tam Linux, Windows, DOS, MAC czy cokolwiek- to już ich problem).

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.

## 26.3 Przygotowanie niezbędnego oprogramowania

Potrzebne będą następujące programy:-

- Odpowioednio skompilownae is konfogurowane jądro Linuxa.
- Odpowiednia wersja pakietu pppd.
- Program 'getty', który w sposób inteligentny radzi sobie z połączeniami modemowymi.
  Korzystamy z getty_ps2.0.7h, lecz na myśl przychodzi również mgetty. Wiem, że mgetty może rozpoznać połączenie korzystające z pap/chap (pap jest wykorzystywane przez Windows95) i automatycznie uruchomic pppd, lecz jescze tego nie wykorzystuje.
- Działający serwer DNS, dostępny dla twoich użytkowników korzystających z PPP.
  Jeśli to możliwe, powinieneś posiadac własny serwer DNS...

## 26.4 Konfiguracja zwykłego konta

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.

## 26.5 Konfiguracja plików z opcjami programu pppd

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

W szczególności, zamiast numerów IP możesz podawać nazwy komputerów (ja sam pamiętem tylko numery najważniejszych komputerów i urządzeń, nazwy jest łatwiej zapamiętać).

## 26.6 KOnfiguracja pppd umożliwiająca zwkłym użytkownikomna uruchomienie połączenia

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.

## 26.7 Ustanawianie ogólnego aliasu dla pppd

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?

- exec : to znaczy, że w miejsce działającego programu (w tym przypadku powłoki) zostaje uruchomiony inny program.
- pppd -detach : uruchom program pppd i NIE odłączaj się od terminala. W ten sposób po zakończeniu połączenia jesteśmy pewni, że nie pozostanie żaden niepotrzebny proces użytkownika.

Użytkownicy, kótrzy logują się w ten sposób będą przedstawiani przez polecenie `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.

## 27. Korzystanie z PPP przy wykorzystaniu kabli bezmodemowych(bezpośrednie połązcenie portów szeregowych)

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 &

Jeśli łączysz w ten sposób dwie sieci (przez łącze szeregowe!) lub masz bardziej skomplikowane wymagania dotyczące routingu, możesz skorzystać ze skryptów `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

## 28. Od tłumacza

- Zmiany w stosunku do oryginału:
- odwołania do sunsite.unc.edu zamienione na odwolania do jego kopii w Polsce,
- dodane różne inforamacje o polskich tłumaczeniach.

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.