Wyłącznik awaryjny czy dostęp do LAN? Dwie odpowiedzi dla WireGuard
Klient Windows blokuje ruch poza tunelem, gdy profil podaje 0.0.0.0/0. Zdecyduj, której właściwości potrzebujesz, a następnie wyraź wartość domyślną odpowiednio.
Uścisk dłoni kończy się, przeglądanie działa, a drukarka, NAS i lokalne hosty SSH znikają. W kliencie Windows zwykle wcale nie jest to błąd routingu: peer, którego dozwolone prefiksy zawierają dosłowną wartość domyślną, włącza Blokuj ruch poza tunelem, a ta opcja jest zrealizowana jako reguły zapory, które odrzucają pakiety wychodzące przez dowolny inny interfejs. Tabela routingu nadal pokazuje lokalną podsieć jako połączenie bezpośrednie, dlatego objaw wydaje się kłamstwem. Co z tym zrobić, decydują trzy warunki, a tylko jeden z nich dotyczy routingu.
Dwie awarie noszą ten sam objaw
Pierwsza awaria to tryb fail-closed klienta, a jego znakiem jest to, że wszystko poza tunelem się zatrzymuje, podczas gdy sam tunel działa bezbłędnie. Druga to prawdziwy problem osiągalności: brakująca trasa, brakujący wpis na serwerze dla podsieci za klientem albo dwie sieci o tym samym zakresie adresów. Oba dają maszynę, która potrafi przeglądać i nie potrafi drukować, a ich poprawki są przeciwne, więc diagnoza musi przyjść przed konfiguracją.
Rozstrzygająca obserwacja to to, czy lokalna podsieć nadal jest w tabeli routingu, podczas gdy ruch do niej jest odrzucany.
Trzy warunki decydują o odpowiedzi
Po pierwsze, czy ta maszyna potrzebuje fail-closed? Jeśli odpowiedź brzmi tak, zerwany tunel musi zatrzymać ruch, a nie pozwolić mu wrócić na interfejs fizyczny, i ten wymóg jest ważniejszy niż lokalna wygoda. Po drugie, czy urządzenia lokalne muszą pozostać osiągalne, dopóki tunel jest aktywny? Drukowanie, pamięć sieciowa i lokalne konsole zarządzania to zwykłe powody, i są to uzasadnione wymagania, a nie wyjątki, za które trzeba przepraszać. Po trzecie, czy profil wyraża wartość domyślną jako dosłowne 0.0.0.0/0? Właśnie ten szczegół uruchamia reguły klienta, i można go edytować.
Odpowiedz na te trzy pytania na piśmie, zanim dotkniesz profilu, bo każda odpowiedź wskazuje inną konfigurację.
Wybierz fail-closed i zrezygnuj z LAN
Jeśli wyciek jest ważniejszy niż lokalna osiągalność, zachowaj dosłowną wartość domyślną i pozostaw Blokuj ruch poza tunelem włączone. To spójne stanowisko: maszyna jest traktowana jako urządzenie, które jest albo w tunelu, albo offline, a usługi lokalne osiąga się z innego urządzenia lub przez tunel, jeśli serwer je routuje. Koszt jest realny i powinien znaleźć się w notatkach wdrożeniowych, zamiast zostać odkryty przez osobę, która musi drukować.
To właściwy wybór dla maszyn wykonujących pracę, która nie może pojawić się w sieci kawiarni, gdy tunel padnie. To zła wartość domyślna dla domowego laptopa, który potrzebuje też skanera.
Wybierz dostęp do LAN i wyraź wartość domyślną inaczej
Jeśli urządzenia lokalne muszą pozostać osiągalne, wyraź to samo pokrycie bez dosłownego prefiksu domyślnego. Dwa półprefiksy obejmują każdy adres IPv4, równoważna para obejmuje IPv6, a klient nie wstawia już reguł blokujących, bo brakuje szukanego ciągu.
[Peer]
AllowedIPs = 0.0.0.0/1
AllowedIPs = 128.0.0.0/1
AllowedIPs = ::/1
AllowedIPs = 8000::/1
Endpoint = vpn.example.net:51820
Odznaczenie tego pola powoduje, że klient zapisuje w profilu te same dwie pary, więc porównanie wygenerowanego pliku z blokiem powyżej to szybki sposób potwierdzenia mechanizmu zamiast zgadywania go. Wynikają z tego dwie konsekwencje. Pokrycie jest identyczne, więc nic innego w tunelu się nie zmienia. Ochrona nie jest identyczna: gdy reguły znikną, zerwany tunel pozostawia maszynę na jej interfejsie fizycznym, i właśnie temu fail-closed zapobiegał.
Sprawdź dwa pozostałe podejrzane i tak
Gdy kwestia zapory jest rozstrzygnięta, potwierdź, że lokalna podsieć jest rzeczywiście routowana i że drugi koniec wie o wszystkim za tym klientem. Serwer, który musi dotrzeć do sieci LAN za klientem, potrzebuje tego prefiksu na liście dozwolonych klienta na koncentratorze; pomiń go, a koncentrator nie wybierze peera dla tych adresów, i żadna konfiguracja klienta go nie stworzy.
Get-NetConnectionProfile | Select-Object Name, InterfaceAlias, NetworkCategory
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultOutboundAction
route print 0.0.0.0
Kategoria sieci ma większe znaczenie, niż ludzie się spodziewają: nowo utworzony adapter tunelu sklasyfikowany jako publiczny zmienia, jakie reguły go dotyczą, a wynik może wyglądać jak blokada zapory po drugiej stronie. Wydruk tras pokazuje, czy wartość domyślna w ogóle istnieje, co oddziela problem polityki od brakującej trasy.
Następnie przetestuj trzy rzeczy w jednej sesji: internet, jeden lokalny host po adresie i jeden host przez tunel. Uścisk dłoni dowodzi tylko, że klucze się zgadzają, więc to trzy testy pokazują politykę. Jeśli lokalny host nadal odmawia po wyczyszczeniu opcji, pozostałymi podejrzanymi są trasa, lista dozwolonych drugiego końca i zduplikowana podsieć, w tej kolejności.