Naciśnij połącz, a w maszynie z Linuxem zmieniają się trzy rzeczy: pojawia się interfejs, instalowane są trasy i resolver zaczyna odpowiadać inaczej. Większość błędów konfiguracji bierze się z tego, że jedna z tych trzech rzeczy dzieje się bez pozostałych, albo z tego, że dwa programy nie zgadzają się, kto jest ich właścicielem. Zrozumienie kolejności wyjaśnia awarię szybciej niż czytanie wyjścia dziennika klienta.

Interfejs pojawia się, zanim cokolwiek zacznie działać

Klient tunelu otwiera interfejs wirtualny i przekazuje mu pakiety. Urządzenie TUN przenosi pakiety IP, czego potrzebuje VPN routowany; urządzenie TAP przenosi ramki Ethernet, czego potrzebuje konstrukcja mostkowana. Moduł jądra dostarcza urządzenie, a klient jest jego właścicielem przez cały czas trwania sesji.

Podniesienie interfejsu nie jest tym samym co działający tunel. Interfejs może istnieć z adresem, gdy drugi koniec jest nieosiągalny, i dlatego lista interfejsów jest pierwszym, a nie ostatnim sprawdzeniem. Urządzenie, które zgłasza, że jest podniesione, opisuje widok jądra na łącze wirtualne, a nie gotowość partnera do odpowiedzi.

Zostaw dostarczony tryb interfejsu w spokoju. Zmiana profilu TUN na TAP nie czyni serwera routowanego mostkowanym, a zwykle daje połączenie, które się nawiązuje i niczego nie przekazuje.

Trasy instaluje ten, kto jest właścicielem tunelu

Trasy to druga zmiana, a ich własność jest ważniejsza niż zawartość. Profil NetworkManager, jednostka systemd i klient uruchomiony ręcznie mogą wszystkie instalować trasy, a gdy dwoje robi to jednocześnie, powstaje tablica, której nikt później nie potrafi wyjaśnić.

ip -br addr show
ip route show
ip -6 route show

Profil pełnego tunelu zastępuje trasę domyślną; profil tunelu dzielonego dodaje bardziej szczegółowe trasy i zostawia trasę domyślną w spokoju. Oba są normalne, a drugi jest powodem, dla którego usuwanie trasy domyślnej to zły pierwszy test na maszynie administrowanej zdalnie. Usunięcie jej to także najszybszy sposób utracenia sesji, której używasz do naprawienia problemu.

Czytaj tablicę, zamiast zakładać. Bardziej szczegółowa trasa lub reguła polityki może wysyłać ruch do tunelu, podczas gdy trasa domyślna nadal wskazuje na interfejs fizyczny, co wygląda sprzecznie, dopóki nie przeczytasz całej tablicy. Ta kombinacja jest normalna dla tunelu dzielonego i myląca dla każdego, kto oczekuje, że jeden wiersz opisze projekt. Szukaj trasy pasującej do rzeczywistego celu, a nie tej pasującej do diagramu.

Resolver zmienia właściciela

DNS to trzecia zmiana i ta, którą najprawdopodobniej zarządza się w miejscu, w którym nie patrzyłeś. Na pulpicie NetworkManager może przekazywać ustawienia resolvera dla każdego połączenia. W systemie używającym systemd-resolved ustawienia są stosowane dla każdego łącza, a /etc/resolv.conf może być zaślepką lub dowiązaniem symbolicznym, a nie plikiem, który powinieneś edytować.

resolvectl status
readlink -f /etc/resolv.conf
cat /etc/resolv.conf

Jeśli ręczna zmiana w pliku resolvera znika po ponownym połączeniu, to sygnał, by znaleźć komponent, który go utrzymuje, i zamiast tego zmienić profil. Edycja wygenerowanego pliku to zmiana, którą ponowne połączenie usunie.

Nazwy prywatne zwykle wymagają wewnętrznego resolvera i domen wyszukiwania dostarczonych przez operatora. Zastąpienie go publicznym resolverem może zepsuć dokładnie ten zasób, dla którego istnieje VPN, a objaw wygląda na awarię routingu, a nie DNS. Sprawdź nazwę i adres osobno, bo to, że jedno działa, a drugie zawodzi, mówi dokładnie, gdzie patrzeć. To jedno porównanie oszczędza godzinę debugowania tras.

Jeden menedżer na połączenie

Format profilu decyduje, który program może go użyć. Profil OpenVPN wymaga OpenVPN lub zgodnej wtyczki, a konfiguracja WireGuard ma własny format z kluczami partnera i dozwolonymi prefiksami. Okno importu nie tłumaczy jednego na drugie, cokolwiek sugeruje rozszerzenie pliku.

Wybierz jednego menedżera i pozwól mu być właścicielem połączenia. Podnoszenie tego samego tunelu dwoma narzędziami czyni tablicę tras i zachowanie przy ponownym połączeniu niejednoznacznymi, a zwykle wygrywa ten drugi, który startuje, w trudny do odtworzenia sposób.

Zainstaluj pakiety obsługiwane przez twoją dystrybucję i pobierz profil od operatora. Traktuj go jak dane logowania, bo zwykle zawiera klucz prywatny lub równoważny materiał, i przechowuj go tam, gdzie mieszkają pozostałe twoje sekrety. Profil zostawiony w folderze pobierania to klucz zostawiony na biurku.

Co sprawdzić, gdy jest podniesione, ale nie działa

Gdy interfejs jest podniesiony, a klient zgłasza sukces, pracuj na zewnątrz: czy tablica tras wybiera tunel dla celu, czy resolver odpowiada za nazwę prywatną i czy druga strona ma drogę powrotną. Każde ma osobną komendę i osobnego właściciela.

nmcli connection show --active
nmcli device status
wg show

Dokumentacja nmcli opisuje polecenia stanu i połączenia, jeśli potrzebujesz pełnego zestawu. Ważne jest tu rozróżnienie między aktywnym profilem a urządzeniem przenoszącym ruch, bo te dwie rzeczy mogą się nie zgadzać.

Połącz się ponownie raz przez tego samego menedżera, zanim uznasz konfigurację za skończoną, i sprawdź, czy DNS nadal działa po rozłączeniu. Konfiguracja, która działa tylko do pierwszej zmiany sieci, nie jest skończona, ona po prostu działa w tej chwili.

Powiązane artykuły