Jaki adres źródłowy widzi STUN przy VPN na routerze?
Trasa, wybór źródła i translacja decydują o adresie, który raportuje reflektor. Trzy fakty do zapisania, potem jedno zapytanie, aby potwierdzić, która ścieżka wygrywa.
Pytanie brzmi jak jedno sprawdzenie, a w rzeczywistości to trzy decyzje. Którą trasę obierze binding request, jakie źródło wybierze jądro dla tej trasy i czy coś po drodze przepisze to źródło. Zmień jedną z nich, a adres raportowany przez serwer STUN zmieni się razem z nią. Dlatego stwierdzenie, że VPN siedzi na routerze, samo w sobie mówi prawie nic.
Decyzja opiera się na trzech faktach
Po pierwsze trasa: reguły polityki i tabela routingu decydują, czy żądanie wyjdzie przez tunel, czy przez zwykły WAN, a wykluczony cel obiera drugą ścieżkę nawet przy aktywnym tunelu. Po drugie źródło: jądro wybiera źródło dla wybranej trasy, a ten wybór zależy od preferowanego źródła trasy i od każdej reguły, która pasowała. Po trzecie translacja: NAT po drodze zastępuje wybrane źródło. Adres odbity jest iloczynem wszystkich trzech, a nie właściwością tunelu.
Zmień jeden z trzech, a odpowiedź się zmieni, podczas gdy każdy komponent nadal wygląda zdrowo we własnym logu. To zwykły powód, dla którego ta diagnoza grzęźnie.
Zapisz trzy fakty dla przepływu, który testujesz, zanim zaczniesz. Interfejs, trasa i reguła translacji wystarczą, by przewidzieć wynik, i właśnie przewidzenie czyni niespodziankę pouczającą. Jeśli nie potrafisz wypełnić jednego z trzech, ta luka jest rzeczywistym ustaleniem.
Prześledź jeden binding request przez ścieżkę
Binding request STUN prosi serwer o zgłoszenie zaobserwowanego źródłowego adresu transportowego. Odpowiedź opisuje ścieżkę, którą obrało żądanie, a nie inwentarz interfejsów na maszynie klienta. Dwa żądania dwiema ścieżkami uczciwie zgłoszą dwa różne adresy.
| Path taken | Source the reflector sees | What it means |
|---|---|---|
| Tunnel to a public exit that translates | The exit's public address | The reflector learns nothing about the LAN |
| Tunnel to a private reflector, translated to the tunnel address, no later translation | That tunnel address | An internal identifier is disclosed to that reflector |
| Excluded flow over the ordinary WAN | The WAN address | The tunnel was not used at all |
Czytaj tę tabelę jako zbiór warunków, a nie jako menu dostawców. Środkowy wiersz wymaga, by prywatny reflektor był osiągalny w ramach własnego routingu i polityki peerów tunelu; to fakt konfiguracyjny, który możesz zweryfikować, a nie coś, co implikuje poziom konta. Dolny wiersz zwykle ma znaczenie dla polityki, bo ten ruch miał zostać wewnątrz tunelu. Między nimi leży zwykły przypadek, w którym wyjście transluje, a reflektor widzi tylko wyjście.
Kandydaci host i kandydaci refleksyjni po stronie serwera pochodzą z różnych mechanizmów, więc lista kandydatów nie mówi, którą ścieżkę faktycznie wykorzystały media. Czytaj wybraną parę, nie log zbierania, gdy chcesz wiedzieć, dokąd poszła sesja.
Czym nie jest adres tunelu routera
Adres tunelu przypisany routerowi należy do interfejsu na routerze. Przeglądarka na hoście LAN ma własne adresy interfejsów i żadnego bezpośredniego wglądu w interfejs tunelu routera. Traktowanie obu jako wymiennych daje pewne siebie błędne odpowiedzi na temat tego, czego może się dowiedzieć strona internetowa.
Przekazywanie jest tym, co je łączy. Żądanie przechodzi przez router jako ruch routowany, a jego źródłem jest to, co wytworzyły routing i translacja.
Jeśli ścieżka tunelu zachowuje źródło LAN, prywatny reflektor może poznać ten adres LAN, co jest prawdziwym ujawnieniem i innym niż adres tunelu. Jeśli ścieżka transluje na adres tunelu, reflektor poznaje zamiast tego adres tunelu. Oba wyniki są zgodne z tą samą przeglądarką na tym samym hoście, dlatego obserwację trzeba wiązać z konkretnym przepływem. Zapytaj jądro, jakiego źródła by użyło, zanim obwinisz aplikację.
Ujawnienie kontra obejście: dwa ustalenia, dwie naprawy
Odbity adres tunelu ujawnia wewnętrzny identyfikator po ścieżce, na którą pozwoliłeś. Żądanie bezpośrednio przez WAN omija ścieżkę, której chciałeś wymagać. Pierwsze jest kwestią informacji, drugie egzekwowania, i naprawia się je w różnych miejscach. Zlanie ich w jedno słowo daje naprawę, która nie dotyczy żadnego z nich.
WebRTC czyni to bardziej widocznym, nie czyniąc tego błędnym, bo zebranie kandydata nie jest tym samym co jego wybór.
ip route get 203.0.113.7 from 192.0.2.25
ip rule showUruchom zapytanie o trasę dla każdego dozwolonego adresu reflektora, ze źródłem, które ten przepływ ma według ciebie nieść, a potem uruchom je ponownie dla wykluczonych zakresów, aby zobaczyć, co wybierze wariant zapasowy. Porównaj obie odpowiedzi z polityką, którą zapisałeś. Gdy różnią się w sposób, którego nie zamierzyłeś, znalazłeś punkt naprawy, nie musząc w ogóle interpretować listy kandydatów przeglądarki.