Mula sa loob ng distro, ang ping sa isang panloob na server ay nauubusan ng oras habang ang parehong address ay sumasagot mula sa Windows. Nakakonekta ang VPN at tama ang ruta ng Windows, kaya ang puwang ay ang hangganan ng WSL. Lakarin ang landas mula sa nabigong command pabalik sa interface ng host. Ang solusyon ay hindi isang fixed CIDR sa isang config file; ito ay ang pagbasa ng kasalukuyang address at pagdaragdag nito kung saan magagamit ito ng distro.

Kumpirmahin kung saan humihinto ang landas

Patakbuhin ang parehong pagsubok sa magkabilang panig: i-resolve at kumonekta sa isang panloob na host mula sa Windows, pagkatapos ay ulitin ito sa distro. Ang tagumpay sa Windows at timeout sa distro ay naglalagay ng pagkabigo sa pagitan ng dalawa, hindi sa VPN client o panloob na server. Gawin ito bago baguhin ang anumang ruta, upang ang dalawang resulta ay maglarawan ng parehong destinasyon.

Sa loob ng distro, ang ip -4 addr ay nagpapakita ng virtual adapter na may address mula sa hanay ng NAT ng WSL, at ang ip route ay nagpapakita ng default na ruta patungo sa gateway ng WSL. Walang ruta para sa corporate prefix, dahil ang tunnel adapter ng host ay walang katapat sa loob ng distro. Ang default na gateway ay patungo sa NAT ng WSL, hindi sa corporate network.

Ang pagdaragdag ng corporate route nang hindi muna nagdaragdag ng lokal na address sa isang maabot na link ay nagbubunga ng timeout o network-unreachable na error. Ang address ang bahaging nagpapagamit ng ruta, kaya basahin ito muna at ituring ang ruta na ikalawang hakbang.

Pumili ng mirrored networking o scripted na ruta

Ang mirrored networking ay nagbibigay sa distro ng sariling mga interface ng host, kaya lumilitaw ang tunnel at ang mga ruta nito nang walang pagkopya. Depende ang feature sa bagong Windows build at sa networkingMode=mirrored sa .wslconfig, at ang pagpapagana nito ay nagbabago ng walang kaugnayang pag-uugali tulad ng localhost forwarding. Ituring ito na pagbabago ng platform, hindi pagsasaayos ng ruta. Kung sinusuportahan ito ng build at katanggap-tanggap ang mga side effect, ito ang pinakamaikling daan.

Ang mas makitid na paraan ay pinapanatili ang default na NAT at kinokopya ang address at ruta ng tunnel sa distro tuwing tumataas ang tunnel. Gumagana ito sa mas maraming build, hindi binabago ang pag-uugali ng localhost, at halatang nabibigo kapag patay ang VPN. Ang halaga ay isang maliit na script na dapat patakbuhin sa bawat koneksyon.

Pumili ng isa at isulat ito. Ang paghahalo ng mirrored configuration sa mga manual na ruta ay gumagawa ng distro na may dalawang landas patungo sa parehong prefix at walang malinaw na may-ari ng alinman. Ang isang dokumentadong paraan ay mas madaling i-debug kaysa sa dalawang kalahating naka-configure.

Kunin ang kasalukuyang detalye ng tunnel mula sa host

Itugma ang adapter sa MAC address at hindi sa pangalan, dahil nagbabago ang mga pangalan kasama ng VPN client at ng pagkakasunod-sunod ng koneksyon. Ilista ang mga adapter nang isang beses, itala ang MAC ng tunnel adapter, pagkatapos ay tanungin ang address at prefix nito. Nananatili ang MAC sa virtual adapter sa pagitan ng mga muling pagkonekta, ngunit hindi ang pangalan at index ng interface:

powershell.exe 'Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" } | Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress, PrefixLength'

Ang gateway ay nagmumula sa configuration ng interface. Kunin muna ang index ng interface, pagkatapos ay basahin ang susunod na hop. Maaaring magbago ang index pagkatapos ng reboot o reset ng adapter, kaya dapat basahin ito ng script sa halip na iimbak:

powershell.exe '(Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" }).InterfaceIndex'
powershell.exe '(Get-NetIPConfiguration -InterfaceIndex 27).IPv4DefaultGateway.NextHop'

Ipasa ang output sa tr -d '\r' bago ito italaga sa isang variable. Tinatapos ng PowerShell ang mga linya ng carriage return, at kung hindi aalisin, may dalang nakatagong karakter ang huling field na nagpapabigo sa isang route command na may nakakalitong parse error.

Ilapat ang address at ruta sa loob ng distro

I-install ang address ng tunnel bilang address na may prefix sa interface ng distro, pagkatapos ay i-route ang corporate block sa gateway ng host:

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 vpn

Itinatapon ng NetworkManager ang manu-manong naka-configure na address kapag umiikot ang koneksyon, at walang DHCP client ang humihingi ng kapalit. Itakda ang paraan sa automatic upang i-refresh ng bawat muling pagkonekta ang address, pagkatapos ay itaas muli ang koneksyon. Ang manu-manong paraan ay mukhang matatag hanggang sa unang muling pagkonekta:

nmcli con show vpn
sudo nmcli con mod vpn ipv4.method auto
sudo nmcli con up vpn

Patakbuhin ang parehong hakbang mula sa hook na nagpapasimula ng VPN, hindi mula sa interactive na shell. Ang script na nagbabasa ng address, nagdadagdag nito, nagdadagdag ng ruta at nag-log ng mga halaga ay ginagawang maulit ang paulit-ulit na manu-manong pag-aayos, at ang log ang unang dapat basahin kapag nagbago ang prefix.

I-pin ang pangalan at patunayan ang landas

Maaaring palitan ng kernel ang pangalan ng interface ng distro sa pagitan ng eth1 at eth2 pagkatapos ng paglipat ng network, at ang script na isinulat para sa isang pangalan ay nag-e-edit noon ng maling device. Ang udev rule na nakakabit sa MAC ay nagbibigay sa interface ng matatag na label:

SUBSYSTEM=="net", ACTION=="add", ATTRS{address}=="3c:52:82:0a:1b:7c", NAME="vpn"

Pagkatapos ay i-verify gamit ang address, ruta at tunay na TCP connection: ip -4 addr show dev vpn, ip route get 172.20.4.10 at koneksyon sa isang kilalang panloob na port. Dapat pangalanan ng route lookup ang vpn device at ang source address na idinagdag mo.

Kung pumasa ang tatlo sa loob ng distro at nabibigo pa rin ang koneksyon, lumalabas ang packet sa WSL at itinatapon sa panig ng Windows. Suriin ang firewall ng host at ang sariling filtering ng VPN client bago baguhin ang script, dahil ang isa pang edit ng ruta ay hindi mag-aayos ng packet na dumarating na sa host.

Kaugnay na mga artikulo