Wynik traceroute, który kończy się w jednym kierunku, a w drugim wypisuje rzędy gwiazdek, wygląda na asymetryczne przekazywanie i zwykle nim nie jest. Każdy pokazany przeskok wymaga, aby sonda dotarła, router zdecydował się odpowiedzieć, a odpowiedź wróciła i została dopasowana do sondy. Przerwij którekolwiek z tych ogniw, a wiersz zmieni się w gwiazdkę, podczas gdy tunel nadal przenosi dane.

Ślad jest dowodem w sprawie diagnostyki, zanim stanie się dowodem w sprawie transportu. Pytanie, które warto zadać, brzmi, które z trzech ogniw zawiodło, a odpowiedź pochodzi z pakietów, nie z kształtu wyniku.

Gwiazdka to brakująca odpowiedź, a nie brakujący przeskok

Traceroute porusza się na zewnątrz, wysyłając sondy, których TTL wygasa o jeden router dalej w każdej rundzie. Router, który odrzuca wygasłą sondę, powinien zwrócić komunikat ICMP Time Exceeded z własną nazwą, a narzędzie wypisuje tę nazwę. Narzędzie naprawdę czeka na to, aby ten komunikat dotarł w ramach limitu czasu. Jeśli router odpowie z innego adresu źródłowego, ograniczy częstotliwość generowania błędów lub bez słowa odrzuci sondę, runda nie da niczego do wydrukowania.

Żaden z tych wyników nie mówi, że droga w przód jest zepsuta. Gwiazdka to raport o nieodebranej poczcie, a nie o pustej drodze.

Metoda sondy decyduje, na jaki filtr trafisz

Domyślną metodą w Linux jest zwykle port docelowy UDP o wysokim numerze, tracert w Windows wysyła echa ICMP, a Linuxowi można kazać użyć zamiast tego ICMP lub TCP. Każda z nich wygląda dla firewalla stanowego lub grupy bezpieczeństwa w chmurze jak inny rodzaj ruchu. Porównanie śladu UDP z jednej strony ze śladem ICMP z drugiej porównuje dwa różne eksperymenty. Ustal metodę, rodzinę adresów, adres źródłowy i limit czasu, zanim nazwiesz wyniki różnicą.

Dla uczciwego porównania uruchom ślad z hostów, które naprawdę przenoszą ruch, a nie z bramy przekazującej w ich imieniu. Ślad wygenerowany przez router używa własnego adresu źródłowego i polityki wyjściowej routera, które mogą być surowsze niż wszystko, co widzi klient. Zapisz dokładne polecenie, aby następna osoba mogła je powtórzyć.

Wartość limitu czasu to druga połowa eksperymentu i łatwo ją pominąć w notatkach. Oczekiwanie dwóch sekund na zatłoczonej drodze zgłasza gwiazdki tam, gdzie oczekiwanie pięciu sekund zgłasza przeskoki. Utrzymuj wartość identyczną we wszystkich uruchomieniach, aby porównanie dotyczyło sieci.

Droga powrotna to osobna trasa

Błąd ICMP to zwykły pakiet z własnym źródłem i celem, i potrzebuje trasy z powrotem do trasera. Jeśli polityka tunelu przenosi prefiksy LAN, ale nie adres routera, który wygenerował błąd, komunikat wychodzi drogą, która nie może cię dosięgnąć. Filtrowanie odpowiedzi może go odrzucić nawet wtedy, gdy trasa istnieje, ponieważ pakiet przychodzi z nieoczekiwanego adresu na nieoczekiwanym interfejsie. To niezgodność w płaszczyźnie diagnostyki, a nie awaria aplikacji.

Rozszerzanie każdego selektora, aż ślad się zakończy, czyni obraz ładniejszym, a politykę gorszą. Napraw konkretny adres diagnostyczny albo zaakceptuj gwiazdkę i przetestuj aplikację w inny sposób.

Potwierdź tunel prawdziwym żądaniem

Uścisk dłoni TCP na własnym porcie usługi ćwiczy przekazywanie, trasowanie powrotne i filtrowanie w kierunku, który ma znaczenie. Poniższe polecenia działają na obu końcach i porównują, co każda strona może otworzyć. Zastąp port usługi i nazwę interfejsu tunelu tymi z własnej konfiguracji.

traceroute -I -n -w 2 203.0.113.40
traceroute -T -p 443 -n -w 2 203.0.113.40
curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' --max-time 5 http://203.0.113.40:8080/health
ss -tan state established

Najpierw przeczytaj oba uruchomienia traceroute: jeśli uruchomienie ICMP pokazuje przeskoki, a TCP nie, różnica jest w metodzie, nie w drodze. Następnie przyjmij wynik curl jako odpowiedź na poziomie aplikacji, ponieważ zakończona wymiana z sensownym kodem stanu oznacza, że drogi w przód i z powrotem działają dla prawdziwego ruchu. Lista gniazd pokazuje, czy połączenie w ogóle zostało nawiązane, czego żaden ślad nie może ci powiedzieć.

Tunel, który przenosi interaktywną sesję w obu kierunkach, podczas gdy jeden traceroute wypisuje gwiazdki, jest zdrowy i po prostu nieefektowny. Zachowaj wynik poleceń z każdej strony jako zapis i traktuj brakujące przeskoki jako otwarte pytanie o diagnostykę, a nie wyrok w sprawie VPN.

Powiązane artykuły