WSL2 VPN સબનેટ સુધી પહોંચતું નથી: હોસ્ટનો રૂટ વાંચો
ડિસ્ટ્રો પોતાના NAT પાછળ બેસે છે અને Windows ટનલ ક્યારેય જોતું નથી. હોસ્ટ પરથી વર્તમાન સરનામું અને પ્રીફિક્સ વાંચો, પછી તેમને WSL ની અંદર ઉમેરો.
ડિસ્ટ્રોની અંદરથી, આંતરિક સર્વરને ping સમયસીમા વટાવી જાય છે, જ્યારે એ જ સરનામું Windows થી જવાબ આપે છે. VPN જોડાયેલું છે અને Windows રૂટ સાચો છે, તેથી અંતર WSL સીમા છે. નિષ્ફળ આદેશથી હોસ્ટ ઇન્ટરફેસ સુધીનો માર્ગ ચાલો. ઉકેલ કન્ફિગ ફાઇલમાં નિશ્ચિત CIDR નથી; તે વર્તમાન સરનામું વાંચીને જ્યાં ડિસ્ટ્રો તેનો ઉપયોગ કરી શકે ત્યાં ઉમેરવાનો છે.
માર્ગ ક્યાં અટકે છે તે નિશ્ચિત કરો
બંને બાજુએ એ જ પરીક્ષણ ચલાવો: Windows થી એક આંતરિક હોસ્ટ ઉકેલો અને જોડાઓ, પછી ડિસ્ટ્રોમાં તેનું પુનરાવર્તન કરો. Windows માં સફળતા અને ડિસ્ટ્રોમાં સમયસીમા વટાવ બંને વચ્ચે નિષ્ફળતા દર્શાવે છે, VPN ક્લાયંટ કે આંતરિક સર્વરમાં નહીં. કોઈપણ રૂટ બદલતાં પહેલાં આ કરો, જેથી બંને પરિણામો એ જ ગંતવ્ય વર્ણવે.
ડિસ્ટ્રોની અંદર, ip -4 addr WSL NAT શ્રેણીના સરનામા સાથેનું વર્ચ્યુઅલ એડેપ્ટર બતાવે છે, અને ip route WSL ગેટવે તરફનો ડિફોલ્ટ રૂટ બતાવે છે. કોર્પોરેટ પ્રીફિક્સ માટે કોઈ રૂટ નથી, કારણ કે હોસ્ટના ટનલ એડેપ્ટરનો ડિસ્ટ્રોની અંદર કોઈ સમાનાર્થી નથી. ડિફોલ્ટ ગેટવે WSL NAT તરફ લઈ જાય છે, કોર્પોરેટ નેટવર્ક તરફ નહીં.
પહેલાં પહોંચી શકાય તેવી લિંક પર સ્થાનિક સરનામું ઉમેર્યા વિના કોર્પોરેટ રૂટ ઉમેરવાથી સમયસીમા વટાવ અથવા નેટવર્ક અનટચેબલ ભૂલ થાય છે. સરનામું એ ભાગ છે જે રૂટને ઉપયોગી બનાવે છે, તેથી તેને પહેલાં વાંચો અને રૂટને બીજું પગલું ગણો.
મિરર્ડ નેટવર્કિંગ અથવા સ્ક્રિપ્ટેડ રૂટ પસંદ કરો
મિરર્ડ નેટવર્કિંગ ડિસ્ટ્રોને હોસ્ટના પોતાના ઇન્ટરફેસ આપે છે, તેથી ટનલ અને તેના રૂટ કોપી કર્યા વિના દેખાય છે. આ સુવિધા તાજેતરના Windows બિલ્ડ અને .wslconfig માં networkingMode=mirrored પર આધાર રાખે છે, અને તેને સક્ષમ કરવાથી localhost ફોરવર્ડિંગ જેવા અસંબંધિત વર્તન બદલાય છે. તેને પ્લેટફોર્મ ફેરફાર ગણો, રૂટ ટ્વીક નહીં. જો બિલ્ડ તેને સમર્થન આપે અને આડઅસરો સ્વીકાર્ય હોય, તો તે સૌથી ટૂંકો રસ્તો છે.
સાંકડો અભિગમ ડિફોલ્ટ NAT રાખે છે અને જ્યારે પણ ટનલ ઉપર આવે ત્યારે ટનલનું સરનામું અને રૂટ ડિસ્ટ્રોમાં કોપી કરે છે. તે વધુ બિલ્ડ પર કામ કરે છે, localhost વર્તન બદલતું નથી, અને VPN બંધ હોય ત્યારે દૃશ્યમાન રીતે નિષ્ફળ જાય છે. કિંમત એક નાની સ્ક્રિપ્ટ છે જે દરેક કનેક્શન પર ચલાવવી પડે છે.
એક પસંદ કરો અને લખો. મિરર્ડ કન્ફિગરેશનને મેન્યુઅલ રૂટ સાથે ભેળવવાથી એક જ પ્રીફિક્સ માટે બે માર્ગો ધરાવતું અને કોઈપણ માટે સ્પષ્ટ માલિક ન હોય તેવું ડિસ્ટ્રો બને છે. એક દસ્તાવેજીકૃત પદ્ધતિ બે અડધા-કન્ફિગર કરેલી પદ્ધતિઓ કરતાં ડિબગ કરવી સહેલી છે.
હોસ્ટ પરથી વર્તમાન ટનલ વિગતો ખેંચો
એડેપ્ટરને નામ પ્રમાણે નહીં, MAC સરનામા પ્રમાણે મેળવો, કારણ કે નામ VPN ક્લાયંટ અને કનેક્શન ક્રમ સાથે બદલાય છે. એડેપ્ટરની એક વાર યાદી બનાવો, ટનલ એડેપ્ટરનું MAC નોંધો, પછી તેનું સરનામું અને પ્રીફિક્સ પૂછો. MAC રીકનેક્શન દરમિયાન વર્ચ્યુઅલ એડેપ્ટર સાથે રહે છે, પણ નામ અને ઇન્ટરફેસ ઇન્ડેક્સ રહેતા નથી:
powershell.exe 'Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" } | Get-NetIPAddress -AddressFamily IPv4 | Select-Object IPAddress, PrefixLength'ગેટવે ઇન્ટરફેસ કન્ફિગરેશનમાંથી આવે છે. પહેલાં ઇન્ટરફેસ ઇન્ડેક્સ મેળવો, પછી આગળનું હોપ વાંચો. રીબૂટ કે એડેપ્ટર રીસેટ પછી ઇન્ડેક્સ બદલાઈ શકે છે, તેથી સ્ક્રિપ્ટે તેને સંગ્રહવાને બદલે વાંચવું જોઈએ:
powershell.exe '(Get-NetAdapter | Where-Object { $_.MacAddress -eq "3C-52-82-0A-1B-7C" }).InterfaceIndex'
powershell.exe '(Get-NetIPConfiguration -InterfaceIndex 27).IPv4DefaultGateway.NextHop'આઉટપુટને ચલમાં સોંપતાં પહેલાં tr -d '\r' માંથી પસાર કરો. PowerShell લીટીઓ કેરેજ રિટર્ન સાથે સમાપ્ત કરે છે, અને સ્ટ્રીપ ન કરો તો છેલ્લા ફીલ્ડમાં છુપાયેલું અક્ષર રહે છે જે રૂટ આદેશને ગૂંચવણભરી પાર્સ ભૂલ સાથે નિષ્ફળ કરે છે.
ડિસ્ટ્રોની અંદર સરનામું અને રૂટ લાગુ કરો
ટનલનું સરનામું ડિસ્ટ્રોના ઇન્ટરફેસ પર પ્રીફિક્સવાળા સરનામા તરીકે સ્થાપિત કરો, પછી કોર્પોરેટ બ્લોકને હોસ્ટના ગેટવે દ્વારા રૂટ કરો:
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 મેન્યુઅલી કન્ફિગર કરેલું સરનામું કાઢી નાખે છે, અને કોઈ DHCP ક્લાયંટ બદલી માંગતું નથી. પદ્ધતિને સ્વચાલિત રાખો જેથી દરેક રીકનેક્શન સરનામું તાજું કરે, પછી કનેક્શન ફરી ઉપર લાવો. મેન્યુઅલ પદ્ધતિ પહેલા રીકનેક્શન સુધી સ્થિર લાગે છે:
nmcli con show vpn
sudo nmcli con mod vpn ipv4.method auto
sudo nmcli con up vpnબંને પગલાં VPN શરૂ કરતા હૂકમાંથી ચલાવો, ઇન્ટરેક્ટિવ શેલમાંથી નહીં. સરનામું વાંચતી, ઉમેરતી, રૂટ ઉમેરતી અને મૂલ્યો લોગ કરતી સ્ક્રિપ્ટ પુનરાવર્તિત મેન્યુઅલ સમારકામને પુનરાવર્તનીય બનાવે છે, અને પ્રીફિક્સ બદલાય ત્યારે પહેલાં વાંચવાની વસ્તુ લોગ છે.
નામ પિન કરો અને માર્ગ સાબિત કરો
નેટવર્ક સ્વિચ પછી કર્નલ ડિસ્ટ્રોના ઇન્ટરફેસનું નામ eth1 અને eth2 વચ્ચે બદલી શકે છે, અને નામ પર લખાયેલી સ્ક્રિપ્ટ પછી ખોટું ઉપકરણ સંપાદિત કરે છે. MAC સાથે જોડાયેલો udev નિયમ ઇન્ટરફેસને સ્થિર લેબલ આપે છે:
SUBSYSTEM=="net", ACTION=="add", ATTRS{address}=="3c:52:82:0a:1b:7c", NAME="vpn"પછી સરનામું, રૂટ અને વાસ્તવિક TCP કનેક્શન સાથે ચકાસો: ip -4 addr show dev vpn, ip route get 172.20.4.10 અને જાણીતા આંતરિક પોર્ટ સાથે કનેક્શન. રૂટ લુકઅપે vpn ઉપકરણ અને તમે ઉમેરેલું સ્રોત સરનામું દર્શાવવું જોઈએ.
જો ત્રણેય ડિસ્ટ્રોની અંદર પાસ થાય અને કનેક્શન હજી નિષ્ફળ જાય, તો પેકેટ WSL છોડીને Windows બાજુએ ડ્રોપ થાય છે. સ્ક્રિપ્ટ બદલતાં પહેલાં હોસ્ટ ફાયરવોલ અને VPN ક્લાયંટનું પોતાનું ફિલ્ટરિંગ તપાસો, કારણ કે બીજું રૂટ સંપાદન પહેલેથી હોસ્ટ સુધી પહોંચતા પેકેટને ઠીક નહીં કરે.