169.254 przez VPN: ten adres nigdy nie był trasowalny
Cel typu link-local jest odrzucany, zanim dotrze do tunelu, więc dodawanie tras tylko poszerza awarię. Wybierz między naprawą podsieci a mostem.
Dodajesz trasę, tunel wstaje, a ping na drugą stronę nadal ginie całkowicie, zamiast zwrócić «network unreachable». Ta różnica ma znaczenie, bo odwraca wzrok od tablicy tras w stronę samego adresu. Cel 169.254 jest link-local, a jego zasięg kończy się na pierwszym hopie z założenia, nie z powodu złej konfiguracji.
Decyzja, która z tego wynika, jest wąska i warto ją podjąć wprost: naprawić podsieć po stronie serwera albo rozszerzyć segment warstwy 2, aby adres znów miał sens lokalny. Wszystko inne, łącznie z szerszą trasą, tylko sprawia, że ta sama awaria dotyczy większej liczby celów.
Adres nie jest bez trasy, jest nietrasowalny
Adresy IPv4 link-local same sobie przypisują adres, gdy nic lepszego nie odpowie; stąd bierze się automatyczne adresowanie prywatne w Windows i odpowiednik w innych systemach. Zakres jest używany na każdym łączu jednocześnie i właśnie dlatego działa: dwa hosty w tym samym segmencie mogą rozmawiać bez żadnej koordynacji.
Ta sama właściwość sprawia, że router nie może przekazywać takich pakietów między sieciami. Odebranie pakietu zaadresowanego do celu link-local i wysłanie go innym interfejsem tworzyłoby niejednoznaczność, bo «lokalne» nadawcy i «lokalne» odbiorcy to różne miejsca. Nie ma wyszukiwania, które rozstrzygnęłoby, o które z nich chodziło. Przekazywanie nie jest tu opcją polityki, którą administrator może włączyć; klasa adresów to wyklucza.
Brama, która wpisuje 169.254.1.10 jako osiągalny przez tunel, prosi więc jądro o coś, czego format adresu zabrania. Pakiet jest odrzucany długo przed dotarciem do zdalnego hosta, a żadna precyzja trasy tego nie zmienia.
Dlaczego tunel ujawnia problem zasięgu
Interfejs TUN przenosi pakiety IP między dwoma równorzędnymi punktami i nie ma za sobą wspólnego segmentu. Nie ma rozgłaszania, nie ma ARP dla drugiej strony ani wykrywania sąsiadów, które zamieniłoby cel link-local na adres warstwy łącza.
Objawy pasują dokładnie, gdy wiadomo, czego szukać. Trasa jest w tablicy, ping zgłasza całkowitą utratę zamiast sieci nieosiągalnej, a tablica sąsiadów pokazuje niepełny lub nieudany wpis. Zapis na tunelu pokazuje pakiet wychodzący, co kieruje ludzi na drugi koniec zamiast na klasę adresu.
W Windows jest drugi, pozornie niezwiązany objaw o tym samym źródle: karta, której został tylko adres link-local, nie ma użytecznej bramy, więc identyfikacja sieci nie potrafi zaklasyfikować połączenia i profil zapory trafia na publiczny. Tunel nie jest przyczyną; przyczyną jest adres.
Zdecyduj trzema pytaniami
Wybór między naprawą podsieci a mostkowaniem łącza zależy od trzech warunków i każdy z nich może go rozstrzygnąć, zanim otworzysz plik konfiguracji.
| Question | If yes | If no |
|---|---|---|
| Can the far-side host be given a routable address? | Change the host or fix DHCP and route normally | Continue to the next question |
| Does the device accept a static address at all? | Assign one from the site's real prefix | Bridging is the only remaining option |
| Can you accept broadcast crossing the tunnel? | A bridge is viable for a small segment | Replace the device or accept no remote access |
Większość przypadków zatrzymuje się na pierwszym pytaniu. Host z adresem link-local zwykle oznacza, że DHCP nie odpowiedział, kabel lub VLAN są złe albo ktoś wpisał adres ręcznie. Naprawa jest tańsza niż jakakolwiek praca z tunelem i usuwa problem u każdego przyszłego klienta, nie tylko u tego.
Sprawdź stronę serwera, zanim cokolwiek założysz. Uruchom ip addr show i ip route na hoście oraz arp -n lub route print -4 na kliencie, aby zobaczyć, czy prefiks naprawdę istnieje, czy twierdzi to tylko stary wpis.
Ile kosztuje most, gdy jest właściwą odpowiedzią
Mostkowanie fizycznej karty z kartą TAP czyni zdalnego klienta częścią lokalnej domeny rozgłaszania. Wtedy rozgłaszanie i wykrywanie sąsiadów działają, a adres link-local znów ma sens, bo klient jest naprawdę lokalny na tym łączu.
Koszty są realne i trzeba je podać, zanim ktokolwiek się zgodzi. Ruch rozgłoszeniowy przechodzi przez tunel, klient jest wystawiony na segment lokalny w każdym celu, nie tylko w tych usługach, których potrzebuje, a serwer musi teraz przekazywać ramki zamiast trasować pakiety. To rozsądna wymiana dla stanowiska laboratoryjnego lub urządzenia bez trasowalnej ścieżki konfiguracji, a złe ustawienie domyślne dla dostępu zdalnego.
Gdy mostkujesz, potrzebne są obie połowy: most na serwerze i trasa w profilu klienta mówiąca, które cele są po drugiej stronie. Sam most pozostawia klienta w domysłach, a sama trasa nie naprawi klasy adresu.