NAT അല്ലെങ്കിൽ ബ്രിഡ്ജ് VM നെറ്റ്വർക്ക്: VPN ട്രാഫിക് കൊണ്ടുപോകുന്നത് ഏതാണ്?
ക്ലയന്റ് റൂട്ട് പ്രകാരം ടണൽ ചെയ്യുമ്പോൾ മാത്രമാണ് NAT ഗസ്റ്റുകൾ ഹോസ്റ്റിന്റെ ടണൽ കടം വാങ്ങുന്നത്; ബ്രിഡ്ജ് ഗസ്റ്റുകൾ സ്വയം റൂട്ട് ചെയ്യുന്നു. ഗസ്റ്റ് പരിശോധിച്ച ശേഷം അനുയോജ്യമായ മോഡ് തിരഞ്ഞെടുക്കുക.
ബ്രിഡ്ജും NAT-ഉം ഒരേ ഗസ്റ്റിനെ നിങ്ങളുടെ VPN-ലേക്ക് ബന്ധിപ്പിക്കാനുള്ള രണ്ട് മാർഗങ്ങളല്ല; ഒരു ടണൽ വരുന്നതിന് മുൻപേ ഗസ്റ്റിന്റെ പാക്കറ്റുകൾ ആരുടേതാണെന്ന് അവർ തീരുമാനിക്കുന്നു. NAT മോഡിൽ ഹൈപ്പർവൈസർ ഗസ്റ്റിന്റെ ട്രാഫിക് വീണ്ടും എഴുതി ഹോസ്റ്റ് വശത്തെ കോഡിൽ നിന്ന് പുറത്തയക്കുന്നു, അതിനാൽ ഗസ്റ്റ് ഹോസ്റ്റ് ആ കോഡിന് നൽകുന്ന റൂട്ടിലൂടെ സഞ്ചരിക്കുന്നു. ബ്രിഡ്ജ് മോഡിൽ ഗസ്റ്റ് ഭൗതിക സെഗ്മെന്റിൽ സ്വന്തം ലിങ്ക് പാളി ഐഡന്റിറ്റി നേടുകയും സ്വന്തം ഡിഫോൾട്ട് ഗേറ്റ്വേ തിരഞ്ഞെടുക്കുകയും ചെയ്യുന്നു, ഇത് ഹോസ്റ്റിന്റെ ടണൽ അതിന് അപ്രസക്തമാക്കുന്നു, LAN റൗട്ടർ ടണൽ ചെയ്യുന്നതല്ലെങ്കിൽ. VM VPN-ലാണെന്ന് കാണുന്നത് ഞാൻ നിർത്തി, ആ ഗസ്റ്റിന്റെ ഡിഫോൾട്ട് റൂട്ട് എങ്ങോട്ടാണ് ചൂണ്ടുന്നത് എന്ന ചോദ്യമായി കാണാൻ തുടങ്ങി. താഴെയുള്ള പരിശോധന ഓരോ മോഡിനും കുറച്ച് മിനിറ്റ് എടുക്കുന്നു, ഊഹമില്ലാതെ അത് തീർപ്പാക്കുന്നു.
NAT ഗസ്റ്റിനെ ഹൈപ്പർവൈസർ കോഡിന് പിന്നിൽ നിർത്തുന്നു, അവിടെ ഹോസ്റ്റിന്റെ റൂട്ടുകൾ ബാധകമാണ്
VirtualBox-ൽ NAT ഗസ്റ്റ് 10.0.2.0/24-ൽ ഇരിക്കുന്നു, 10.0.2.2-ൽ വെർച്വൽ ഗേറ്റ്വേ, 10.0.2.3-ൽ DNS പ്രോക്സി, ഭൗതിക നെറ്റ്വർക്കിലേക്ക് സ്വന്തം റൂട്ടില്ല. പുറത്തേക്കുള്ള പാക്കറ്റുകൾ NAT എൻജിൻ എടുത്ത്, ഉറവിടം ഹോസ്റ്റ് ആകുന്ന വിധത്തിൽ വീണ്ടും എഴുതി ഹോസ്റ്റിന്റെ IP സ്റ്റാക്കിലേക്ക് നൽകുന്നു. അവിടെ നിന്ന് ഗസ്റ്റിന്റെ ട്രാഫിക് ഹോസ്റ്റ് പ്രവാഹമാണ്, റൂട്ട് തിരയൽ ലക്ഷ്യസ്ഥാനം അനുസരിച്ചാണ്: 0.0.0.0/1, 128.0.0.0/1 എന്നിവ ഹോസ്റ്റിൽ ഇൻസ്റ്റാൾ ചെയ്യുന്ന പൂർണ ടണൽ ക്ലയന്റ് VM ഉണ്ടെന്ന് അറിയാതെ തന്നെ അത് പിടിക്കുന്നു. VirtualBox നെറ്റ്വർക്കിംഗിനെക്കുറിച്ചുള്ള Oracle അധ്യായം ഈ ഡിഫോൾട്ടുകൾ പട്ടികപ്പെടുത്തുന്നു, നിങ്ങളുടെ ബിൽഡിൽ വിലാസങ്ങൾ സ്ഥിരീകരിക്കാൻ ആഗ്രഹിക്കുന്നെങ്കിൽ.
libvirt-ന്റെ ഡിഫോൾട്ട് നെറ്റ്വർക്ക് 192.168.122.0/24-ൽ നിന്ന് അതേ സ്ഥലത്ത് എത്തുന്നു, അവിടെ dnsmasq ലീസുകൾ വിതരണം ചെയ്യുന്നു, ഹോസ്റ്റ് സബ്നെറ്റ് മാസ്കറേഡ് ചെയ്യുന്നു, അതിനാൽ ഗസ്റ്റിന്റെ പാക്കറ്റുകൾ വീണ്ടും ഹോസ്റ്റിന്റെ റൂട്ടിംഗ് തീരുമാനത്തിലേക്ക് എത്തുന്നു. ഒഴിവാക്കൽ റൂട്ടിന് പകരം പ്രോസസ് അനുസരിച്ച് ട്രാഫിക് തിരഞ്ഞെടുക്കുന്ന ക്ലയന്റ് ആണ്. സ്പ്ലിറ്റ് ടണൽ പട്ടികയിൽ നിങ്ങളുടെ ബ്രൗസർ മാത്രമാണെങ്കിൽ, NAT എൻജിൻ ആ പട്ടികയിലില്ല, ഗസ്റ്റ് ടണലില്ലാതെ യന്ത്രം വിടുന്നു, ഹോസ്റ്റിന്റെ ബ്രൗസർ ഇപ്പോഴും മൂടിയതായി തോന്നുന്നു. ഒരേ സബ്നെറ്റ്, വിപരീത ഫലം.
ബ്രിഡ്ജ് ഗസ്റ്റിന് ഭൗതിക LAN-ൽ സ്വന്തം സ്ഥാനം നൽകുന്നു
ബ്രിഡ്ജ് ഗസ്റ്റിന് യഥാർത്ഥ അഡാപ്റ്ററുമായി ബന്ധിപ്പിച്ച വെർച്വൽ NIC നൽകുന്നു, അത് സ്വന്തം MAC വിലാസം നേടുകയും ഭൗതിക നെറ്റ്വർക്കിൽ നിന്ന് DHCP ലീസ് എടുക്കുകയും ചെയ്യുന്നു. അതിന്റെ ഡിഫോൾട്ട് ഗേറ്റ്വേ LAN റൗട്ടർ ആണ്, ഹൈപ്പർവൈസർ അല്ല, അതിന്റെ ഫ്രെയിമുകൾ ആ അഡാപ്റ്റർ വഴി കേബിളിലേക്ക് പോകുന്നു. ഹോസ്റ്റിന്റെ ടണൽ റൂട്ടുകൾ ഹോസ്റ്റിന്റെ പട്ടികയിലാണ്, ഒരിക്കലും ചോദിക്കപ്പെടുന്നില്ല, കാരണം ഗസ്റ്റിന്റെ ഫ്രെയിമുകൾ ഒരിക്കലും ഹോസ്റ്റിന്റെ IP സ്റ്റാക്കിൽ പ്രവേശിക്കുന്നില്ല.
ഇത് രണ്ട് ദിശയിലും മുറിക്കുന്നു. mDNS-ഉം SMB ബ്രൗസിംഗും പ്രവർത്തിക്കാൻ തുടങ്ങുന്നത് ഗസ്റ്റ് LAN-ന്റെ ബ്രോഡ്കാസ്റ്റ് ട്രാഫിക് കാണുന്നതുകൊണ്ടാണ്, കൂടാതെ ഇടയിൽ ഹോസ്റ്റ് ഫയർവാൾ ഇല്ലാതെ അതേ സെഗ്മെന്റിലെ മറ്റ് യന്ത്രങ്ങളിൽ നിന്ന് ഗസ്റ്റ് എത്താവുന്നതാകുന്നു. നിലവിലുള്ള ഒരു ടണലിലൂടെ ഗസ്റ്റിനെ തള്ളാനുള്ള മാർഗവുമല്ല ബ്രിഡ്ജ്: VM-നെ ഹോസ്റ്റിന്റെ WireGuard അല്ലെങ്കിൽ OpenVPN ഇന്റർഫേസിലേക്ക് ബന്ധിപ്പിക്കുന്നത് VirtualBox-ഉം libvirt-ഉം നിങ്ങൾക്കായി ചെയ്യുന്ന കാര്യമല്ല. ബ്രിഡ്ജ് ഗസ്റ്റ് ഒരു ടണലിലൂടെ പോകേണ്ടതുണ്ടെങ്കിൽ, ടണൽ ആ LAN-ൽ എവിടെയെങ്കിലും അവസാനിക്കണം.
തർക്കം അവസാനിപ്പിക്കുന്ന പരിശോധന
രണ്ട് മോഡുകളിലും ഒരേ പരിശോധനകൾ നടത്തി ഉത്തരങ്ങൾ എഴുതി വയ്ക്കുക:
- ഹോസ്റ്റിൽ
curl -s https://ifconfig.meപൊതു v4 വിലാസം നൽകുന്നു. - ഗസ്റ്റിൽ അതേ കമാൻഡ്, കൂടാതെ ഡിഫോൾട്ട് ഗേറ്റ്വേയ്ക്ക് Linux-ൽ
ip routeഅല്ലെങ്കിൽ Windows-ൽGet-NetRoute -DestinationPrefix 0.0.0.0/0. - റിസോൾവറിന്റെ ഐഡന്റിറ്റി: ഗസ്റ്റിൽ
resolvectl statusഅല്ലെങ്കിൽcat /etc/resolv.conf, അത് 10.0.2.3-ലേക്കാണോ LAN സെർവറിലേക്കാണോ ചൂണ്ടുന്നതെന്ന് കാണാൻ. - വിലാസ കുടുംബം:
ip -6 addr show scope globalഒപ്പം ഒരു v6 അഭ്യർത്ഥന, കാരണം v4 ടണൽ ഗസ്റ്റിന് ഉണ്ടായേക്കാവുന്ന ആഗോള v6 വിലാസത്തെക്കുറിച്ച് ഒന്നും പറയുന്നില്ല.
പൊരുത്തപ്പെടുന്ന പൊതു വിലാസങ്ങൾ എന്നാൽ ഗസ്റ്റ് ഹോസ്റ്റിന്റെ വഴിയിലാണ്. LAN-ന്റെ സാധാരണ പുറത്തേക്കുള്ള വഴിയുമായി പൊരുത്തപ്പെടുന്ന ഗസ്റ്റ് വിലാസം എന്നാൽ അല്ല. ആളുകൾ ഒഴിവാക്കുന്ന ഘട്ടം നിയന്ത്രണമാണ്: ഹോസ്റ്റിന്റെ ടണൽ താഴ്ത്തി ഗസ്റ്റിന്റെ അഭ്യർത്ഥന ആവർത്തിക്കുക. ഗസ്റ്റ് ബ്രൗസ് ചെയ്യുന്നത് തുടരുകയാണെങ്കിൽ, മോഡിന്റെ പേര് എന്ത് സൂചിപ്പിച്ചാലും അത് ഒരിക്കലും ഹോസ്റ്റിന്റെ ടണലിനെ ആശ്രയിച്ചിരുന്നില്ല. NAT മോഡിൽ ഹോസ്റ്റിന്റെ ടണൽ താഴ്ത്തുമ്പോൾ ഗസ്റ്റിന് ഇന്റർനെറ്റ് നഷ്ടപ്പെടണം, ക്ലയന്റ് ടണലില്ലാത്ത ട്രാഫിക് അനുവദിക്കാൻ ക്രമീകരിച്ചിട്ടില്ലെങ്കിൽ, അത് തന്നെ അറിയേണ്ടതാണ്.
രണ്ട് സിഗ്നലുകൾ കള്ളം പറയുന്നു. വിജയകരമായ ping എത്താവുന്നതിനെ തെളിയിക്കുന്നു, പുറത്തേക്കുള്ള വഴിയെയല്ല. DNS-ന് ഹോസ്റ്റിന്റെ റിസോൾവർ വഴി 10.0.2.3 പ്രോക്സി ഉത്തരം നൽകാം, അതേസമയം TCP മറ്റൊരു റൂട്ട് എടുക്കുന്നു, അങ്ങനെ ലോഡ് ആകുന്ന പേജും ഒരിക്കലും പൂർത്തിയാകാത്ത ലോഗിനും കിട്ടുന്നു.
ഏത് മോഡ് ജോലിക്ക് യോജിക്കുന്നു
മോഡ് ഒരു റൂട്ടിംഗ് തീരുമാനമാണ്, അതിനാൽ ശീലത്തിന് പകരം ആവശ്യകത അനുസരിച്ച് തിരഞ്ഞെടുക്കുക:
| Requirement | Mode that fits |
|---|---|
| Every guest flow must exit through the host tunnel | NAT, with a host client that tunnels by route, verified from inside the guest |
| The guest needs its own VPN account or profile | Bridged, or NAT with a client running inside the guest, not both |
| The guest must serve SSH, SMB, or a dev server to the LAN | Bridged; NAT needs a port forward, which does not change the outbound path |
| The guest must stay invisible to the LAN | NAT; a bridged guest is another host on the segment |
| The guest needs a real public IPv6 address | Bridged; VirtualBox NAT mode has no IPv6 forwarding |
| Isolation from the LAN with access to the host | Host-only adapter, not NAT |
ആദ്യ വരിയാണ് ആളുകൾ കുടുങ്ങുന്നിടം: NAT-ഉം ഹോസ്റ്റിലെ പൂർണ ടണൽ ക്ലയന്റും ഗസ്റ്റിനെ മൂടുന്നു, പക്ഷേ ക്ലയന്റ് റൂട്ട് പ്രകാരം ടണൽ ചെയ്യുന്നിടത്തോളവും ഹോസ്റ്റിന്റെ മുകൾ ലിങ്ക് ആ ടണലാകുന്നിടത്തോളവും മാത്രം. ക്ലയന്റിനെ ബ്രൗസറിന് മാത്രം അനുവദിക്കുന്ന പട്ടികയിലേക്ക് മാറ്റുക, എവിടെയും ഒരു പിശകുമില്ലാതെ പരിരക്ഷ അപ്രത്യക്ഷമാകുന്നു. നാലാം വരി വിപരീത തെറ്റാണ്: സൗകര്യത്തിനായി ബ്രിഡ്ജ് ചെയ്ത ഗസ്റ്റ് ഓഫീസ് LAN-ൽ നിശബ്ദമായി SMB അല്ലെങ്കിൽ SSH-ന് ഉത്തരം നൽകാൻ തുടങ്ങുന്നു.
VPN-ന്റെ മേൽ ചുമത്തുന്ന പരാജയങ്ങൾ
Windows-ൽ NAT വിവർത്തനം VirtualBox VM പ്രോസസിനുള്ളിൽ പ്രവർത്തിക്കുന്നു, അതിനാൽ ഓരോ ആപ്പിനുമുള്ള ക്ലയന്റിന് വെർച്വൽ യന്ത്രങ്ങൾക്കുള്ള പൊതു നിയമത്തിന് പകരം അതേ ഇമേജ് തന്റെ പട്ടികയിൽ വേണം. ക്ലയന്റ് അപ്ഡേറ്റ് തന്റെ പ്രോസസ് പട്ടിക വീണ്ടും നിർമ്മിക്കുമ്പോൾ NAT ഗസ്റ്റുകൾ ആദ്യം പരിരക്ഷ നഷ്ടപ്പെടുന്നു, റിപ്പോർട്ട് ഹോസ്റ്റ് കുഴപ്പമില്ലാതെ LAN-ൽ എത്തുന്നെങ്കിലും ഇന്റർനെറ്റിൽ എത്താത്ത VM പോലെ വായിക്കുന്നു.
Wi-Fi-ലേക്ക് ബ്രിഡ്ജ് ചെയ്യുന്നത് മറ്റൊരു ക്ലാസിക് ആണ്. ആക്സസ് പോയിന്റുകൾ പുറത്തുനിന്നുള്ള ഉറവിട MAC ഉള്ള ഫ്രെയിമുകൾ അപൂർവമായേ കൈമാറുന്നു, അതിനാൽ wlan0-ലേക്കുള്ള ബ്രിഡ്ജ് പൂർണമായി പരാജയപ്പെടുകയോ AP-യിലെ ക്ലയന്റ് ഐസൊലേഷൻ അത് വീഴ്ത്താൻ തുടങ്ങുന്നതുവരെ പ്രവർത്തിക്കുകയോ ചെയ്യുന്നു. VirtualBox എന്നിരുന്നാലും തന്റെ പട്ടികയിൽ വയർലെസ് അഡാപ്റ്റർ നൽകും. ഹോസ്റ്റ് Wi-Fi-ലും ഗസ്റ്റ് ബ്രിഡ്ജ് ചെയ്യേണ്ടതുമാണെങ്കിൽ, അനുമാനിക്കുന്നതിന് പകരം പരിശോധിക്കാൻ ആസൂത്രണം ചെയ്യുക.
MTU മൂന്നാമത്തേതാണ്. ബ്രിഡ്ജ് ഗസ്റ്റ് LAN-ന്റെ 1500 ബൈറ്റ് MTU നിലനിർത്തുന്നു, അത് സ്വന്തം WireGuard ക്ലയന്റ് 1420-ൽ ഓടിക്കുന്നെങ്കിൽ, ചെറിയ അഭ്യർത്ഥനകൾ വിജയിക്കുമ്പോൾ വലിയ TLS ഹാൻഡ്ഷേക്കുകൾ നിലയ്ക്കുന്നു. NAT-ന് കീഴിൽ ഹോസ്റ്റ് ടണലിന്റെ MTU ഹോസ്റ്റിന്റെ പ്രശ്നമാണ്, പക്ഷേ ഗസ്റ്റ് ഇപ്പോഴും 1500 വിശ്വസിക്കുന്നു, don't-fragment ബിറ്റ് സെറ്റ് ചെയ്ത UDP അതേ രീതിയിൽ അപ്രത്യക്ഷമാകുന്നു.
മോഡ് എഴുതി വയ്ക്കുക, ഓരോ അഡാപ്റ്റർ മാറ്റത്തിനും ശേഷം വീണ്ടും പരിശോധിക്കുക
മോഡ്, ബ്രിഡ്ജ് ഉപയോഗിക്കുന്ന ഹോസ്റ്റ് ഇന്റർഫേസ്, ഗസ്റ്റിന്റെ ഡിഫോൾട്ട് ഗേറ്റ്വേ, അതിന്റെ റിസോൾവർ, അതിന്റെ v4, v6 പുറത്തേക്കുള്ള വിലാസങ്ങൾ എന്നിവ രേഖപ്പെടുത്തുക. ആ രേഖ തന്നെയാണ് അടുത്ത പരാജയം വിലകുറഞ്ഞതാക്കുന്നത്: ലാപ്ടോപ്പ് ഡോക്കിൽ നിന്ന് Wi-Fi-ലേക്ക് മാറുമ്പോൾ ബ്രിഡ്ജ് ഗസ്റ്റ് ബ്രിഡ്ജിനൊപ്പം മറ്റൊരു ഭൗതിക അഡാപ്റ്ററിലേക്ക് പോയി മറ്റൊരു സബ്നെറ്റിൽ വീണ്ടും ലീസ് എടുത്തേക്കാം, അതേസമയം NAT ഗസ്റ്റ് തന്റെ 10.0.2.x വിലാസം നിലനിർത്തി നിശബ്ദമായി മറ്റൊരു മുകൾ ലിങ്ക് പാരമ്പര്യമായി നേടുന്നു.
ടിക്കറ്റ് അടയ്ക്കുന്നതിന് മുൻപ്, ഇവയിൽ ഓരോന്നും സ്ഥിരീകരിക്കുക:
- ഗസ്റ്റിന്റെ പുറത്തേക്കുള്ള വിലാസം ഹോസ്റ്റിന്റെ പുറത്തേക്കുള്ള വിലാസത്തിൽ നിന്ന് വ്യത്യസ്തമാണ്, അതിനാൽ അത് ഹോസ്റ്റിന്റെ ടണലിലല്ല.
- റിസോൾവർ 10.0.2.3 പ്രോക്സിയോ LAN സെർവറോ ആണ്, ഏതാണ് ഉത്തരം നൽകിയതെന്ന് നിങ്ങൾക്കറിയാം.
- ടണൽ രൂപകൽപ്പന v4 മാത്രമാണെങ്കിൽ ഗസ്റ്റിൽ ആഗോള v6 വിലാസമില്ല.
- ഹോസ്റ്റിന്റെ ടണൽ താഴ്ത്തുമ്പോൾ ഗസ്റ്റ് ബ്രൗസ് ചെയ്യുന്നത് നിർത്തുന്നു, അല്ലെങ്കിൽ അത് ഒരിക്കലും അതിനെ ആശ്രയിച്ചിരുന്നില്ലെന്ന് ഇപ്പോൾ നിങ്ങൾക്കറിയാം.
- ഗസ്റ്റിന് ബന്ധമില്ലാത്ത LAN ബ്രോഡ്കാസ്റ്റ് ട്രാഫിക് കാണുന്നില്ല.