Gudaha qaybinta, ping loo diro server gudaha ah wuu dhacaa waqti ahaan, halka isla ciwaankaas ka jawaabo Windows. VPN waa ku xiran yahay oo dariiqa Windows waa sax, sidaas darteed farqiga waa xadka WSL. Soco dariiqa laga bilaabo amarka fashilmay ilaa interface-ka host-ka. Xalku ma aha CIDR go'an oo ku jira faylka habaynta; waa akhrinta ciwaanka hadda jira iyo ku daristiisa meesha qaybintu ku isticmaali karto.

Xaqiiji halka dariiquu joogsado

Ku socodsii isla tijaabada labada dhinac: xalliso oo ku xidh hal host gudaha ah Windows, kadibna ku celi qaybinta. Guul Windows iyo waqti-dhaqan qaybinta waxay muujinayaan ciladdu u dhaxayso labada, ma aha client-ka VPN ama server-ka gudaha. Samee tan ka hor intaadan beddelin waddo kasta, si labada natiijo ay u qeexaan isla meesha loo socdo.

Gudaha qaybinta, ip -4 addr wuxuu muujinayaa adapter macmal ah oo leh ciwaan ka yimid xadka WSL NAT, ip route wuxuuna muujinayaa dariiqa caadiga ah ee u jeedda gateway-ga WSL. Ma jiro dariiq loogu talagalay prefix-ka shirkadda, sababtoo ah adapter-ka tunnel-ka host-ku ma laha wax u dhigma gudaha qaybinta. Gateway-ga caadiga ah wuxuu u socdaa WSL NAT, ma aha shabakadda shirkadda.

Ku darista dariiqa shirkadda iyada oo aan marka hore lagu darin ciwaan maxalli ah isku xirka la gaari karo waxay keenaysaa waqti-dhaqan ama cilad shabakad aan la gaari karin. Ciwaanku waa qaybta dariiqa ka dhigta mid la isticmaali karo, sidaas darteed marka hore akhri, dariiqana u qaado tallaabo labaad.

Dooro shabakad muraayad ama dariiq script leh

Shabakadda muraayadda waxay qaybinta siisaa interfaces-ka host-ka laftiisa, sidaas darteed tunnel-ka iyo dariiqyadiisu waxay u muuqdaan iyada oo aan la koobiye. Astaamuhu waxay ku xiran tahay build Windows oo cusub iyo networkingMode=mirrored ee .wslconfig, daqiiqaddiisuna waxay beddeshaa dhaqan aan xiriir la lahayn sida gudbinta localhost. U qaado isbeddel platform, ma aha hagaajin dariiq. Haddii build-ku taageero oo saameynta dhinacu tahay mid la aqbali karo, waa dariiqa ugu gaaban.

Habka cidhiidhiga ah wuxuu hayaa NAT caadiga ah wuxuuna koobiyaa ciwaanka iyo dariiqa tunnel-ka gudaha qaybinta mar kasta oo tunnel-ku kaco. Waxay ka shaqaysaa build-yo badan, ma beddesho dhaqanka localhost, wayna fashilantaa si muuqata marka VPN-ku daman yahay. Qiimuhu waa script yar oo lagu socodsiiyo isku xir kasta.

Dooro mid oo qor. Isku darka habayn muraayad leh dariiqyo gacan lagu sameeyay waxay abuurtaa qaybin leh laba dariiq oo isla prefix ah iyo wax aan lahayn milkiile cad midkoodna. Hal hab oo la diiwaangeliyay ayaa ka fudud in la debuggeeyo laba badh-habaysan.

Ka soo qaado faahfaahinta tunnel-ka hadda jira host-ka

U eeg adapter-ka ciwaanka MAC ma aha magaca, sababtoo ah magacyadu waxay is beddelaan client-ka VPN iyo nidaamka isku xirka. Liis ku qor adapters-ka hal mar, qor MAC-ga adapter-ka tunnel-ka, kadibna weydii ciwaankiisa iyo prefix-ka. MAC-ku wuxuu la joogaa adapter-ka macmal-ka inta u dhaxaysa dib-u-xirka, laakiin magaca iyo index-ka interface-ku ma joogaan:

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

Gateway-gu wuxuu ka yimaadaa habaynta interface-ka. Marka hore soo qaado index-ka interface-ka, kadibna akhri boodhka xiga. Index-ku wuu is beddeli karaa dib-u-dajinta ama dib-u-habaynta adapter-ka ka dib, sidaas darteed script-ku waa inuu akhriyaa halkii uu kaydin lahaa:

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

Soo marso wax soo saarka tr -d '\r' ka hor intaadan u xilsaarin doorsoome. PowerShell wuxuu ku dhammeeyaa sadarrada carriage return, haddii aan la nadiifininna goobta ugu dambeysa waxay qaadaysaa xaraf qarsoon oo amarka dariiqa ku fashilma khalad falanqayn jahawareer leh.

Ku dhaqan geli ciwaanka iyo dariiqa gudaha qaybinta

Ku rakib ciwaanka tunnel-ka sida ciwaan prefix leh interface-ka qaybinta, kadibna u jihee block-ka shirkadda gateway-ga host-ka:

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

NetworkManager wuxuu tuuraa ciwaan gacan lagu habayay marka isku xirku wareegto, mana jiro client DHCP oo weydiista beddel. U dhig habka otomaatig si dib-u-xir kastaa u cusboonaysiiyo ciwaanka, kadibna mar kale kor u qaad isku xirka. Habka gacanta wuxuu u muuqdaa mid deggan ilaa dib-u-xirka koowaad:

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

Labada tallaabo ka socodsii hook-ga bilaaba VPN, ma aha shell is-dhexgal ah. Script akhriya ciwaanka, ku dara, ku dara dariiqa oo diiwaangeliya qiyamka wuxuu u beddelaa hagaajin gacan ah oo soo noqnoqda mid lagu celin karo, log-kaana waa waxa ugu horreeya ee la akhriyo marka prefix-ku is beddelo.

Xidid sii magaca oo caddee dariiqa

Kernel-ku wuxuu magaca interface-ka qaybinta u beddeli karaa inta u dhaxaysa eth1 iyo eth2 ka dib isbeddel shabakadeed, script ku qoran magacna markaas wuxuu tafatiraa qalabka qaldan. Xeer udev oo ku xiran MAC wuxuu interface-ka siinayaa calaamad deggan:

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

Kadib ku xaqiiji ciwaanka, dariiqa iyo isku xir TCP dhab ah: ip -4 addr show dev vpn, ip route get 172.20.4.10 iyo isku xirka port gudaha la yaqaan. Raadinta dariiqu waa inay sheegto qalabka vpn iyo ciwaanka isha ee aad ku dartay.

Haddii saddexdaaba gudaha qaybinta ku gudbaan isku xirkuna wali fashilmo, baakaddu waxay ka baxdaa WSL oo laga tuuraa dhinaca Windows. Ka hubi firewall-ka host-ka iyo shaandhaynta client-ka VPN laftiisa ka hor intaadan beddelin script-ka, sababtoo ah tafatir dariiq kale ma hagaajin doono baakad horey u gaadhay host-ka.

Maqaallo la xiriira