WSL2 nedosiahne na podsiet VPN: prečítajte si trasu hostiteľa
Distribúcia sedí za vlastným NAT a tunel Windows nikdy nevidí. Prečítajte si aktuálnu adresu a prefix z hostiteľa a potom ich pridajte vo vnútri WSL.
Zvnútra distribúcie ping na interný server vyprší, zatiaľ čo tá istá adresa odpovedá z Windows. VPN je pripojená a trasa Windows je správna, takže medzera je hranica WSL. Prejdite cestu od neúspešného príkazu späť k rozhraniu hostiteľa. Oprava nie je pevný CIDR v konfiguračnom súbore; je to prečítanie aktuálnej adresy a jej pridanie tam, kde ju distribúcia môže použiť.
Potvrďte, kde sa cesta zastaví
Spustite rovnaký test na oboch stranách: preložte a pripojte sa k jednému internému hostiteľovi z Windows a potom to zopakujte v distribúcii. Úspech vo Windows plus vypršanie v distribúcii lokalizuje poruchu medzi nimi, nie v klientovi VPN ani v internom serveri. Urobte to pred zmenou akejkoľvek trasy, aby oba výsledky opisovali rovnaké cieľové miesto.
Vo vnútri distribúcie ip -4 addr zobrazuje virtuálny adaptér s adresou z rozsahu WSL NAT a ip route zobrazuje predvolenú trasu k bráne WSL. Pre firemný prefix neexistuje žiadna trasa, pretože tunelový adaptér hostiteľa nemá vo vnútri distribúcie náprotivok. Predvolená brána vedie do WSL NAT, nie do firemnej siete.
Pridanie firemnej trasy bez predchádzajúceho pridania lokálnej adresy na dosiahnuteľnom spoji vedie k vypršaniu alebo chybe nedostupnej siete. Adresa je časť, ktorá robí trasu použiteľnou, preto ju prečítajte najskôr a trasu berte ako druhý krok.
Zvoľte zrkadlovú sieť alebo trasu so skriptom
Zrkadlová sieť dáva distribúcii vlastné rozhrania hostiteľa, takže tunel a jeho trasy sa objavia bez kopírovania. Funkcia závisí od nedávneho zostavenia Windows a od networkingMode=mirrored v .wslconfig a jej zapnutie mení nesúvisiace správanie, napríklad presmerovanie localhostu. Berte to ako zmenu platformy, nie ako úpravu trasy. Ak to zostavenie podporuje a vedľajšie efekty sú prijateľné, je to najkratšia cesta.
Užší prístup zachováva predvolený NAT a kopíruje adresu a trasu tunela do distribúcie vždy, keď sa tunel zdvihne. Funguje na viacerých zostaveniach, nemení správanie localhostu a pri vypnutej VPN viditeľne zlyháva. Cenou je malý skript, ktorý sa musí spúšťať pri každom pripojení.
Vyberte jeden a zapíšte ho. Miešanie zrkadlovej konfigurácie s ručnými trasami vytvára distribúciu s dvoma cestami k rovnakému prefixu a bez jasného vlastníka ani jednej. Jeden zdokumentovaný postup sa ladí ľahšie než dva napoly nakonfigurované.
Vytiahnite aktuálne údaje o tuneli z hostiteľa
Párujte adaptér podľa MAC adresy, nie podľa názvu, pretože názvy sa menia s klientom VPN a poradím pripojenia. Vypíšte adaptéry raz, poznamenajte si MAC tunelového adaptéra a potom zistite jeho adresu a prefix. MAC zostáva pri virtuálnom adaptéri aj medzi pripojeniami, kým názov a index rozhrania nie:
powershell.exe 'Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" } | Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress, PrefixLength'Brána pochádza z konfigurácie rozhrania. Najprv získajte index rozhrania a potom prečítajte ďalší skok. Index sa môže zmeniť po reštarte alebo resete adaptéra, preto ho skript má čítať, nie ukladať:
powershell.exe '(Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" }).InterfaceIndex'
powershell.exe '(Get-NetIPConfiguration -InterfaceIndex 27).IPv4DefaultGateway.NextHop'Prežeňte výstup cez tr -d '\r', než ho priradíte premennej. PowerShell ukončuje riadky návratom vozíka, a bez odstránenia nesie posledné pole skrytý znak, ktorý spôsobí zlyhanie príkazu trasy so zavádzajúcou chybou analýzy.
Použite adresu a trasu vo vnútri distribúcie
Nainštalujte adresu tunela ako adresu s prefixom na rozhraní distribúcie a potom smerujte firemný blok cez bránu hostiteľa:
sudo ip addr add 172.20.14.37/22 dev vpn
sudo ip route add 172.20.0.0/16 via 172.20.12.1 dev vpnNetworkManager zahodí ručne nakonfigurovanú adresu, keď sa spojenie obnoví, a žiadny klient DHCP nepožiada o náhradu. Nastavte metódu na automatickú, aby každé opätovné pripojenie obnovilo adresu, a potom spojenie znova zdvihnite. Ručná metóda vyzerá stabilne až do prvého opätovného pripojenia:
nmcli con show vpn
sudo nmcli con mod vpn ipv4.method auto
sudo nmcli con up vpnSpúšťajte oba kroky z háku, ktorý spúšťa VPN, nie z interaktívneho shellu. Skript, ktorý adresu prečíta, pridá ju, pridá trasu a zapíše hodnoty do logu, mení opakovanú ručnú opravu na opakovateľnú, a log je prvá vec, ktorú treba prečítať, keď sa prefix zmení.
Pripnite názov a dokážte cestu
Jadro môže po prepnutí siete premenovať rozhranie distribúcie medzi eth1 a eth2, a skript napísaný na názov potom upraví nesprávne zariadenie. Pravidlo udev viazané na MAC dáva rozhraniu stabilné označenie:
SUBSYSTEM=="net", ACTION=="add", ATTRS{address}=="3c:52:82:0a:1b:7c", NAME="vpn"Potom overte adresou, trasou a skutočným TCP spojením: ip -4 addr show dev vpn, ip route get 172.20.4.10 a spojením na známy interný port. Vyhľadanie trasy by malo uviesť zariadenie vpn a zdrojovú adresu, ktorú ste pridali.
Ak všetky tri prejdú vo vnútri distribúcie a spojenie stále zlyháva, paket opúšťa WSL a je zahodený na strane Windows. Pred zmenou skriptu skontrolujte firewall hostiteľa a vlastné filtrovanie klienta VPN, pretože ďalšia úprava trasy neopraví paket, ktorý už dosahuje hostiteľa.