Przełączniki przepuszczania w routerze to ustępstwa na rzecz przekazywania dla urządzenia za nimi, a nie usługi VPN. Nie rejestrują routera jako klienta, nie przechowują poświadczeń i nie przepychają każdego urządzenia w domu przez zdalne wyjście. To, co robią, to kształtowanie sposobu, w jaki jeden protokół przekracza translację adresów i filtry. Gdy to jest jasne, przełącznik łatwo przetestować i łatwo pozostawić wyłączony.

Co router naprawdę robi

Router stoi między klientem a drugą stroną IPsec i przekazuje pakiety, których zrozumienie nigdy nie było jego zadaniem. Producenci realizują tę funkcję na co najmniej trzy sposoby: pomocnik protokołu, który śledzi lub przepisuje stan; wyjątek filtra, który przestaje odrzucać ESP; albo tryb zgodności dla starszych klientów. Etykieta w interfejsie web rzadko mówi, który z trzech masz. Powiedzą to tylko notatki do firmware’u albo przechwycenie pakietów.

Pomocnik może też pogorszyć sprawę. Pomoc napisana dla starszego przepływu czasem przeszkadza klientowi, który już poprawnie obsługuje translację. Gdy nowoczesny klient działa z wyłączoną opcją, pozostawienie jej wyłączonej jest lepszą konfiguracją.

Przepuszczanie nigdy nie daje routerowi kluczy drugiej strony. Nadal widzi zewnętrzne adresy i porty i nadal stosuje do nich własną politykę przekazywania.

NAT i NAT-T decydują o ścieżce

IPsec nie został zbudowany, by przetrwać translację adresów, więc standardy dodały otoczkę. NAT traversal zamyka ESP wewnątrz UDP, pozwalając zwykłej tablicy NAT nieść przepływ, a negocjacja uzgadnia to przełączenie podczas IKE (RFC 3948). Sam IKE używa UDP 500, natomiast otoczona ścieżka zwykle używa UDP 4500.

Dlatego reguła zapory, która zezwala tylko na protokół 50, nie wystarcza na przetłumaczonej ścieżce. Zablokowanie 4500 psuje przypadek, dla którego istnieje otoczka, a zablokowanie 500 zatrzymuje negocjację, zanim powstanie jakikolwiek tunel. Oba kierunki mają znaczenie, bo router śledzący stan zwykle zezwala na odpowiedź dopiero po zobaczeniu żądania. Dotarcie do portu to nie to samo co zakończenie uwierzytelniania ani co przekazanie chronionego ruchu.

Starsze rozwiązania różnią się na tyle, że napisany dla nich przewodnik może wprowadzić w błąd. Gdy klient oferuje oba tryby, testuj ten, który dokumentuje twoja druga strona, a nie ten z większą liczbą wyników wyszukiwania.

Znajdź etap, który zawodzi

Podziel problem na negocjację, uwierzytelnianie, ochronę dziecka i przekazywanie wewnętrzne, a następnie zbieraj dowody dla jednego etapu naraz. Restart, który tymczasowo zmienia wynik, dowodzi tylko, że brał w tym udział jakiś stan.

sudo tcpdump -ni any 'udp port 500 or udp port 4500'
ip xfrm state list
ip xfrm policy list

Przechwycenie pokazuje, czy wymiana dociera do drugiej strony i czy odpowiedzi wracają, co oddziela problem filtrowania od problemu poświadczeń. Lista stanów pokazuje ustanowione asocjacje bezpieczeństwa, więc pusta lista po próbie wskazuje na negocjację, a nie na routing. Lista polityk pokazuje, które selektory są zainstalowane, i tam właśnie wyklucza się cel poza podsiecią. Przeczytaj oba wyjścia xfrm, zanim dotkniesz routera, bo opisują one, co sądzi host, a nie co pozwala router.

Jeśli pakiety wychodzą i nic nie wraca, przenieś przechwycenie na stronę WAN routera. Porównanie obu przechwyceń lokalizuje odrzucenie bez zgadywania.

Wyłącz to, czego nie potrzebujesz

Jeden działający laptop nie dowodzi, że router obsługuje kilka klientów naraz. Każdy klient tworzy własny stan translacji i własną negocjację, a niektóre pomocniki śledzą tylko jeden przepływ. Przetestuj liczbę równoczesnych sesji, której naprawdę potrzebujesz, z sieci, których naprawdę używasz. Jeśli drugi klient zawodzi, gdy pierwszy działa dobrze, to jest ustalenie, a nie niestabilny tunel.

Pozostaw opcję włączoną tylko wtedy, gdy przechwycenie pokaże, że jest potrzebna. Zapisz wersję firmware’u obok wyniku, bo te zachowania zmieniają się między wydaniami. Celem jest tunel klienta, który zweryfikowałeś, a nie przełącznik włączony z nadzieją.

Powiązane artykuły