PPPD(8) | System Manager's Manual | PPPD(8) |
NAZWA¶
pppd - Demon protokołu PPP
SKŁADNIA¶
pppd [ nazwa_tty ] [ szybkość ] [ opcje ]
OPIS¶
Protokół Point-to-Point (PPP) daje metody transmisji datagramów poprzez szeregowe połączenia punkt-do-punktu. PPP składa się z trzech części: sposobu enkapsułowania datagramów w połączeniach szeregowych, rozwiniętego protokołu kontroli połączenia (LCP--Link Control Protocol) oraz rodziny protokołów kontroli sieciowej (NCP--Network Control Protocols) służących do zestawiania i konfigurowania różnych protokołów warstwy sieciowej.
Schemat enkapsułowania jest dawany przez kod sterownika w jądrze. Pppd daje podstawowe LCP, wsparcie uwierzytelniania i NCP do zestawiania i konfigurowania IP (nazywa się on IPCP-IP Control Protocol).
CZĘSTO UŻYWANE OPCJE¶
- <nazwa_tty>
- Komunikuj się poprzez wskazane urządzenie. Jeśli potrzeba, doklejany jest tu łańcuch "/dev/". Jeśli nie zostanie podana nazwa urządzenia, lub jeśli podana jest nazwa terminala podłączonego do standardowego wejścia, pppd użyje tego terminala i nie fork(2)nie by wstawić się w tło. Wartość tej opcji ustawiona w uprzywilejowanym źródle nie może być przeciążona przez nieuprzywilejowanego użytkownika.
- <szybkość>
- Ustaw szybkość przesyłu na <szybkość> (liczba dziesiętna). Na systemach takich, jak 4.4BSD czy NETBSD można podać dowolną szybkość. Inne systemy (np. SunOS) dopuszczają tylko ograniczony zbiór szybkości.
- asyncmap <mapa>
- Ustaw mapę znaków async na <mapa>. Mapa ta opisuje, które znaki sterujace nie mogą być pomyślnie przesyłane poprzez linię szeregową. Pppd będzie prosił peera o przesyłanie tych znaków jako dwubajtowe sekwencje specjalne. Argument jest 32 bitową liczbą szesnastkową, gdzie każdy bit określa znak, który należy cytować. Bit 0 (00000001) określa znak 0x00; bit 31 (80000000) określa znak 0x1f lub ^_. Jeśli podanych jest wiele opcji asyncmap, to wartości są sklejane logicznym OR. Jeśli nie podane są żadne opcje asyncmap, znaki te w ogóle nie będą negocjowane w kierunku odbiorczym. Peer powinien wtedy cytować wszystkie znaki sterujące. Aby cytować przesyłane znaki, użyj opcji escape.
- auth
- Żądaj od peera uwierzytelnienia przed zezwoleniem na przesyłanie pakietów sieciowych. Opcja ta jest domyślna, jeśli system ma trasę domyślną. jeśli nie podano ani tej opcji, ani noauth, pppd pozwoli jedynie używać peerowi adresów do których system nie ma jeszcze trasy.
- call nazwa
- Odczytaj opcje z pliku /etc/ppp/peers/nazwa. Plik ten może zawierać uprzywilejowane opcje, takie jak noauth, nawet jeśli pppd nie jest uruchamiane przez roota. Łańcuch nazwa nie może rozpoczynać się od /, ani zawierać znaków .. jako część ścieżki. Format pliku z opcjami jest opisany niżej.
- connect skrypt
- Użyj programu wykonywalnego, podanego przez skrypt do skonfigurowania linii szeregowej. Skrypt ten zwykle wykorzystuje program chat(8) do wykręcenia numeru telefonu i rozpoczęcia zdalnej sesji ppp. Wartość tej opcji ze źródła uprzywilejowanego nie może być przesłonięta przez nieuprzywilejowanego użytkownika.
- crtscts
- Używaj sprzętowego sterowania przepływem (tj. RTS/CTS) do sterowania przepływem danych na porcie szeregowym. Jeśli nie zostanie podana ani opcja crtscts, ani nocrtscts czy cdtrcts lub nocdtrcts, ustawienie sprzętowego sterowania przepływem portu pozostaje niezmienione. Niektóre porty szeregowe (np. Maca) nie posiadają prawdziwego wyjścia RTS. Porty takie używają tego trybu do implementacji jednokierunkowego sterowania przepływem. Port szeregowy zawiesi transmisję jeśli zażąda tego modem (przez CTS), lecz nie będzie w stanie zażądać od modemu zaprzestania nadawania danych do komputera. Tryb ten zachowuje możliwość używania DTR jako linii kontroli modemu.
- defaultroute
- Dodaj domyślną trasę do systemowych tablic trasowania, używając peera jako bramkę po pomyślnym zakończeniu negocjacji IPCP. Wpis ten [w tablicach routingu] jest usuwany po zerwaniu połączenia. Opcja ta jest uprzywilejowana w przypadku podania opcji nodefaultroute.
- disconnect skrypt
- Wykonaj program skrypt po zakończeniu połączenia ppp. Skrypt ten może na przykład wysłać komendy, powodujące odwieszenie modemu gdy niedostępne są sprzętowe sygnały sterowania modemem. Skrypt rozłączenia nie jest uruchamiany jeśli modem już jest odwieszony. Wartość tej opcji pochodząca z uprzywilejowanego źródła nie może być przesłonięta przez nieuprzywilejowanego użytkownika.
- escape xx,yy,...
- Określa, że niektóre znaki powinny być podczas transmisji cytowane (niezależnie czy peer chciał by tak było w swojej mapie async). Cytowane znaki są podawane jako lista liczb szesnastkowych, rozdzielonych przecinkami. Zauważ, że prawie każdy znak można podać w tej opcji. Jest to odwrotnie niż w opcji asyncmap, gdzie można było podać jedynie znaki sterujące. Znaki, których nie można cytować to znaki o wartościach szesnastkowych 0x20 - 0x3f lub 0x5e.
- file nazwa
- Odczytaj opcje z pliku nazwa (format jest opisany niżej). Plik ten musi być dostępny dla odczytu dla użytkownka, który uruchomił pppd.
- init skrypt
- Uruchom program wykonywalny skrypt do zainicjalizowania linii szeregowej. Skrypt ten zazwyczaj używa programu chat(8) do skonfigurowania modemu celem włączenia autoodpowiadania. Wartość tej opcji, pochodząca z uprzywilejowanego źródła nie może być przesłonięta przez nieuprzywilejowanego użytkownika.
- lock
- Podaje, że pppd powinien stworzy plik blokujący w stylu UUCP, aby zapewnić ekskluzywność dostępu do urządzenia szeregowego.
- mru n
- Ustaw MRU [Maximum Receive Unit] na n. Pppd poprosi peera o przesyłanie pakietów nie większych niż n bajtów. Minimalną wartością MRU jest 128. Domyślną jest 1500. Zalecana dla wolnych linii jest wartość 296 (40 bajtów na nagłówek TCP/IP + 256 bajtów danych). (Zauważ, że w IPv6 MRU musi być min. 1280).
- mtu n
- Ustaw MTU [Maximum Transmit Unit] na n. O ile peer nie zażąda mniejszej wartości poprzez MRU, pppd zażąda by kod sieciowy jądra wysyłał pakiety nie większe niż n bajtów. (Zauważ, że w IPv6 MTU musi być min. 1280).
- passive
- Włącza opcję pasywności LCP. Przy podaniu tej opcji, pppd spróbuje zapoczątkować połączenie; jeśli nie uzyska odpowiedzi od peera, to będzie czekać pasywnie na prawidłowy pakiet LCP, zamiast kończyć działanie, jak to ma miejsce w normalnej sytuacji.
OPCJE¶
- <lokalny_adres_IP>:<zdalny_adres_IP>
- Ustaw lokalny i/lub zdalny adres IP interfejsu. Dowolny z nich można pominąć. Adres IP może być podawany jako nazwa hosta, lub w dziesiętnej notacji kropkowej (np. 150.234.56.78). Domyślnym adresem lokalnym jest (pierwszy) adres IP systemu (o ile nie podano opcji noipdefault). Zdalny adres (w wypadku niepodania) jest pobierany od peera. W ten sposób, w prostych przypadkach opcja ta nie jest wymagana. Jeśli lokalny i/lub zdalny adres IP został jednak w tej opcji podany, pppd nie przyjmie innej wartości od peera w negocjacji IPCP, chyba że podano opcje ipcp-accept-local i/lub ipcp-accept-remote.
- ipv6 <identyfikator_lokalnego_interfejsu>,<identyfikator_zdalnego_interfejsu>
- Ustaw 64-bitowy identyfikator lokalnego i lub zdalnego interfejsu. Dowolny z nich można pominąć. Identyfikator musi być podany w standardowej noracji ascii adresów IPv6 (np: ::dead:beef). Jeśli podana jest opcja ipv6cp-use-ipaddr, lokalnym identyfikatorem jest lokalny adres IPv4 (patrz wyżej). Na systemach, obsługujących unikalne stałe ID, można w zamianie do opisywanej opcji użyć opcji ipv6cp-use-persistent. W przeciwnym wypadku, identyfikator jest losowany.
- active-filter wyrażenie-filtru
- Określa filtr pakietowy, stosowany do pakietów z danymi w celu określenia, które pakietu uznać za aktywność linii, a zatem kiedy kasować licznik bezczynności lub prowadzić połączenie w stan wymagający telefonowania. Opcja ta jest przydatna w połączeniu z opcją idle jeśli przez połączenie przesyłane są regularnie jakieś pakiety (np. pakiety informacji o trasach), które normalnie uniemożliwiają wejście w stan bezczynności. Składnia wyrażenia-filtru jest taka, jak dla tcpdump(1), lecz kwalifikatory nie mające sensu w połączeniu PPP, takie jak ether czy arp nie są dozwolone. Ogólnie, wyrażenie filtru powinno być ujęte w pojedyncze cytaty, aby uchronić je przed interpretacją spacji przez powłokę. Opcja ta jest obecnie dostępna tylko pod NetBSD i to tylko wtedy, gdy jądro i pppd były skompilowane ze zdefiniowanym PPP_FILTER.
- allow-ip adres(y)
- Zezwol peerom na używanie podanych adresów IP lub podsieci bez uwierzytelniania. Parametr jest przetwarzany jak każdy element listy dozwolonych adresów IP z plików sekretów (zobacz sekcję UWIERZYTELNIANIE poniżej).
- bsdcomp nr,nt
- Zażądaj by peer kompresował wysyłane pakiety przy użyciu mechanizmu BSD-Compress z maksymalnym rozmiarem kodu nr bitów i zgódź się na kompresowania pakietów wysyłanych do peera z maksymalnym rozmiarem kodu nt bitów. Jeśli nt nie jest podane, to domyślnie odpowiada wartości nr. Wartości w zakresie 9 do 15 są typowymi wartościami tych parametrów; większe dają lepszą kompresję, lecz wymagają więcej pamięci jądra da słowniki kompresji. Alternatywnie, podanie wartości 0 jako nr lub nt wyłącza kompresję w danym kierunku. Aby wyłączyć kompresję całkowicie, użyj nobsdcomp lub bsdcomp 0.
- cdtrcts
- Użyj niestandardowego sprzętowego sterowania przepływem (np. DTR/CTS) do sterowania przepływem danych przez port szeregowy. Jeśli nie podany jest ani crtscts, ani nocrtscts, ani cdtrcts lub nocdtrcts, ustawienie sprzętowego sterowania przepływem na danej linii pozostaje niezmienione. Niektóre porty (np. Maca) nie posiadają prawdziwego wyjścia RTS. Porty takieużywają tego trybu do implementowania prawdziwego, dwukierunkowego sterowania przepływem. Poświęceniem jest to, że tryb sterowania przepływem nie zezwala na używanie DTR jako lnii kontroli modemu.
- chap-interval n
- Jeśli podana jest ta opcja, pppd będzie wyzywał peera co n sekund.
- chap-max-challenge n
- Ustaw maksymalną liczbę transmisji wyzwań CHAP na n (domyślnie 10).
- chap-restart n
- Ustaw czas opóźnienia wyzwań na n sekund (domyślnie 3).
- connect-delay n
- Czekaj do n milisekund po zakończeniu skryptu connect na prawidłowe pakiety ppp od peera. Pod koniec tego czasu lub gdy od peera nadejdzie prawidłowy pakiet PPP, pppd rozpocznie negocjację przez przesyłanie pierwszego pakietu LCP. Domyślną wartością jest 1000 (1 sekunda). Ten czas oczekiwania ma znaczenie tylko jeśli używana jest opcja connect lub pty.
- debug
- Włącza zabudowę debuggowania połączenia. Po podaniu tej opcji, pppd raportuje zawartość wszystkich pakietów kontrolnych w czytelnej postaci. Pakiety są raportowane poprzez sysloga w zabudowie daemon i poziomie debug. Informacja ta może być przekierowana do pliku przez poprawne skonfigurowanie /etc/syslog.conf (zobacz syslog.conf(5)).
- default-asyncmap
- Wyłącz negocjację asyncmap i wymuś cytowanie wszystkich znaków sterujących w obu kierunkach.
- default-mru
- Wyłącz negocjację MRU. Po włączeniu tej opcji, pppd użyje domyślnej wartości 1500 bajtów.
- deflate nr,nt
- Żąda by peer kompresował wysyłane pakiety w mechanizmie deflate z maksymalnym rozmiarem okna 2**nr bajtów i zgodził się na kompresowanie pakietów wysyłanych do peera z maksymalnym rozmiarem okna 2**nt bajtów. Jeśli nie podano nt to przyjmowana jest wartość równa nr. Jako parametry używane są wartości w zakresie 8 do 15; większe dają lepszą kompesję, lecz zabierają więcej pamięci na słowniki kompresji. Wartość 0 wyłącza kompresję w danym kierunku. Kompresję można wyłączyć, stosując nodeflate lub deflate 0. (Uwaga: pppd preferuje kompresję deflate nad BSD-compress jeśli peer może i tamto.)
- demand
- Inicjalizuj połączenie tylko na żądanie, tj.
gdy istnieje natłok danych. Przy tej opcji, zdalny adres IP musi
być podawany przez użytkownika w linii poleceń lub w
pliku z opcjami. Pppd początkowo konfiguruje interfejs i otwiera je
na dane IP bez łączenia się z peerem. Gdy
pojawią się dane, pppd łączy się z
peerem, dokonuje negocjacji, uwierzytelniania, etc. Gdy jest to
zakończone, pppd rozpoczyna przekazywanie pakietów danych
(tj. pakietów IP) poprzez łącze.
Opcja Idemand implikuje opcję persist. Jeśli zachowanie to nie jest pożądane, użyj opcji nopersist po opcji demand. W połączeniu z opcją demand przydatne są też idle i holdoff.
- domain d
- W celach uwierzytelniania, doklej nazwę domeny d do nazwy hosta lokalnego. Na przykład, jeśli gethostname() zwraca nazwę porsch, lecz w pełni kwalifikowaną nazwą domeny jest porsche.quotron.com, to powinieneś podać domain quotron.com. Pppd użyje wtedy nazwy porsche.quotron.com do podglądania sekretów w pliku z sekretami i jako domyślnej nazwy do wysyłania do peera podczas uwierzytelniania. Opcja ta jest uprzywilejowana.
- hide-password
- Podczas raportowania zawartości pakietów PAP, opcja ta powoduje, że pppd nie załącza do raportu łańcucha z hasłem. Jest to zachowanie domyślne.
- holdoff n
- Podaje ile sekund czekać przed ponownym rozpoczęciem połączenia po jego zakończeniu. Opcja ta ma efekt tylko w połączeniu z opcjami persist lub demand. Okres holdoff nie jest używany gdy połączenie zostało zerwane z powodu bezczynności.
- idle n
- Określa, że pppd powinien rozłączyć się jeśli łącze było bezczynne przez n sekund. Łącze jest bezczynne jeśli nie przesyłane są przez nie żadne pakiety. Uwaga: nie zaleca się używania tej opcji z opcjią persist bez opcji demand. Jeśli podana jest opcja active-filter, odrzucane przez filtr aktywności pakiety liczą się również jako bezczynne łącze.
- ipcp-accept-local
- Przy podaniu tej opcji, pppd przyjmuje wyobrażenie peera o naszym lokalnym adresie IP, nawet jeśli adres lokalny podano jako opcję.
- ipcp-accept-remote
- Przy podaniu tej opcji, pppd przyjmuje wyobrażenie peera o jego (zdalnym) adresie IP, nawet jeśli adres ten podany został jako opcja.
- ipcp-max-configure n
- Ustaw maksymalną liczbę transmisji żądania konfiguracji IPCP na n (domyślnie 10).
- ipcp-max-failure n
- Ustaw maksymalną liczbę NAK-ów konfiguracji IPCP zwróconych przed rozpoczęciem wysyłania Odrzuceń konfiguracji na n (domyślnie 10).
- ipcp-max-terminate n
- Ustaw maksymalną liczbę transmisji żądań zakończenia IPCP na n (domyślnie 3).
- ipcp-restart n
- Ustaw interwał restartu IPCP (czas opóźnienia retransmisji) na n sekund (domyślnie 3).
- ipparam łańcuch
- Daje dodatkowy parametr dla skryptów ip-up i ip-down. Jeśli podana jest ta opcja, to łańcuch jest przekazywany jako 6 parametr tych skryptów.
- ipv6cp-max-configure n
- Ustaw maksymalną liczbę transmisji żądań konfiguracji IPv6CP na n (domyślnie 10).
- ipv6cp-max-failure n
- Ustaw maksymalną liczbę NAK-ów konfiguracji IPv6CP, zwracanych przed rozpoczęciem wysyłania Odrzuceń konfiguracji na n (domyślnie 10).
- ipv6cp-max-terminate n
- Ustaw maksymalną liczbę transmisji żądań zakończenia IPv6CP na n (domyślnie 3).
- ipv6cp-restart n
- Ustaw interwał restartu IPv6CP (czas opóźnienia retransmisji) na n sekund (domyślnie 3).
- ipx
- Włącz protokoły IPXCP i IPX. Opcja ta jest obecnie obsługiwana jedynie pod Linuksem i tylko jeśli jądro ma wsparcie IPX.
- ipx-network n
- Ustaw numer sieci IPX w ramce żądania konfiguracji IPXCP na n, liczbę szesnastkową (bez 0x na początku). Nie ma sensownej wartości domyślnej. Jeśli opcja ta nie jest podana, numer sieci jest pobierany od peera. Jeśli peer nie ma numeru sieci, protokół IPX nie zostanie uruchomiony.
- ipx-node n:m
- Ustaw numery węzła IPX. Dwa numery węzła są rozdzielane od pozostałych znakiem dwukropka. Pierwszy numer n jest numerem węzła lokalnego. Drugi jest numerem węzła peera. Każdy numer węzła musi być liczbą szesnastkową o długości najwyżej 10 cyfr. Numery węzłów sieci ipx muszą być unikalne. Nie ma sensownej wartości domyślnej. Jeśli opcja ta nie jest podana, numery węzłów są pobierane od peera.
- ipx-router-name <łańcuch>
- Ustaw nazwę routera. Łańcuch ten jest przesyłany do peera jako dane informacyjne.
- ipx-routing n
- Ustaw tą opcją odbierany protokół trasowania. Można podać więcej niż jedną instancję tej opcji. Opcja none (0) może być podana jako jedyna instncja tej opcji. Wartościami mogą być 0 (NONE), 2 (RIP/SAP), 4 (NLSP).
- ipxcp-accept-local
- Przyjmij NAK peera dla numeru węzła podanego w opcji ipx-node. Jeśli podano niezerowy numer węzła, to domyślnie naciska się na używanie tej wartości. Jeśli załączasz tę opcję, to zezwalasz peerowi na przeciążanie wpisu numeru węzła.
- ipxcp-accept-network
- Przyjmij NAK peera dla numeru sieci podanego w opcji ipx-network. Jeśli podano niezerowy numer sieci, to domyślnie naciska się na używanie tej wartości. Jeśli załączasz tę opcję, to zezwalasz peerowi na przeciążenie wpisu numeru węzła.
- ipxcp-accept-remote
- Użyj peerowego numeru sieci, podanego w ramce żądania konfiguracji. Jeśli dla peera podano numer węzła, a tej opcji nie podano, peer będzie zmuszony do używania wartości, którą podałeś.
- ipxcp-max-configure n
- Ustaw maksymalną liczbę ramek żądań konfiguracji IPXCP wysyłanych przez system na n. Domyślnie 10.
- ipxcp-max-failure n
- Ustaw maksymalną liczbę ramek NAK IPXCP, którą system wyśle przed odrzucaniem opcji. Domyślnie 3.
- ipxcp-max-terminate n
- Ustaw maksymalną liczbę ramek żądań zakończenia zanim system lokalny uzna, że peer go nie słucha. Domyślnie 3.
- kdebug n
- Włącz kod debuggowania na poziomie jądra sterownika PPP. Argument n jest liczbą, która jest sumą następujących wartości: 1 włącza ogólne informacje debuggowe, 2 żąda by drukowana była zawartość odbieranych pakietów, 4 żąda by drukowana była zawartość przesyłanych pakietów. Na większości systemów, komunikaty drukowane przez jądro są raportowane przez syslog(1) do pliku wskazanego w pliku konfiguracyjnym /etc/syslog.conf.
- ktune
- Powoduje, że pppd poprawia odpowiednio ustawienia jądra. Pod linuksem pppd w przypadku używania opcji proxyarp włącza forwardowanie IP (tj. ustawia /proc/sys/net/ipv4/ip_forward na 1) oraz w trybie demand włącza (o ile adres lokalny się zmienia) opcję dynamicznego adresu IP (tj. ustawia na 1 /proc/sys/net/ipv4/ip_dynaddr).
- lcp-echo-failure n
- Jeśli podana jest ta opcja, pppd przyjmuje, że peer nie żyje w momencie gdy n żądań echa LCP zostanie wysłanych bez odpowiedzi LCP. Jeśli zajdzie ta sytuacja, pppd przerwie połączenie. Używanie tej opcji wymaga niezerowej wartości parametru lcp-echo-interval. Opcja ta może być używana do umożliwiania pppd kończenia działania po zerwaniu fizycznego połączenia (np. po odwieszeniu słuchawki) w sytuacjach, gdzie nie są dostępne sprzętowe linię sterowania modemem.
- lcp-echo-interval n
- Jeśli podana jest ta opcja, pppd do peera będzie wysyłać ramkę żądania echa LCP co n sekund. Normalnie peer powinien odpowiedzieć wysyłając odpowiedź na echo. Opcja ta może być używana w połączeniu z lcp-echo-failure do wykrywania czy peer jest wciąż podłączony.
- lcp-max-configure n
- Ustaw maksymalną liczbę transmisji żądań konfiguracji LCP na n. Domyślnie 10.
- lcp-max-failure n
- Ustaw maksymalną liczbę NAK-ów konfiguracji LCP, zwracanych przed rozpoczęciem wysyłania Odrzuceń konfiguracji. Domyślnie 10.
- lcp-max-terminate n
- Ustaw maksymalną liczbę transmisji żądań zakończenia LCP na n (domyślnie 3).
- lcp-restart n
- Ustaw interwał restartu LCP (czas opóźnienia retransmisji) na n sekund (domyślnie 3).
- linkname nazwa
- Ustawia logiczną nazwę łacza na nazwa. Pppd utworzy plik o nazwie ppp-nazwa.pid w /var/run (lub na niektórych systemach w /etc/ppp), zawierający jego PID. Jest to przydatne do określania, która instancja pppd jest odpowiedzialna za łącze z danym peerem. Jest to opcja uprzywilejowana.
- local
- Nie używaj linii sterowania modemem. Przy użyciu tej opcji, pppd będzie ignorować stan CD (Carrier Detect) i nie będzie zmieniać stanu DTR (Data Terminal Ready).
- logfd n
- Wysyłaj informacje raportowe do deskryptora pliku n. Pppd będzie wysyłać te informacje do najwyżej jednego pliku lub deskryptora (oraz wysyłaj komunikaty do sysloga), więc opcja ta i logfile są rozłączne. Domyślną wartością dla pppd jest wysyłanie wiadomości raportowych na stdout (deskryptor 1), chyba że port szeregowy jest już na ten deskryptor otwarty.
- logfile nazwapliku
- Doklejaj komunikaty raportowe do pliku nazwapliku (oraz wysyłaj komunikaty do sysloga). Plik otwierany jest z prawami użytkownika, który uruchomił pppd. Otwierany jest w trybie dopisywania.
- login
- Użyj systemowej bazy haseł do uwierzytelnienia peera z pomocą PAP i nagraj użytkownika do systemowego pliku wtmp. Zauważ, że peer musi mieć swój wpis w /etc/ppp/pap-secrets oraz w systemowej bazie haseł.
- maxconnect n
- Zakończ połączenie po jego dostępności dla sieci przez n sekund (tj. n sekund po pierwszym przejściu protokołu kontroli sieci).
- maxfail n
- Zakończ po n kolejno nieudanych próbach połączenia. Wartość 0 oznacza brak limitów. Domyślną wartością jest 10.
- modem
- Używaj linii sterowania modemem. Opcja ta jest domyślna. Z jej użyciem, pppd będzie czekać na sygnał CD (Carrier Detect) od modemu jako zapewnienie otwarcia urządzenia szeregowego (chyba że podany jest skrypt connect) i opuści DTR (Data Terminal Ready) gdy połączenie będzie zakończone i przed wywołaniem skryptu connect. Na ultriksie, opcja ta implikuje sprzętowe sterowanie przepływem, jak w opcji crtscts.
- ms-dns <adr>
- Jeśli pppd działa jako serwer klientów MS Windows, opcja ta umożliwia przekazywanie klientom jednego lub dwóch adresów DNS. Pierwsze pojawienie się tej opcji określa adres podstawowego DNS; druga podaje adres drugorzędny. (Opcja ta była obecna w starszych wersjach pppd pod nazwą dns-addr.)
- ms-wins <adr>
- Jeśli pppd działa jako serwer dla MS Windows lub dla klientów "Samby", to opcja ta umożliwia pppd przekazywanie jednego lub dwóch adresów serwerów WINS (Windows Internet Name Services) dla klientów. Pierwsze pojawienie tej opcji określa podstawowy adres WINS; drugie--drugorzędny.
- name nazwa
- Ustaw nazwę systemu lokalnego na nazwa. Jest to wykorzystywane w celach uwierzytelniania. Jest to opcja uprzywilejowana. Po jej włączeniu, pppd uzywa w plikach sekretów linii, które mają nazwę jako drugie pole linii. Tylko tych linii używa do uwierzytelniania peera. Dodatkowo, jeśli nie zostanie to przesłonięte opcją user, nazwa będzie używana jako nazwa wysyłana do peera podczas uwierzytelniania lokalnego systemu u peera. (Zauważ, że pppd nie dokleja do nazwy nazwy domeny.)
- netmask n
- Ustaw maskę sieciową interfejsu na n, tj. 32 bitową maskę w kropkowej notacji dziesiętnej (np. 255.255.255.0). Jeśli podana jest ta opcja, to wartość jej zostanie połączona logicznym OR z domyślną maską sieciową. Domyślna maska sieciowa jest wybierana według wynegocjowanego zdalnego adresu IP; jest maską odpowiednią dla klasy zdalnego adresu IP, połączoną logicznym OR z maskami sieciowymi wszelkich interfejsów sieciowych point-to-point systemu, znajdujących się w tej samej sieci. (Uwaga: na niektórych platformach pppd zawsze jako maski sieciowej używa 255.255.255.255 jeśli jest to jedyna wartość odpowiednia dla intefejsu point-to-point.)
- noaccomp
- Wyłącz kompresję Address/Control w obydwu kierunkach (nadawania i odbioru).
- noauth
- Nie wymagaj od peera uwierzytelniania. Opcja ta jest uprzywilejowana.
- nobsdcomp
- Wyłącza kompresję BSD-Compress; pppd nie będzie żądać lub zgadzać się na kompresowanie pakietów wg. tego schematu.
- noccp
- Wyłącz negocjację CCP (Compression Control Protocol). Opcja ta powinna być używana jedynie jeśli peer jest zapchlony i nie potrafi obsłużyć żądań pppd o negocjację CCP.
- nocrtscts
- Wyłącz sprzętowe sterowanie przepływem (RTS/CTS) portu szeregowego. Jeśli nie jest podane crtscts, nocrtscts, cdtrcts, ani nodtrcts, sprzętowe sterowanie przepływem nie jest zmieniane.
- nodtrcts
- Opcja ta jest synonimem nocrtscts. Dowolna z tych opcji wyłącza obydwie postaci sterowania przepływem.
- nodefaultroute
- Wyłącz opcję defaultroute. Jeśli administrator chce zabronić użytkownikom tworzenia przez pppd domyślnych tras, to może umieścić tę opcję w pliku /etc/ppp/options.
- nodeflate
- Wyłącza kompresję Deflate; pppd nie zażąda i nie zgodzi się na kompresję pakietów wg tego schematu.
- nodetach
- Nie odłączaj się od terminala sterującego. Bez tej opcji, w przypadku podania urządzenia szeregowego innego niż terminal standardowego wejścia, pppd fork(2)nie by przejść w tło.
- noip
- Wyłącz negocjację IPCP i komunikację IP. Opcja ta powinna być używana tylko jeśli peer ma błędy i nie potrafi obsłużyć żądań negocjacji IPCP.
- noipv6
- Wyłącz negocjację IPv6CP i komunikację IPv6. Opcja ta powinna być używana tylko jeśli peer ma błędy i nie potrafi obsłużyć żądań negocjacji IPv6CP.
- noipdefault
- Wyłącza domyślne zachowania gdy nie jest podany lokalny adres IP, którym jest określenie (jeśli się da) lokalnego adresu IP z nazwy hosta. Po użyciu tej opcji, peer będzie musiał przekazać lokalny adres IP podczas negocjacji IPCP (chyba że podano go jawnie w linii poleceń lub w pliku z opcjami).
- noipx
- Wyłącz protokoły IPXCP i IPX. Opcja ta powinna być używana tylko jeśli peer ma błędy i nie potrafi obsłużyć żądań negocjacji IPXCP.
- noktune
- Przeciwieństwo opcji ktune; nie zezwala pppd na zmianę ustawień systemowych.
- nolog
- Nie wysyłaj komunikatów raportowych do pliku lub deskryptora. Opcja ta unieważnia opcje logfd i logfile. nomagic Wyłącz negocjację magicznych numerków. Po włączeniu tej opcji, pppd nie potrafi wykryć linii zapętlonej (looped-back). Opcja ta powinna być używana tylko jeśli peer ma błędy.
- nopcomp
- Wyłącz negocjację kompresji pól protokołu w obydwu kierunkach transmisji.
- nopersist
- Zakończ po dokonaniu i przerwaniu połączenia. Jest to wartość domyślna, chyba że użyto opcji persist lub demand.
- nopredictor1
- Nie przyjmuj kompresji Predictor-1.
- noproxyarp
- Wyłącz opcję proxyarp. Administrator może w ten sposób zabronić użytkownikom tworzenia wpisów proxy ARP. Wystarczy umieścić tę opcję w pliku /etc/ppp/options.
- notty
- Normalnie pppd wymaga urządzenia terminalowego. Po użyciu tej opcji, pppd alokuje sobie parę master-slave pseudo-tty i używa niewolnika jako urządzenie terminalowe. Pppd utworzy proces potomny, zachowujący się jako `przetaczacz znaków', przesyłający znaki między masterem pseudo-tty i jego standardowym wejściem i wyjściem. W efekcie, pppd będzie przesyłać znaki na swoje standardowe wyjście i odbierać je ze swojego standardowego wejścia nawet, jeśli nie są one urządzeniami terminalowymi. Opcja ta zwiększa oczywiście zajętość CPU. Przy użyciu tej opcji nie można podawać jawnej nazwy urządzenia.
- novj
- Wyłącz kompresję nagłówków TCP/IP w stylu Van Jacobsona. Tyczy się obu kierunków transmisji.
- novjccomp
- Wyłącz opcję kompresji ID-połączenia w kompresji nagłówka TCP/IP w stylu Van Jacobsona. Opcja ta powoduje, że pppd ani peer nie będą omijać bajtu ID-połączenia w skompresowanych Van Jacobsonowo nagłówkach TCP/IP.
- papcrypt
- Wskazuje, że wszystkie sekrety z pliku /etc/ppp/pap-secrets, używane do sprawdzania tożsamości peera są zakodowane i w związku z tym pppd nie powinien przyjmować haseł, które przed zakodowaniem są równoważne sekretom z pliku /etc/ppp/pap-secrets.
- pap-max-authreq n
- Ustaw maksymalną luczbę transmisji żądań uwierzytelnienia PAP na n. Domyślnie 10.
- pap-restart n
- Ustaw interwał restartu PAP (czas opóźnienia retransmisji) na n sekund. Domyślnie 3.
- pap-timeout n
- Ustaw maksymalny czas, przez który pppd ma oczekiwać na uwierzytelnienie od peera z pomocą PAP. Czas w sekundach, 0 oznacza brak limitu.
- pass-filter wyrażenie-filtru
- Określa filtr pakietowy, załączany do przesyłanych pakietów danych w celu określenia, które pakiety mogą przepłynąć. Pakiety odrzucane przez filtr są po cichu niszczone. Opcja ta może być używana w celu uchronienia pewnych demonów sieciowych (jak routed) od używania pasma uplinka lub do zestawienia podstawowych elementów zapory ogniowej. Składnia wyrażenia-filtru jest taka jak dla tcpdump(1), lecz kwalifikatory nieodpowiednie dla połączenia PPP, takie jak ether czy arp nie są dozwolone. Ogólnie, wyrażenie filtru powinno być ujęte w pojedyncze cudzysłowy celem zapobieżenia interpretacji przez powłokę. Zauważ, że możliwe jest załączenie różnych przymusów na wchodzące i wychodzące pakiety z użyciem kwalifikatorów inbound i outbound. Opcja ta jest obecnie dostępna jedynie pod NetBSD, a i to tylko w wypadku, gdy jądro i pppd zostały skompilowane ze zdefiniowanym PPP_FILTER.
- persist
- Nie kończ działania po zakończeniu połączenia. Zamiast tego spróbuj wznowić połączenie.
- plugin nazwapliku
- Załaduj plik obiektowy nazwapliku biblioteki dzielonej jako plugin. Jest to opcja uprzywilejowana.
- predictor1
- Zażądaj by peer używał kompresjii Predictor-1 i zgódź się na wysyłanie ramek podobnie skompresowanych o ile takie będzie życzenie. Opcja ta nie daje żadnego efektu jeśli jądro nie obsługuje kompresji Predictor-1.
- privgroup nazwagrupy
- Zezwol członkom grupy nazwagrupy na używanie uprzywilejowanych opcji. Jest to opcja uprzywilejowana. Używanie jej wymaga uwagi, gdyż nie można zapewnić, że członkowie danej grupy nie spróbują użyć pppd w celu uzyskania praw roota. Uznaj to za równoważne wstawieniu członków danej grupy do grupy kmem lub disk.
- proxyarp
- Dodaj wpis do tablicy ARP [Address Resolution Protocol] tego systemu. Ma on zawierać adres IP peera i adres ethernetowy tego systemu. Będzie to miało efekt taki, że peer dla innych systemów będzie wyglądał jak na lokalnym ethernecie.
- pty skrypt
- Określa polecenie skrypt, jako ośrodek komunikacji zamiast konkretnego urządzenia terminalowego. Pppd zaalokuje sobie parę master-slave pseudo-tty i użyje niewolnika jako swojego urządzenia terinalowego. skrypt zostanie uruchomiony w procesie potomnym z masterem pseudo-tty jako swoim standardowym wejściem i wyjściem. Przy używaniu tej opcji nie można podawać jawnej nazwy urządzenia. (Uwaga: jeśli w połączeniu z tą, użyta jest opcja record, proces potomny będzie miał łącza na swoim stadardowym wejściu i wyjściu.)
- receive-all
- Po użyciu tej opcji, pppd będzie przyjmował wszystkie znaki sterujących od peera, łącznie z tymi zaznaczonymi w asyncmapie odbiorczej. Bez tej opcji, pppd będzie niszczył te znaki, zgodnie z RFC1662. Opcja ta powinna być używana tylko jeśli peer jest zapchlony.
- record nazwapliku
- Podaje, że pppd powinien nagrywać wszystkie wysyłane i odbierane znaki do pliku o nazwie nazwapliku. Plik ten jest otwierany w trybie dopisywania, z użyciem ID użytkownika i jego uprawnieniami. Opcja ta jest zaimplementowana z użyciem pseudo-tty i procesu do przesyłania znaków między pseud-tty a prawdziwym urządzeniem szeregowym. Powoduje ona więc wzrost obciążenia CPU. Znaki są wybierane w formacie oznaczonym pieczątkami czasowymi, które mogą być wyświetlane w czytelnej postaci z użyciem programu pppdump(8).
- remotename nazwa
- Ustaw zakładaną nazwę zdalnego systemu w celu uwierzytelniania na nazwę.
- refuse-chap
- Po podaniu tej opcji, pppd nie zgodzi się na uwierzytelnianie się u peera z pomocą CHAP.
- refuse-pap
- Po podaniu tej opcji, pppd nie zgodzi się na uwierzytelnianie się u peera z pomocą PAP.
- require-chap
- Wymagaj od peera uwierzytelnienia się z pomocą CHAP [Challenge Handshake Authentication Protocol].
- require-pap
- Wymagaj od peera uwierzytelnienia się z pomocą PAP [Password Authentication Protocol].
- show-password
- Podczas logowania zawartości pakietów PAP opcja ta powoduje, że pppd pokazuje w łańcuchach raportowych hasła.
- silent
- Po podaniu tej opcji, pppd nie będzie przesyłać pakietów LCP do rozpoczęcia połączenia przed odebraniem od peera prawidłowego pakietu LCP (jak dla opcji `passive' w starożytnych opcjach pppd).
- sync
- Użyj synchronicznego kodowania szeregowego HDLC zamiast asynchronicznego. Urządzenie używane przez pppd musi mieć obsługę synchroniczną. Obecnie pod linuksem i FreeBSD 2.2.8 i późniejszych wspierane są adaptery Microgate SyncLink.
- updetach
- Po podaniu tej opcji, pppd odłączy się od terminala sterującego po zestawieniu połączenia ppp (do momentu kiedy pojawi się pierwszy kontrolny protokół sieciowy, zwykle protokół IP).
- usehostname
- Wymuś użycie nazwy hosta (z dodana ewentualnie nazwą domeny) jako nazwy systemu lokalnego w celach uwierzytelniania (przesłania opcję name). Opcja ta nie jest zwykle potrzebna, gdyż opcja name jest uprzywilejowana.
- usepeerdns
- Zapytaj peera o dwa serwery DNS. Adresy przekazane przez peera są przekazywane od peera do pliku /etc/ppp/ip-up przez zmienne środowiskowe DNS1 i DNS2. Dodatkowo, pppd utworzy plik /etc/ppp/resolv.conf, zawierający jedną lub dwie linie z adresami, przekazanymi przez peera.
- user nazwa
- Ustaw nazwę używaną do uwierzytelniania systemu lokalnego u peera na nazwę.
- vj-max-slots n
- Ustawia liczbę slotów połączeń, używanych w kodzie kompresji nagłówka TCP/IP Van Jacobsona. Liczba musi zawierać się między 2 a 16 (włącznie).
- welcome skrypt
- Uruchom program skrypt przed rozpoczęciem negocjacji PPP, ale po skrypcie connect. Wartość tej opcji nadana z uprzywilejowanego źródła nie może byc przeciążona przez nieuprzywilejowanego użytkownika.
- xonxoff
- Włącz programowe sterowanie przepływem (XON/XOFF).
PLIKI Z OPCJAMI¶
Opcje mogą być pobierane z linii poleceń lub z plików. Pppd odczytuje je z plików /etc/ppp/options, ~/.ppprc i z /etc/ppp/options.nazwatty (w tej kolejności) przed przetworzeniem opcji z linii poleceń. (W rzeczywistości, opcje linii poleceń są skanowane w celu znalezienia nazwy terminala przed odczytem options.nazwatty.) Przy formowaniu nazwy pliku options.nazwatty, usuwany jest przedrostek /dev/,a wszelkie dodatkowe znaki / są zamieniane na kropki.
Plik z opcjami jest analizowany jako seria słów, rozdzielonych białymi spacjami. Białe spacje mogą być załączane do słowa przez ujęcie całości w podwójne cudzysłowy ("). Lewy ukośnik może cytować następujący po nim znak. Znak krzyżyka (#) rozpoczyna komentarz, trwający aż do końca linii. Nie ma ograniczeń w używaniu opcji file lub call w pliku z opcjami.
BEZPIECZEŃSTWO¶
pppd udostępnia administratorom wydajną kontrolę dostępu dla określonych użytkowników, bez strachu o poświęcanie bezpieczeństwa serwera lub sieci, w ktrej się znajduje. Kontrola ta polega na ograniczaniu adresów IP, jakie może mieć peer, zależnie od identyfikacji i ograniczeń co do opcji, których może używać nieuprzywilejowany użytkownik. Różne opcje pppd są uprzywilejowane--są to głównie opcje, które mogą wprowadzać zagrożenia w konfiguracji; opcje te mogą być przyjmowane jedynie z plików znajdujacych się pod kontrolą administratora systemu lub gdy pppd jest uruchamiane z poziomu roota.
Domyślnym zachowaniem pppd jest zezwalanie nieuwierzytelnionemu peerowi na używanie danego adresu IP tylko jeśli system nie ma jeszcze trasy do tego adresu. Na przykład, system o stałym połączeniu do szerszego internetu normalnie ma trasę domyślną, więc wszystkie peery muszą się uwierzytelnić aby zestawić połączenie. Na takim systemi opcja auth jest domyślna. Z drugiej strony, system gdzie łącze ppp jest jedynym połączeniem do internetu normalnie nie ma trasy domyślnej, więc peer będzie w stanie używać prawie dowolnego adresu IP bez uwierzytelniania.
Jak wykazano wyżej, niektóre opcje bezpieczeństwa są uprzywilejowane, co znaczy, że nie mogą być używane przez zwykłego użytkownika uruchamiającego suid-root pppd--czy to z linii poleceń czy z pliku ~/.ppprc czy z opcji file. Opcje uprzywilejowane mogą być używane w pliku /etc/ppp/options lub w dowolnym pliku z opcjami, odczytywanym opcją call. Jeśli pppd jest używane przez roota, opcje uprzywilejowane mogą być używane bez ograniczeń.
Przy otwieraniu urządzenia pppd używa ID wołąjącego użytkownika lub UID roota (tj. 0), zależnie czy nazwa urządzenia została podana przez użytkownika czy administratora. Jeśli nazwa pochodzi ze źródła uprzywilejowanego, tj. z /etc/ppp/options lub z pliku z opcjami, odczytanego przy użyciu opcji call, pppd używa pełnych praw roota do dostępu do urządzenia. Tak więc tworzenie odpowiedniego pliku w /etc/ppp/peers umożliwia administratorowi zezwolenie użytkownikom na zestawianie połączeń ppp poprzez urządzenie, do którego normalnie nie mieliby prawa dostępu. W przeciwnym wypadku, pppd używa przy otwieraniu urządzenia rzeczywistego UID użytkownika.
UWIERZYTELNIANIE¶
Uwierzytelnianie jest procesem przekonywania przez peera drugiej strony o swojej tożsamości. Wymaga to wysłania najpierw przez peera swojej nazwy wraz z informacją sekretną, która może pochodzić tylko od autoryzowanego użytkownika o tej nazwie. W takiej wymianie pierwszego peera nazywa się "klientem", a drugiego "serwerem". Klient ma nazwę która określa go dla serwera, a serwer ma również nazwę, która określa go dla klienta. Ogólnie, klient dzieli pewien sekret (lub hasło) z serwerem i uwierzytelnia się poprzez udowodnienie, że zna sekret. Często nazwy używane w uwierzytelnianiu odpowiadają internetowym nazwom hostów peerów, lecz nie jest to konieczne.
Obecnie pppd obsługuje dwa protokoły uwierzytelniania: PAP i CHAP. PAP powoduje, że klient wysyła swoją nazwę oraz hasło do serwera. CHAP natomiast powoduje, że serwer wysyła klientowi wezwanie (pakiet wezwania zawiera nazwę serwera). Klient musi odpowiedzieć słowami, zawierającymi nazwę plus wartość hash, wyciągniętą z dzielonego sekretu i wezwania, udowadniając w ten sposób, że zna sekret.
Protokół PPP, będąc symetrycznym, umożliwia obydwu peerom wymaganie uwierzytelnienia siebie nawzajem. W tym wypadku następują dwie oddzielne i niezależne wymiany pakietów uwierzytelniających. Obydwie wymiany mogą używać różnych protokołów uwierzytelniania i, w ogólności, można w nich używać różnych nazw.
Domyślnym zachowaniem pppd jest zgoda na uwierzytelnienie po zażądaniu i nie wymaganie uwierzytelnienia od peera. Jednak pppd nie zgodzi się na uwierzytelnienie się w konkretnym protokole jeśli nie ma sekretów, których mógłby w tym celu użyć.
Pppd przechowuje swoje sekrety w plikach sekretów (/etc/ppp/pap-secrets dla PAP i /etc/ppp/chap-secrets dla CHAP). Obydwa pliki sekretów mają ten sam format. Pliki te mogą zawierać sekrety dla pppd, używane przy uwierzytelnianiu się dla innych systemów oraz sekrety dla pppd, używane przy uwierzytelnianiu innych systemów dla nas.
Każda linia pliku sekretów zawiera jeden sekret. Dany sekret jest specyficzny dla danej konfiguracji klienta/serwera - może być używana tylko przez tego klienta do uwierzytelnienia się przed tym serwerem. Z tego powodu każda linia ma trzy pola: nazwę klienta, serwera oraz sekret. Za polami tymi może nastąpić lista adresów IP, których dany klient może użyć po połączeniu z danym serwerem.
Plik z sekretami jest analizowany jako słowa, jak plik z opcjami, więc nazwa klienta, serwera i sekretów muszą być pojedynczymi słowami, gdzie osadzone spacje lub znaki specjalne można cytować lub ujmować w cudzysłowy. Zauważ, że rozmiar liter jest w przypadku nazw klienta i serwera oraz sekretu istotny.
Jeśli sekret rozpoczyna się od `@', to reszta jest rozumiana jako nazwa pliku, z którego odczytać sekret. "*" jako klient lub serwer odpowiada dowolnej nazwie. Podczas wybierania sekretu pppd wybiera najlepsze dopasowanie, tj. dopasowanie wykorzystujące najmniej jokerów.
Wszelkie następujące słowa tej samej linii są uważane za listę adresów IP dopuszczalnych dla klienta. Jeśli dane są tylko 3 słowa, lub jeśli pierwszym słowem jest "-", to zabronione są wszystkie adresy IP. Aby udostępnić dowolny adres, użyj "*". Słowo rozpoczynające się od "!" wskazuje, że podany adres nie jest dopuszczalny. Adres może mieć na końcu "/" i liczbę n, określającą całą podsieć, tj. wszystkie adresy, mające taką samą wartość w najbardziej znaczących n bitach. W tej postaci adres może mieć na końcu znak plus ("+"), określający, że jeden z adresów podsieci jest autoryzowany w oparciu o numer używanej jednostki sieciowego interfejsu ppp. W tym przypadku część hosta adresu będzie ustawiana na numer jednostki plus jeden.(???)
W ten sposób plik z sekretami zawiera sekrety używane do uwierzytelniania siebie u innych i innych u siebie. Gdy pppd uwierzytelnia peera (sprawdzając jego tożsamość), wybiera sekrety, zawierające nazwę peera w pierwszym polu i nazwę systemu lokalnego w drugim. Nazwa systemu lokalnego odpowiada nazwie hosta z doklejoną nazwy domeny przy użyciu opcji domain. To domyślne zachowanie można przeciążyć opcją name, poza przypadkiem użycia opcji usehostname.
Gdy pppd wybiera sekret używany do uwierzytelnienia się u peera, najpierw określa, jakiej nazwy użyć do przedstawienia się peerowi. Nazwa ta może być podana przez użytkownika opcją user. Jeśli opcja ta nie jest użyta, nazwa odpowiada nazwie systemu lokalnego, określanej jak opisano w poprzednim paragrafie. Następnie pppd szuka sekretów o tej nazwie w pierwszym polu i o nazwie peera w drugim. Pppd pozna nazwę peera w mechanizmie CHAP gdyż ten wyśle ją w pakiecie wyzwania. Jednak jeśli używany jest PAP, pppd będzie musiał określić nazwę peera z opcji podanych przez użytkowika. Użytkownik może określić nazwę peera bezpośrednio opcją remotename. W przeciwnym wypadku, jeśli adres IP zdalnego hosta podano nazwą (a nie numerycznie), to zostanie użyta ta nazwa peera. Gdy to się nie powiedzie, pppd użyje łańcucha zerowego jako nazwy peera.
Podczas uwierzytelniania peera przez PAP, przekazane hasło jest najpierw porównywane z sekretem z pliku sekretów. Jeśli hasło nie pasuje do sekretu, to jest ono kodowane z użyciem crypt() i porównywane raz jeszcze. W ten sposób, sekrety uwierzytelniające mogą być przechowywane w postaci zaszyfrowanej. Jeśli podana jest opcja papcrypt, pierwsze sprawdzenie (bez szyfrowania) jest pomijane.
Co więcej, jeśli podana była opcja login, nazwa użytkowika i hasło są sprawdzane również według systemowej bazy haseł. W rezultacie, administrator systemu może skonfigurować plik sekretów pap na zezwolenie dostępu do PPP jedynie dla określonych użytkowników i ograniczyć zestaw adresów IP, które każdy z użytkowników może wykorzystać. Zazwyczaj przy użyciu opcji login, sekret w /etc/ppp/pap-secrets wynosi "", co pasuje do dowolnego hasła, przekazanego przez peera. Zapobiega to potrzebie posiadania tego samego sekretu w dwóch miejscach.
Uwierzytelnianie musi być zakończone przed IPCP (lub dowolnym innym NCP). Jeśli peer musi się uwierzytelnić, a nie uda się mu to, pppd zakończy połączenie (zamykając LCP). Jeśli IPCP wynegocjuje niedopuszczalny adres IP dla hosta zdalnego, IPCP zostanie zamknięte. Pakiety IP mogą być przesyłane tylko jeśli IPCP jest otwarte.
W niektórych przypadkach oczekiwane jest umożliwienie niektórym hostom, które nie mogą się uwierzytelnić połączenie i używanie ograniczonego zbioru adresów IP, nawet jeśli lokalny host ogólnie wymaga uwierzytelnienia. Jeśli peer odmówi uwierzytelnienia po takim żądaniu, pppd bierze to za równoważność uwierzytelnienia przy użyciu pustego łańcucha nazwy użytkownika i hasła. W ten sposób, dodając linię sekretów z pustym klientem i hasłem, można umożliwić ograniczony dostęp dla hostów, które nie chcą się uwierzytelnić.
ROUTING¶
Po pomyślnym zakończeniu negocjacji IPCP pppd poinformuje jądro o lokalnym i zdalny adresie IP interfejsu ppp. Jest to wystarczający zabieg do utworzenia trasy do zdalnego końca połączenia, co umożliwia peerom wymianę pakietów IP. Komunikacja z innymi maszynami wymaga w ogólności dalszych modyfikacji tablic routingu i/lub tablic ARP. W większości wypadków wystarczające są opcje defaultroute i/lub proxyarp, lecz w niektórych wypadkach wymagana jest dalsza interwencja. Można do tego wykorzystać skrypt /etc/ppp/ip-up.
Czasami wymagane jest dodanie domyślnej trasy poprzez zdalny host, jak w wypadku maszyny, której jedynym połączeniem z internetem jest interfejs ppp. Opcja defaultroute powoduje, że pppd tworzy taką domyślną trasę po pojawieniu IPCP i kasuje ją po zakończeniu połączenia.
W niektórych przypadkach wymagane jest użycie proxy ARP, np. na maszynie serwerowej podłączonej do LAN, aby reszta hostów mogła komunikować się ze zdalnym hostem. Opcja proxyarp powoduje, że pppd szuka interfejsu sieciowego o tej samej podsieci co zdalny host (interfejs obsługujący broadcast i ARP, który jest włączony i nie jest interfejsem ppp lub loopback). Po znalezieniu, pppd tworzy perrmanentny publikowany wpis ARP z adresem IP zdalnego hosta i adresem sprzętowym znalezionego interfejsu sieciowego.
Gdy używana jest opcja demand, adresy IP są już ustawione przy pojawieniu IPCP. Jeśli pppd nie było w stanie wynegocjować tego samego adresu, którego używało do konfiguracji interfejsu (np. gdy peer jest ISP, używającym dynamicznych IP), pppd musi zmienić adresy interfejsu IP na wynegocjowane. Może to zniszczyć istniejące połączenia i używanie tego typu wydzwaniania z dynamicznymi peerami nie jest zalecane.
PRZYKŁADY¶
Następujące przykłady zakładają, że plik /etc/ppp/options zawiera opcję auth (jak w domyślnym pliku /etc/ppp/options w dystrybucji ppp).
Prawdopodbnie najpopularniejszym zastosowaniem pppd jest wykręcanie numeru ISP. Może to być dokonywane poleceniem takim, jak
- pppd call isp
gdzie plik /etc/ppp/peers/isp jest skonfigurowany przez administratora systemu na zawieranie czegoś w rodzaju:
- ttyS0 19200 crtscts
connect '/usr/sbin/chat -v -f /etc/ppp/chat-isp'
noauth
W tym przykładzie używamy chat(8) do wykręcenia numeru ISP i przechodzimy przez wymaganą sekwencję logowania. Plik /etc/ppp/chat-isp zawiera skrypt używany przez chat; może na przykład zawierać coś w rodzaju
- ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
ABORT "BUSY"
ABORT "Username/Password Incorrect"
"" "at"
OK "at&d0&c1"
OK "atdt2468135"
"name:" "^Umyuserid"
"word:" "\qmypassword"
"ispts" "\q^Uppp"
"~-^Uppp-~"
Dla dalszych szczegółów obejrzyj stronę podręcznika do chat(8).
Pppd może również być używane do udostępniania usługi dial-in dla użytkowników. Jeśli użytkownicy mają już konta, to najprostszym sposobem skonfigurowania usługi ppp jest zezwalanie użytkownikom na logowanie się na ich konta i uruchamianie pppd z pomocą komendy takiej, jak
- pppd proxyarp
Aby umożliwić użytkownikowi używanie zabudowy PPP, musisz zaalokować adres IP dla maszyny użytkowika i utworzyć wpis w /etc/ppp/pap-secrets lub /etc/ppp/chap-secrets (zależnie od metody uwierzytelniania, preferowanej przez użytkownika), aby użytkownik mógł się uwierzytelnić. Na przykład, jeśli Joe ma maszynę o nazwie "joespc", która może wdzwaniać się na maszynę o nazwie "server" i używać adresu IP joespc.my.net, to w pliku z sekretami należy umieścić następujący wpis:
- joespc server "joe's secret" joespc.my.net
Alternatywnie możesz utworzyć użytkownika o nazwie (np.) "ppp", którego powłoką zgłoszeniową jest pppd i którego katalogiem domowym jest /etc/ppp. Opcje używane przez pppd w takim trybie mogą być wstawione do /etc/ppp/.ppprc.
Jeśli twoje połączenie szeregowe jest trochę bardziej złożone niż kawałek kabla, to możesz być zmuszonym zaaranżować jakieś znaki sterujące do cytowania. Na przykład często przydatne jest cytowanie XON (^Q) i XOFF (^S) przy użyciu asyncmap a0000. Jeśli ścieżka zawiera telneta, to prawdopodobnie powinieneś również cytować ^] (asyncmap 200a0000). Jeśli ścieżka zawiera rlogin, to na końcówce rloginowej powinieneś używać opcji escape ff, gdyż wiele implementacji rlogin nie jest przezroczystych; usuwają one sekwencje [0xff, 0xff, 0x73, 0x73, plus dowolnych osiem bajtów] ze strumienia.
DIAGNOSTYKA¶
Komunikaty są przesyłane do demona sysloga przy użyciu zabudowy LOG_DAEMON. (Może to być przesłonięte przez rekompilowanie pppd z makrem LOG_PPP przedefiniowanym na pożądaną zabudowę.) Aby zobaczyć komunikaty o błędach i debuggowe, musisz wyedytować plik /etc/syslog.conf tak, aby przekierowywał komunikaty na określone urządzenie wyjściowe lub plik.
Opcja debug powoduje, że zawartość wszystkich przesyłanych pakietów kontrolnych jest raportowana. Tzn. wszystkie pakiety LCP, PAP, CHAP lub IPCP. Może to być przydatne jeśli negocjacja ppp się nie powodzi lub jeśli zawodzi uwierzytelnianie. Jeśli debuggowanie jest włączone podczas kompilacji, opcja debug powoduje również raportowanie innych komunikatów debuggowych.
Debuggowanie może być też włączone lub wyłączone przez wysłanie do procesu pppd sygnału SIGUSR1. Sygnał ten działa jak przełącznik.
KOD WYJŚCIA¶
Kod wyjścia pppd jest ustawiany do wskazania czy zaszedł błąd lub pokazania powodu zakończenia połączenia. Dopuszczalne wartości to:
- 0
- Pppd odłączyło się od terminala, lub też połączenie zostało pomyślnie zestawione i zakończone na żądanie peera.
- 1
- Zaistniajł jakiś błąd krytyczny, taki jak niepowodzenie podstawowego wywołania systmowego czy brak pamięci.
- 2
- W przetwarzaniu podanych opcji wykryto błąd, np. użyto dwóch wykluczających się opcji.
- 3
- Pppd nie jest suid-root, a wołający użytkownik nie jest rootem.
- 4
- Jądro nie daje wsparcia ppp, tj. sterownik ppp jądra nie jest załączony lub nie może zostać załadowany.
- 5
- Pppd zakończyło działanie przez SIGINT, SIGTERM lub SIGHUP.
- 6
- Port szeregowy nie mógł zostać zablokowany.
- 7
- Port szeregowy nie mógł zostać otwarty.
- 8
- Skrypt connect się nie powiódł (zwrócił niezerowy kod wyjścia).
- 9
- Polecenie podane jako argument opcji pty nie mogło zostać uruchomione.
- 10
- Negocjacja PPP się nie powiodła, tj. nie osiągnęła punktu w którym działałby choć jeden protokół sieciowy (np. IP).
- 11
- System peera nie przeszedł procedury uwierzytelniania.
- 12
- Połączenie zostało pomyślnie zestawione i zakończone z powodu bezczynności.
- 13
- Połączenie zostąło pomyślnie zestawione i zakończone z powodu limitu czasu połączenia.
- 14
- Wynegocjowano callback i wkrótce pojawi się nadchodzący telefon.
- 15
- Połączenie zostało zakończone gdyż peer nie odpowiadał na żądania echa.
- 16
- Połączenie zostało zakończone przez modem, który odwiesił słuchawkę.
- 17
- Negocjacja PPP nie powiodła się przez wykrycie szeregowego zapętlenia (loopback).
- 18
- Skrypt init się nie powiódł (zwrócił niezerowy kod wyjścia).
- 19
- Nie uwierzytelniliśmy się u peera.
SKRYPTY¶
Pppd na różnych etapach działania wywołuje różne skrypty, używane do dokonywania specyficznego dla stacji przetwarzania. Skrypty te są zwykle skryptami powłoki, lecz mogą równie dobrze być programami binarnymi. Pppd nie czeka aż skrypty skończą działanie. Skrypty są wywoływane z uprawnieniami roota (z rzeczywistym i efektywnym UID 0), więc mogą robić takie rzeczy jak odświeżanie tablic routingu czy uruchamianie uprzywilejowanych demonów. Uważaj, by skrypty te nie osłabiły bezpieczeństwa systemu. Pppd uruchamia skrypty ze standardowym wejściem, wyjściem i wyjściem błędu przekierowanym na /dev/null i ze środowiskiem, które jest puste, poza pewnymi zmiennymi środowiskowymi, które dają informacje o łączu. Zmienne te są następujące:
- DEVICE
- Nazwa używanego urządzenia szeregowego tty.
- IFNAME
- Nazwa używanego interfejsu sieciowego.
- IPLOCAL
- Adres IP lokalnego końca połączenia. Jest to ustawione tylko po przejściu IPCP.
- IPREMOTE
- Adres IP zdalnego końca połączenia. Jest to ustawione tylko po przejściu IPCP.
- PEERNAME
- Uwierzytelniona nazwa peera. Jest to ustawiane tylko jeśli peer się uwierzytelnił.
- SPEED
- Szybkość urządzenia tty.
- ORIG_UID
- ID użytkownika, który wywołał pppd.
- PPPLOGNAME
- Nazwa użytkownika, który wywołał pppd. Jest to zawsze ustawione.
Dla skryptów ip-down i auth-down, pppd ustawia ponadto następujące zmienne, dające statystyki połączenia:
- CONNECT_TIME
- Liczba sekund od kiedy rozpoczęła się negocjacja PPP, aż do zakończenia połączenia.
- BYTES_SENT
- Liczba wysłanych bajtów (na poziomie portu szeregowego) podczas połączenia.
- BYTES_RCVD
- Liczba odebranych podczas połączenia bajtów (na poziomie portu szeregowego).
- LINKNAME
- Logiczna nazwa łącza, ustawiana opcją linkname.
Pppd wywołuje następujące skrypty, o ile one istnieją. Nie jest błędem, jeśli ich nie ma:
- /etc/ppp/auth-up
- Program lub skrypt wykonywany po uwierzytelnieniu przez zdalny system. Jest wywoływany z parametrami
- nazwa-interfejsu nazwa-peera nazwa-użytkownika urządzenie-tty szybkość
- Zauważ, że skrypt ten nie jest wykonywany jeśli peer się nie uwierzytelni, np. po użyciu opcji noauth.
- /etc/ppp/auth-down
- Program lub skrypt, który jest uruchamiany przy wyłączaniu połączenia, jeśli uruchamiano wcześniej /etc/ppp/auth-up. Jest wykoywany w ten sam sposób co do parametrów, jak auth-up.
- /etc/ppp/ip-up
- Program lub skrypt, który jest wykonywany gdy łącze jest w stanie przesyłać lub odbierać pakiety IP (tj. po przejściu IPCP). Jest wykonywany z parametrami
- nazwa-interfejsu urządzenie-tty szybkość adres-lokalnego-IP adres-zdalnego-IP ipparam
- /etc/ppp/ip-down
- Program lub skrypt, który jest wykonywany gdy łącze nie jest już w stanie przesyłać pakiety IP. Skrypt ten może być wykonywany do odtwarzania zmiany wywołanych przez /etc/ppp/ip-up. Jest wywoływany z tymi samymi parametrami co skrypt up-up.
- /etc/ppp/ipv6-up
- Podobne do /etc/ppp/ip-up, lecz jest wykonywane gdy łącze jest w stanie przesyłać pakiety IPv6. Jest wykonywane z parametrami
- nazwa-interfejsu urządzenie-tty szybkość adres-lokalnego-łącza adres-zdalnego-łącza ipparam
- /etc/ppp/ipv6-down
- Podobne do /etc/ppp/ip-down, lecz jest wykonywane gdy łącze nie jest w stanie już transmitować pakietów IPv6. Jest wykonywane z tymi samymi parametrami co skrypt ipv6-up.
- /etc/ppp/ipx-up
- Program lub skrypt, który jest wykonywany gdy łącze jest w stanie przesyłać lub odbierać pakiety IPX (tj. po przejściu IPXCP). Jest wykonywany z parametrami
- nazwa-interfejsu urządzenie-tty szybkość numer-sieci lokalny-adres-węzła-IPX zdalny-adres-węzła-IPX lokalny-protokół-trasujący-IPX zdalny-protokół-trasujący-IPX lokalna-nazwa-routera-IPX zdalna-nazwa-routera-IPX ipparam pid-pppd
- Pola lokalnego/zdalnego-protokołu-trasującego-IPX mogą być jednymi z następujących:
- NONE określa brak protokołu trasującego
RIP określa chęć używania RIP/SAP
NLSP określa chęć używania Novell NLSP
RIP NLSP określa chęć używania RIP/SAP i NLSP
- /etc/ppp/ipx-down
- Program lub skrypt, który jest wykonywany gdy łącze nie może już przesyłać pakietów IPX. Skrypt ten może być używany do anulowania efektów działania skryptu ipx-up. Jest wywoływany z tymi samymi parametrami co ipx-up.
PLIKI¶
- /var/run/pppn.pid (BSD lub Linux), /etc/ppp/pppn.pid (inne)
- PID procesu pppd na jednostce interfejsu ppp numer n.
- /var/run/ppp-nazwa.pid (BSD lub Linux), /etc/ppp/ppp-nazwa.pid (inne)
- PID procesu pppd na logicznym łączu nazwa (zobacz opcję linkname).
- /etc/ppp/pap-secrets
- Użytkownicy, hasła i adresy IP do uwierzytelniania PAP. Plik ten powinien należeć do roota i nie nadawać się do odczytu/zapisu dla innych użytkowników. W innym wypadku pppd zgłosi ostrzeżenie.
- /etc/ppp/chap-secrets
- Nazwy, sekrety i adresy IP dla uwierzytelniania CHAP. Podobnie jak dla powyższego, plik ten również powinien być własnością roota i niczyją inną. W przeciwnym wypadku pppd zgłosi ostrzeżenie.
- /etc/ppp/options
- Domyślne opcje pppd systemu, odczytywane przed opcjami użytkownika lub linii poleceń.
- ~/.ppprc
- Opcje użytkownika, odczytywane przed /etc/ppp/options.nazwatty.
- /etc/ppp/options.nazwatty
- Domyślne opcje systemowe dla używanego portu szeregowego, odczytywane po ~/.ppprc. W części nazwatty tej nazwy pliku usunięte jest poprzedzeające /dev/, a wszelkie ukośniki są zamienione na kropki.
- /etc/ppp/peers
- Katalog, zawierający pliki z opcjami, które mogą zawierać uprzywilejowane opcje nawet jeśli pppd został wywołany przez użytkownika innego niż root. Administrator systemu może tworzyć w tym katalogu pliki z opcjami, zezwalającymi nieuprzywilejowanym użytkownikom wydzwanianie bez wymagania uwierzytelnienia od peera, lecz tylko do zaufanych peerów.
ZOBACZ TAKŻE¶
- RFC1144
- Jacobson, V. Kompresowanie nagłówków TCP/IP dla wolnych łączy szeregowych. Luty 1990.
- RFC1321
- Rivest, R. Algorytm Message-Digest MD5. Kwiecień 1992.
- RFC1332
- McGregor, G. PPP Internet Protocol Control Protocol (IPCP). Maj 1992.
- RFC1334
- Lloyd, B.; Simpson, W.A. Protokoły uwierzytelniania PPP. Październik 1992.
- RFC1661
- Simpson, W.A. Protokół Point-to-Point (PPP). Lipiec 1994.
- RFC1662
- Simpson, W.A. PPP w ramkach typu HDLC. Lipiec 1994.
- RFC2472
- Haskin, D. IP wersja 6 w PPP Grudzień 1998.
UWAGI¶
Następujące sygnały mają podane działanie po wysłaniu do pppd:
- SIGINT, SIGTERM
- Sygnały te powodują, że pppd kończy połączenie (zamykając LCP), odtwarza ustawienia urządzenia szeregowego i kończy działanie.
- SIGHUP
- Sygnał ten powoduje, że pppd kończy połączenie, odtwarza ustawienia portu szeregowego i zamyka urządzenie szeregowe. Jeśli podana jest opcja persist lub demand, pppd spróbuje otworzyć urządzenie szeregowe i rozpocząć nowe połączenie (po okresie przetrzymania--holdoff). W przeciwnym wypadku, pppd zakończy działanie. Jeśli sygnał ten jest odebrany podczas okresu przetrzymania, powoduje on, że pppd kończy ten okres natychmiast.
- SIGUSR1
- Sygnał ten przełącza stan opcji debug.
- SIGUSR2
- Sygnał ten powoduje, że pppd renegocjuje kompresję. Może to być przydatne do ponownego włączania kompresji po jej wyłączeniu w wyniku krytycznego błędu dekompresji. (Błędy takie w ogólności wskazują na błąd w którejś implementacji.)
AUTORZY¶
Paul Mackerras (Paul.Mackerras@cs.anu.edu.au), w oparciu o wcześniejsze prace Drewa Perkinsa, Brada Clementsa, Karla Foxa, Grega Christy'ego, i Brada Parkera.