Jak skierować jedną stronę poza swój tunel WireGuard
Jedna trasa /32 przez bramę LAN utrzymuje jedną stronę na zwykłym połączeniu, pod warunkiem że zapora to przepuści, a DNS zgodzi się co do adresu.
Wykluczenie nazwy hosta to coś, czego tunel nie potrafi. Trasa może jednak skierować jeden adres obok tunelu i na zewnątrz przez domową bramę, i to zwykle wystarcza dla jednej strony. Haczyk polega na tym, że wszystko poniżej trasy musi się zgadzać: zapora musi wypuścić pakiet, DNS musi zwrócić adres, który skierowałeś, a strona musi nadal używać tego adresu. Gdy którykolwiek z trzech się przesunie, wyjątek przestaje działać, nie ogłaszając się.
Przeczytaj adres docelowy, zanim dotkniesz tunelu
Wczytaj stronę raz przy włączonym tunelu, a potem sprawdź adres peera, z którym przeglądarka naprawdę się połączyła. W Linuksie, ss -tunp wyświetla adres zdalny dla każdego otwartego gniazda, a dig +short na tej samej nazwie pokazuje, co zwrócił resolver. Trzymaj obie liczby przed sobą.
Odpowiedzi często się nie zgadzają, a ta rozbieżność to cały problem. Duże strony stawiają sieć treści przed swoim źródłem, więc adres, który resolver zwraca teraz, może nie być tym, którego przeglądarka użyła minutę temu. Trasuj to, co zaobserwowałeś na gnieździe, a nie to, co wymienia starszy poradnik. Jeśli odpowiedzi wciąż krążą między regionami, wyjątek adresowy to niewłaściwe narzędzie dla tej konkretnej strony.
Uruchom wyszukiwanie drugi raz z innej sieci i zapisz odpowiedź IPv6 razem z odpowiedzią IPv4. Tunel, który przenosi obie rodziny, potrzebuje wyjątku w obu, inaczej przeglądarka po cichu wraca na ścieżkę IPv6, której nigdy nie dotknąłeś. Zapisz adresy i datę gdzieś, gdzie znów zajrzysz.
Umieść jedną trasę hosta na kliencie
Załóżmy, że interfejs nazywa się home-wg, a router LAN stoi pod 192.168.1.1. NetworkManager przyjmuje trasę, której bramą jest ten router i której długość prefiksu obejmuje wszystkie 32 bity, a jądro preferuje ją, ponieważ wygrywa najdłuższy prefiks.
nmcli connection modify home-wg +ipv4.routes "198.51.100.20/32 192.168.1.1"
nmcli connection up home-wg
ip route get 198.51.100.20
Brama musi być osiągalna bez tunelu; wskazanie następnego skoku na adres tunelu psuje cel, ponieważ pakiet ponownie wszedłby w interfejs, którego próbujesz uniknąć. Gdy połączenie znów się podniesie, ip route get dla wyjątku powinno wypisać bramę LAN, a to samo polecenie dla publicznego resolvera nadal powinno wypisywać urządzenie tunelu.
Profil wg-quick nie ma pola tras, więc ten sam wyjątek żyje w linii PostUp , która dodaje trasę hosta do tabeli głównej z interfejsem LAN jako jego urządzeniem. Po edycji opuść i ponownie podnieś interfejs, ponieważ działający interfejs nigdy nie czyta ponownie swojego pliku. Reguły fwmark instalowane przez wg-quick kierują tylko jego własne kapsułkowane pakiety, więc zwykły ruch przeglądarki nadal podąża za tabelą główną i znajduje twoje /32.
Kill switch to następna rzecz, która to blokuje
Polityka zapory, która wpuszcza ruch tylko na interfejsie tunelu, odrzuci wyjątek nawet wtedy, gdy trasa jest całkowicie poprawna. Czytaj reguły za przełącznikiem, zamiast ufać przełącznikowi, bo te, które implementują kill switch, są zwykle ograniczone do nazwy interfejsu.
Chcesz wąskiego pozwolenia dla interfejsu fizycznego i tego jednego celu, umieszczonego przed odrzuceniem, podczas gdy domyślna polityka pozostaje nietknięta. Wstrzymanie całego kill switcha dowodzi racji, ale też zostawia maszynę wystawioną tak długo, jak zapomnisz go włączyć z powrotem.
Przetestuj oba kierunki osobno. Żądanie do adresu wyjątku powinno się udać, podczas gdy żądanie do niepowiązanej strony nadal wychodzi przez tunel. Jeśli oba się udadzą, ale drugie zgłasza adres domowy, to kolejność reguł zapory jest błędna, a nie trasa.
DNS decyduje, pod który adres przeglądarka wybiera
Gdy nazwa jest rozwiązywana wewnątrz tunelu, resolver dostawcy może odpowiedzieć innym adresem niż lokalny. Twoja trasa dotyczy wtedy adresu, z którym przeglądarka nigdy się nie kontaktuje, i strona ładuje się przez tunel, jakby nic się nie zmieniło. Ta awaria wygląda na zepsuty wyjątek, nawet gdy tabela routingu jest poprawna.
Wysyłaj zapytania o tę nazwę także przez lokalny resolver albo całkiem pomiń nazwy i przetestuj adres bezpośrednio. Rozdzielenie adresu przy pozostawieniu DNS wewnątrz tunelu to najczęstsza na wpół skończona wersja tej konfiguracji, i najtrudniejsza do zauważenia, bo strona nadal działa, tylko nie tak, jak chciałeś.
Ten sam wyjątek na routerze, raz, dla każdego urządzenia
Gdy tunel działa na routerze, trasa hosta należy do tabeli routingu politycznego routera i wskazuje bramę WAN zamiast bramy LAN. Każde urządzenie za nim dziedziczy wyjątek, co ma znaczenie dla przystawki streamingowej lub laptopa służbowego, którego ustawień sieciowych nie możesz zmienić.
Zostaw tunel jako domyślne wyjście dla wszystkich innych klientów, a następnie sprawdź z maszyny klienta, a nie z konsoli routera. Wczytaj stronę wyjątku i drugą stronę w tej samej sesji przeglądarki i porównaj adresy wyjściowe; jeśli druga nadal pokazuje tunel, tabela polityk robi to, o co prosiłeś.
Zapisz adres, datę i powód w notatkach routera. Wyjątek zbudowany wokół adresu, który później się przenosi, staje się usterką, której nikt nie potrafi wyjaśnić po roku, a poprawka zawsze wygląda jak zagadka, dopóki ktoś nie znajdzie starej notatki.