ഡിസ്ട്രോയുടെ ഉള്ളിൽ നിന്ന് ആന്തരിക സർവറിലേക്കുള്ള 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 വരികൾ carriage return കൊണ്ട് അവസാനിപ്പിക്കുന്നു, അത് നീക്കം ചെയ്യാത്ത പക്ഷം അവസാന ഫീൽഡ് ഒരു മറഞ്ഞ അക്ഷരം വഹിക്കുന്നു, അത് റൂട്ട് കമാൻഡിനെ ആശയക്കുഴപ്പമുള്ള പാഴ്സ് പിശകോടെ പരാജയപ്പെടുത്തുന്നു.

ഡിസ്ട്രോയുടെ ഉള്ളിൽ വിലാസവും റൂട്ടും പ്രയോഗിക്കുക

ടണലിന്റെ വിലാസം ഡിസ്ട്രോയുടെ ഇന്റർഫേസിൽ പ്രിഫിക്സുള്ള വിലാസമായി ഇൻസ്റ്റാൾ ചെയ്യുക, പിന്നീട് കോർപ്പറേറ്റ് ബ്ലോക്ക് ഹോസ്റ്റിന്റെ ഗേറ്റ്വേയിലൂടെ റൂട്ട് ചെയ്യുക:

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 ക്ലയന്റിന്റെ സ്വന്തം ഫിൽട്ടറിംഗും പരിശോധിക്കുക, കാരണം മറ്റൊരു റൂട്ട് എഡിറ്റ് ഇതിനകം ഹോസ്റ്റിലെത്തുന്ന പാക്കറ്റ് ശരിയാക്കില്ല.

അനുബന്ധ ലേഖനങ്ങൾ