Łącze przechodzi uwierzytelnienie, klient zgłasza połączenie, a sekundę później log zamyka się wpisem LCP zakończone przez peera. Ten wiersz pochodzi z negocjacji PPP wewnątrz tunelu GRE, więc transport już działał, a oba końce nie zgadzały się co do opcji łącza. Hasła i adresy serwera są tu zwykle niewinne. Polityka szyfrowania jest pierwszą rzeczą do porównania, a w Linuksie plik peera pppd jest pierwszym miejscem, w które należy zajrzeć.

Co awaria LCP mówi o etapie PPP

PPTP opakowuje PPP w GRE: połączenie sterujące TCP 1723 przygotowuje wywołanie, GRE przenosi ładunek, a następnie LCP negocjuje opcje, takie jak protokół uwierzytelniania, kompresja i MPPE. Peer kończy LCP, gdy wymagana opcja nie jest po jego stronie akceptowalna. Log, w którym wymiana CHAP lub MSCHAPv2 kończy się, a LCP kończy się zaraz potem, to odrzucenie polityki, a nie awaria osiągalności. Jeśli tunel w ogóle nie dochodzi do negocjacji, sprawdź pppd i jego wtyczkę, zanim przeczytasz wiersz LCP.

Dwa warunki wstępne łatwo przeoczyć. Binarka pppd musi istnieć, a wtyczka PPTP wymieniona w pliku peera musi być zainstalowana; brakujący pakiet kończy wywołanie, zanim zostanie omówiona jakakolwiek opcja.

Włącz MPPE po stronie, która go wymaga

Prawdziwą decyzją jest to, która strona posiada politykę szyfrowania. Klient może zaproponować MPPE, wymagać go lub odmówić, a serwer dokonuje tego samego wyboru. Gdy obie strony go wymagają, łącze wstaje; gdy jedna wymaga, a druga odmawia, LCP się kończy.

pty "pptp vpn.example.net --nolaunchpppd"
name alice
remotename PPTP
require-mppe-128

Załaduj moduł poleceniem modprobe ppp_mppe przed wybieraniem, bo bez niego require-mppe-128 zawodzi. W Windows równoważną kontrolką jest karta zabezpieczeń wpisu VPN, gdzie klientowi trzeba kazać wymagać szyfrowania, zamiast akceptować to, co oferuje serwer. Jeśli serwer nadal kończy LCP, zapytaj jego operatora, czy MPPE jest obowiązkowe, opcjonalne czy wyłączone, ponieważ klient nie może wynegocjować ochrony, której serwer odmawia. Wyłączanie szyfrowania, żeby komunikat zniknął, to zły kierunek: usuwa jedyną ochronę, jaką ma ten protokół.

Zapisz działający plik peera przed edycją. Błędnie wpisany wiersz require-mppe odtwarza ten sam ogólny błąd LCP i przenosi cię z powrotem na początek.

Czytaj własny log pppd, a nie aplet

Aplety pulpitu pokazują rozłączenie i ukrywają przyczynę, więc przeczytaj relację demona o jednej próbie. W systemach z systemd komunikat trafia do journala; starsze konfiguracje piszą do tradycyjnych plików logów.

journalctl --since "10 min ago" | grep -i -E "pppd|lcp|mppe"
tail -n 50 /var/log/syslog

Przeszukaj okno wokół jednego połączenia, a nie cały dzień ponownych połączeń, aby odrzucona opcja była łatwa do zauważenia. pppd zwykle podaje nazwę opcji i odpowiedź peera, co mówi, czy zmienić własną propozycję, czy poprosić stronę serwera o złagodzenie wymagania. Prowadź próby z sygnaturami czasu, bo porównywanie dwóch logów ma sens tylko wtedy, gdy wiesz, które wiersze należą do którego połączenia. Gdy nie pojawia się żadna wymiana LCP, usterka jest wcześniej w łańcuchu, a MPPE nie jest podejrzanym.

Utrzymaj poprawkę przy ponownych połączeniach: nazwy hooków i MTU

Gdy łącze już się utrzymuje, dwa szczegóły decydują, czy przetrwa ponowne połączenie. Hooki mieszkają w /etc/ppp/ip-up.d i /etc/network/if-up.d, a oba katalogi przetwarza run-parts, którego filtr nazw plików odrzuca wszystko z kropką. Dlatego skrypt o nazwie set-pptp.sh jest pomijany, a set-pptp jest wykonywany. Sprawdź nazwę, zanim zaczniesz debugować zawartość skryptu, a potem ustaw mniejszy MTU wewnątrz tego hooka, aby każdy nowy interfejs ppp odziedziczył go bez ręcznego polecenia.

run-parts --test /etc/ppp/ip-up.d
ip link set dev ppp0 mtu 1200

Aby celowo zakończyć sesję, celuj w pid zapisany przez pppd, zamiast dopasowywać nazwy procesów, ponieważ zabicie wszystkiego, co zawiera ppp, zrywa też niepowiązane łącza. PPTP jest przestarzałe, a MS-CHAPv2 jest słaby, więc traktuj te kontrole jako konserwację łącza, które musi dalej działać, a nie jako powód do wdrażania PPTP w nowym miejscu.

Powiązane artykuły