ďťż

Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


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


zmień katalog roboczy na /usr/src
cd /usr/src
Sprawdź /usr/src/linux czy są jużtam zainstalowane
pliki źródłowe jądra.
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

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.

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
teraz rozkompresuj i zainstaluj źródłą wydając polecenie:
tar xzf linux-2.0.29.tar.gz
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;domeniedquot;. Np. moj komputer nazywa
się archenland i należy do domeny
hedland.edu.au. Czyli adres mojego komputera w postaci łatwej
do posługiwania się przez człowieka jest
archenland.hedland.edu.au. Inne komputery w Internecie rozpoznają go
jednak przez przydzielony mu adres IP.
Tłumaczenie (resolving) nazwy komputera i domeny na numerki, które są
niezbędne do nawiazania połączenia jest wykonywane przez komputery
oferujące usługę o nazwie DNS (Domain Name Service).

Podczas zestawiania połączenia PPP musisz powiedzieć swojemu
komputerowi skąd może pobierać informacje na temat numeru IP
przydzielonego do nazwy komputera, tak abyś ty mógł używać nazw
komputerów, lecz twój komputer był w stanie zamienić je na
odpowiednie numery IP.

Jednym ze sposobów jest umieszcenie nazwy i numeru każdego komputra,
którym będziesz sięchciał połączyć w pliku /etc/hosts ( w
rzeczywistoście jest to niemożliwe przy połączeniach z Internetem),
innym rozwiązaniem jest podawanie numerów komputerow zamiast ich nazw
(możliwe jedynie w przypadku małych sieci)

Najlepiej w taki sposób skonfigurować Linuxa, aby sam wiedział skąd
pobrać niezbędne informacje - automatycznie. Tej usługi dostarzca
system DNS. Wszystkiego c opotrzebujesz jest umiesczenie w pliku
/etc/resolv.conf numeru IP serera udostępniającego usługę DNS.

Ludzie opiekujacy się serwerem PPP powinni dostarczyć ci dwa numery IP
serwerów DNS (tylko jeden jest niezbędny, lecz drugi jest przydatny w
przypadku, gdy nastąpi awaria pierwszego)

Plik /etc/resolv.conf powinien wyglądać mniej wiećej tak:-




domain domena.twojego.dostawcy.internetu
nameserver 10.25.0.1
nameserver 10.25.1.2



Popraw ten plik (utwórz jeśli jest to konieczne) i wprowaź
opdpowiednie inforamcje. Pownien mieć następujące atrybuty:-



-rw-r--r-- 1 root root 73 Feb 19 01:46 /etc/resolv.conf



Jeśli posiadasz już działający plik /etc/resolv.conf, ponieważ jesteś
przyłączony do sieci LAN, po prostu dodaj numery IP serwera DNS.

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.plInne przetłumaczone dokumenty można znaleźć na stronie
http://www.jtz.org.pl/. Zapraszamy!.
piotr.pogorzelski@ippt.gov.pl.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •