WSL2 VPN alt şəbəkəsinə çatmır: host marşrutunu oxuyun
Distributiv öz NAT-ının arxasında oturur və Windows tunelini heç vaxt görmür. Cari ünvanı və prefiksi hostdan oxuyun, sonra onları WSL daxilində əlavə edin.
Distributivin içindən daxili serverə ping vaxt aşımı ilə bitir, halbuki eyni ünvan Windowsdan cavab verir. VPN qoşulub və Windows marşrutu düzgündür, deməli boşluq WSL sərhədidir. Uğursuz əmrdən host interfeysinə qədər yolu addım-addım izləyin. Həll konfiqurasiya faylında sabit CIDR deyil; cari ünvanı oxuyub distributivin istifadə edə biləcəyi yerə əlavə etməkdir.
Yolun harada dayandığını təsdiqləyin
Eyni testi hər iki tərəfdə aparın: bir daxili hostu Windowsdan həll edib qoşulun, sonra bunu distributivdə təkrarlayın. Windowsda uğur və distributivdə vaxt aşımı nasazlığı ikisinin arasında, VPN müştərisində və ya daxili serverdə deyil, lokallaşdırır. Bunu hər hansı marşrutu dəyişməzdən əvvəl edin ki, iki nəticə eyni təyinatı təsvir etsin.
Distributivin içində ip -4 addr WSL NAT diapazonundan ünvanı olan virtual adapter göstərir, ip route isə WSL şlüzünə işarə edən default marşrut göstərir. Korporativ prefiks üçün marşrut yoxdur, çünki hostun tunel adapterinin distributivdə qarşılığı yoxdur. Default şlüz korporativ şəbəkəyə deyil, WSL NAT-a aparır.
Əvvəlcə əlçatan bir linkdə lokal ünvan əlavə etmədən korporativ marşrutu əlavə etmək vaxt aşımı və ya şəbəkəyə çatmayan xəta verir. Marşrutu istifadəyə yararlı edən hissə ünvandır, ona görə əvvəl onu oxuyun, marşrutu ikinci addım sayın.
Güzgülənmiş şəbəkə və ya skriptli marşrut seçin
Güzgülənmiş şəbəkə distributivə hostun öz interfeyslərini verir, beləliklə tunel və marşrutları kopyalamadan görünür. Funksiya yeni Windows buraxılışından və .wslconfig faylındakı networkingMode=mirrored parametrindən asılıdır, onu aktivləşdirmək isə localhost yönləndirməsi kimi əlaqəsiz davranışı dəyişir. Buna marşrut düzəlişi kimi deyil, platforma dəyişikliyi kimi yanaşın. Buraxılış onu dəstəkləyirsə və yan təsirlər məqbuldursa, bu ən qısa yoldur.
Daha dar yanaşma default NAT-ı saxlayır və tunel qalxdıqca tunel ünvanını və marşrutunu distributivə kopyalayır. Daha çox buraxılışda işləyir, localhost davranışını dəyişmir və VPN söndükdə görünən şəkildə uğursuz olur. Qiyməti hər qoşulmada işləməli olan kiçik skriptdir.
Birini seçin və yazın. Güzgülənmiş konfiqurasiyanı əl marşrutları ilə qarışdırmaq eyni prefiksə iki yolu olan və heç birinin aydın sahibi olmayan distributiv yaradır. Bir sənədləşdirilmiş üsul, iki yarımkonfiqurasiya edilmiş üsuldan daha asan sazlanır.
Cari tunel məlumatlarını hostdan çəkin
Adapteri adla deyil, MAC ünvanı ilə uyğunlaşdırın, çünki adlar VPN müştərisi və qoşulma sırası ilə dəyişir. Adapterləri bir dəfə siyahıya alın, tunel adapterinin MAC-ını qeyd edin, sonra onun ünvanını və prefiksini sorğulayın. MAC yenidən qoşulmalar arasında virtual adapterdə qalır, ad və interfeys indeksi isə qalmır:
powershell.exe 'Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" } | Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress, PrefixLength'Şlüz interfeys konfiqurasiyasından gəlir. Əvvəlcə interfeys indeksini götürün, sonra növbəti hoppu oxuyun. İndeks yenidən başlatmadan və ya adapter sıfırlamasından sonra dəyişə bilər, buna görə skript onu saxlamalı deyil, oxumalıdır:
powershell.exe '(Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" }).InterfaceIndex'
powershell.exe '(Get-NetIPConfiguration -InterfaceIndex 27).IPv4DefaultGateway.NextHop'Çıxışı dəyişənə mənimsətməzdən əvvəl tr -d '\r' vasitəsilə ötürün. PowerShell sətirləri carriage return ilə bitirir və zolaq çıxarılmasa, son sahə gizli simvol daşıyır və marşrut əmri çaşdırıcı analiz xətası ilə uğursuz olur.
Ünvanı və marşrutu distributivin içində tətbiq edin
Tunel ünvanını distributiv interfeysinə prefiksli ünvan kimi quraşdırın, sonra korporativ bloku hostun şlüzü vasitəsilə yönləndirin:
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 əlaqə dövr etdikdə əl ilə konfiqurasiya edilmiş ünvanı atır və heç bir DHCP müştərisi əvəz istəmir. Metodu avtomatikə qoyun ki, hər yenidən qoşulma ünvanı yeniləsin, sonra əlaqəni yenidən qaldırın. Əl metodu ilk yenidən qoşulmaya qədər sabit görünür:
nmcli con show vpn
sudo nmcli con mod vpn ipv4.method auto
sudo nmcli con up vpnHər iki addımı VPN-i başladan hookdan işə salın, interaktiv qabıqdan deyil. Ünvanı oxuyan, onu əlavə edən, marşrutu əlavə edən və dəyərləri jurnala yazan skript təkrarlanan əl təmirini təkrarlana bilən təmirə çevirir və prefiks dəyişdikdə ilk oxunacaq şey jurnaldır.
Adı bərkidin və yolu sübut edin
Şəbəkə kommutasiyasından sonra nüvə distributiv interfeysinin adını eth1 ilə eth2 arasında dəyişə bilər və ada görə yazılmış skript sonra səhv cihazı redaktə edir. MAC-a bağlanmış udev qaydası interfeysə sabit etiket verir:
SUBSYSTEM=="net", ACTION=="add", ATTRS{address}=="3c:52:82:0a:1b:7c", NAME="vpn"Sonra ünvanla, marşrutla və real TCP bağlantısı ilə yoxlayın: ip -4 addr show dev vpn, ip route get 172.20.4.10 və məlum daxili porta bağlantı. Marşrut axtarışı vpn cihazını və əlavə etdiyiniz mənbə ünvanını göstərməlidir.
Üçü də distributivin içində keçsə və bağlantı hələ də uğursuz olarsa, paket WSL-dən çıxır və Windows tərəfində atılır. Skripti dəyişməzdən əvvəl host firewallunu və VPN müştərisinin öz filtrləməsini yoxlayın, çünki başqa marşrut düzəlişi artıq hosta çatan paketi düzəltməyəcək.