Domyślna trasa XFRM połknęła IKE i ESP: zachowaj zewnętrzną ścieżkę
Polityka, która chroni wszystko, może też przechwycić pakiety utrzymujące tunel. Oznacz IKE i ESP albo zostaw trasę do peera.
Ruch jest chroniony, tunel działa, a potem ginie przy kolejnym odświeżeniu kluczy. Domyślna trasa przez interfejs XFRM opisywała ruch, który chciałeś chronić. Połknęła też pakiety potrzebne do dalszej ochrony.
Dwa zaangażowane miejsca docelowe nie są wymienne. Routing musi to powiedzieć wprost.
Dokąd naprawdę trafia wyszukiwanie peera
Zapisz aktywne reguły, tablicę z trasą XFRM i publiczny adres peera. Potem spójrz na ścieżkę, którą wybrałoby połączenie zewnętrzne ze swoim rzeczywistym źródłem i znacznikiem. Ogólne miejsce docelowe nic nie mówi o tej ścieżce sterowania. Tylko rzeczywiste źródło i znacznik dają użyteczną odpowiedź.
Udane połączenie początkowe też niewiele dowodzi. Błąd często pojawia się po tym, jak instalacja trasy zmieni odpowiedź. Start się udaje, potem pierwsze odświeżenie już nie.
ip rule show
ip route show table 220
ip -4 route get 198.51.100.44 from 10.40.0.2
ip xfrm policy list
Jeśli wyszukiwanie peera trafia do interfejsu XFRM, pakiety zewnętrzne są kierowane do tunelu, który same budują. To jest pętla, widoczna jednym poleceniem.
Opcje wykluczenia na nowoczesnej bramie
Dokumentacja strongSwan dotycząca VPN opartego na routingu przedstawia dwie praktyczne odpowiedzi. Jedna oznacza IKE i ESP, aby reguła wskazująca tablicę XFRM ich nie obejmowała. Druga zostawia trasę peera lub wykluczenie, do którego wyszukiwanie wciąż może dotrzeć.
Wybierz tę, którą twój zestaw reguł potrafi wyrazić bez skutków ubocznych. Znacznik jest czysty, gdy reszta stosu już używa znaczników. Jest zagrożeniem, gdy ta sama maska znaczy coś innego w innej regule. Oba typy pakietów i tak wymagają tego traktowania.
Oznaczenie tylko IKE zostawia pakiety danych na przechwyconej ścieżce. To daje tunel, który wykona uścisk dłoni i potem nic nie przenosi.
Znacznik to jeden bit w fwmark pakietu, którego nic innego na bramie nie rości sobie: 0x1 z maską 0x1 to zwykły wybór, i trzeba go ustawić w dwóch miejscach, aby wykluczenie działało. Charon potrzebuje go na sockecie IKE, a ustawienia znacznika przychodzącego i wychodzącego połączenia podrzędnego potrzebują tej samej wartości, aby również enkapsulowane pakiety wychodziły oznaczone. Maska 0x1 zamiast 0xffffffff zostawia pozostałe bity wolne, co ma znaczenie, gdy inny podsystem już oznacza pakiety na tym samym hoście. Gdy oba są ustawione, reguła jest zapisywana jako wykluczenie, więc oznaczone pakiety pomijają tablicę z trasą XFRM i przechodzą do tablicy głównej:
ip rule add not fwmark 0x1/0x1 lookup 220 pref 1000
ip -4 route get 198.51.100.44 from 10.40.0.2 mark 0x1
Potem odczytaj odpowiedź z zastosowanym znacznikiem. Bez niego badasz ścieżkę, którą idzie chroniony ruch, czyli odwrotność pytania z tej sekcji.
Co automatyczna instalacja zakłada o kompilacji
Automatyczna instalacja trasy dla interfejsu XFRM zależy od wersji strongSwan i jej konfiguracji. ID interfejsu, zainstalowana polityka i asocjacja muszą wskazywać zamierzone obiekty. Niezgodność objawia się jako trasa, która po cichu wskazuje gdzieś realnie.
Kopiowanie numeru tablicy lub maski znacznika z innej bramy to sposób, w jaki zaczynają się kolizje. Najpierw sprawdź, co już tego używa. Kolizja wpływa na ruch znacznie dalej niż tunel, który chciałeś zmienić, a objaw rzadko wskazuje kopię.
Zmiany adresu peera należą do projektu. Trasa hosta do wczorajszego adresu nie jest planem odzyskania punktu końcowego, podczas gdy znacznik przetrwa tę zmianę.
Obserwuj pierwsze odświeżenie
Sprawdź ścieżkę zewnętrzną po zainstalowaniu chronionych tras, nie przedtem. Potem obserwuj następne odświeżenie i jedną wymianę aplikacji. Błąd zwykle pojawia się przy tym przejściu, a nie przy starcie.
ip -4 route get 198.51.100.44
sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or esp'
Tymczasowe usunięcie chronionej trasy domyślnej zwykle przywraca łączność. Ten wynik jest diagnostyczny, nie ostateczny.
Celem jest stabilny podział między ruchem wewnętrznym a pakietami zewnętrznymi, które go niosą. Zapisz wybrany mechanizm i jego tablicę lub znacznik w notatkach bramy. Inaczej następna osoba, która dotknie reguł, ponownie wprowadzi pętlę.