VirtualBox VPN ലാബ്: ഗേറ്റ്വേ VM അല്ലെങ്കിൽ ഹോസ്റ്റ്-മാത്ര നെറ്റ്വർക്ക്
VirtualBox VPN ലാബിനായി റൂട്ട് ചെയ്ത ഗേറ്റ്വേ VM അല്ലെങ്കിൽ ഹോസ്റ്റ്-മാത്ര സെഗ്മെന്റ് തിരഞ്ഞെടുക്കുക, പിന്നീട് ടണൽ വീഴുമ്പോൾ അതിഥിയെ അടഞ്ഞ പരാജയത്തിലാക്കുക.
നിങ്ങളുടെ VPN ലാബിന് എത്ര യന്ത്രസംവിധാനം അർഹതയുണ്ടെന്ന് നിങ്ങൾ തീരുമാനിക്കണം. രണ്ട് VirtualBox സെഗ്മെന്റുകൾക്കിടയിലുള്ള റൂട്ട് ചെയ്ത ഗേറ്റ്വേ VM വിലാസ വിവർത്തനം, മടക്കപ്പാത, ഒരു യഥാർത്ഥ ക്ലയന്റ് ഇരിക്കുന്ന firewall സ്ഥാനം എന്നിവ പുനരുൽപ്പാദിപ്പിക്കുന്നു. ഒരു ഹോസ്റ്റ്-മാത്ര സെഗ്മെന്റ് നിങ്ങൾക്ക് ഒരു നിയന്ത്രിത വാതിൽ നൽകുന്നു, അതിൽ കൂടുതലൊന്നുമില്ല. ഗേറ്റ്വേ പതിപ്പിന് മൂന്ന് അതിഥികളും നിങ്ങൾ പരിപാലിക്കുന്ന ഒരു റൂട്ടിംഗ് പട്ടികയും വേണം; ഹോസ്റ്റ്-മാത്ര പതിപ്പിന് ഒരു അതിഥിയും ഒരു നയവും മതി. മൂന്ന് ചോദ്യങ്ങൾ അവയെ വേർതിരിക്കുന്നു, മൂന്നാമത്തേത് നിങ്ങളുടെ പരീക്ഷ ഒട്ടും വിജയിക്കുമോ എന്ന് തീരുമാനിക്കുന്നു.
എന്തെങ്കിലും ക്ലോൺ ചെയ്യുന്നതിന് മുമ്പ് മൂന്ന് ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകുക
VPN സെർവർ എന്ത് നിരീക്ഷിക്കണം എന്നതിൽ നിന്ന് തുടങ്ങുക. പരീക്ഷാ അതിഥിയുടേതല്ലാത്ത ഒരു ഉറവിട വിലാസം സെർവർ കാണേണ്ടതുണ്ടെങ്കിൽ, അവയ്ക്കിടയിൽ എന്തെങ്കിലും വിവർത്തനം ചെയ്യണം, ആ എന്തെങ്കിലും നിങ്ങൾ നിയന്ത്രിക്കുന്ന ഒരു റൂട്ടർ ആയിരിക്കണം. ഹോസ്റ്റ്-മാത്ര നെറ്റ്വർക്കിംഗ് ഹോസ്റ്റിന് അതിഥിയുടെ സെഗ്മെന്റിൽ ഒരു അഡാപ്റ്റർ നൽകുന്നു, വിവർത്തകനല്ല. പിന്നീട് അതിഥിക്ക് പുറത്തുള്ള എന്തിലെങ്കിലും എത്തണമെങ്കിൽ, നിങ്ങൾ ഒരു NAT അഡാപ്റ്റർ ബന്ധിപ്പിക്കുന്നു, VirtualBox-ന്റെ സ്വന്തം NAT എഞ്ചിൻ നിങ്ങളോട് ചോദിക്കാതെ ഉറവിടം വീണ്ടും എഴുതുന്നു.
അടുത്തതായി, ടണലല്ലാതെ മറ്റെന്തിലെങ്കിലും അതിഥിക്ക് എത്താമോ എന്ന് ചോദിക്കുക. ആ ഉത്തരം ആന്തരികമോ ഹോസ്റ്റ്-മാത്രയോ തിരഞ്ഞെടുക്കുന്നു, മിക്ക ലാബ് എഴുത്തുകളും ഒഴിവാക്കുന്ന ചോദ്യം ഇതാണ്. അവസാനം, ടണൽ വീഴുമ്പോൾ എന്ത് സംഭവിക്കണം എന്ന് ചോദിക്കുക, കാരണം അത് ടോപ്പോളജിയല്ല, നയമാണ് തീരുമാനിക്കുന്നത്, സന്തോഷകരമായ പാത മാത്രം തെളിയിക്കുന്ന ഒരു ലാബ് ഒന്നും തന്നെ പരീക്ഷിച്ചിട്ടില്ല.
| What the test requires | Routed gateway VM | Host-only guest |
|---|---|---|
| Server sees a translated source address | Yes, from your own MASQUERADE rule | No, VirtualBox NAT does it instead |
| The guest has exactly one egress | Yes, while the second adapter faces the tunnel | Only until a NAT adapter is attached |
| Policy is testable during a tunnel failure | Rules live in one place | Rules live on each guest |
മൂന്ന് റോളുകളെ ആന്തരിക നെറ്റ്വർക്കുകളാൽ ബന്ധിപ്പിക്കുക
മൂന്ന് അതിഥികളും രണ്ട് പേരുള്ള സെഗ്മെന്റുകളും ഉപയോഗിക്കുക, രണ്ടിലും അഡാപ്റ്ററുള്ള ഒരേയൊരു യന്ത്രം ഗേറ്റ്വേ ആയിരിക്കട്ടെ:
VBoxManage modifyvm lab-client --nic1 intnet --intnet1 WAN
VBoxManage modifyvm lab-server --nic1 intnet --intnet1 LAN
VBoxManage modifyvm lab-gw --nic1 intnet --intnet1 WAN --nic2 intnet --intnet2 LAN
ആന്തരിക നെറ്റ്വർക്കിന് പ്രത്യേക നിർമ്മാണ ഘട്ടമില്ല. --intnet1-ലെ സ്ട്രിംഗ് തന്നെയാണ് സെഗ്മെന്റ്: പേര് കൃത്യമായി യോജിച്ചാൽ മാത്രം രണ്ട് യന്ത്രങ്ങൾ അത് പങ്കിടുന്നു, ഹോസ്റ്റിൽ ഒന്നും അതിലേക്ക് ബന്ധിപ്പിച്ചിട്ടില്ല. ഈ അവസാന സ്വഭാവമാണ് ലാബ് വൃത്തിയായി ആവർത്തിക്കാനുള്ള കാരണം, കാരണം ഹോസ്റ്റിന്റെ റൂട്ടുകൾ, അതിന്റെ സ്വന്തം VPN ക്ലയന്റ്, അതിന്റെ firewall എന്നിവ ആകസ്മികമായി അതിഥികളിൽ എത്താൻ കഴിയില്ല. ആന്തരിക സെഗ്മെന്റിൽ DHCP സെർവറുമില്ല, നിങ്ങൾ ഒന്ന് ചേർത്താൽ മാത്രം, അതിനാൽ സ്ഥിര വിലാസങ്ങളാണ് ഏറ്റവും ചെറിയ പാത.
ക്ലയന്റിന് അതിന്റെ WAN വിലാസം മാത്രം നൽകുക, ഡിഫോൾട്ട് ഗേറ്റ്വേ ഗേറ്റ്വേയുടെ WAN വിലാസത്തിലേക്ക് ചൂണ്ടണം. സെർവർ LAN വിലാസം സ്വീകരിക്കുകയും ഗേറ്റ്വേയുടെ LAN വിലാസം സ്വന്തം ഡിഫോൾട്ട് ഗേറ്റ്വേയായി ഉപയോഗിക്കുകയും ചെയ്യുന്നു. ഒരു സെഗ്മെന്റിൽ രണ്ട് വിലാസങ്ങൾ സൂക്ഷിക്കുന്ന, അല്ലെങ്കിൽ മറ്റേ സെഗ്മെന്റിലേക്ക് വഴിതെറ്റിയ റൂട്ടുള്ള അതിഥിക്ക് റൂട്ടറിന് ചുറ്റുമുള്ള ഒരു പാതയുണ്ട്, താഴെയുള്ള പരീക്ഷകൾ നിങ്ങളോട് കള്ളം പറയും.
VM നാമങ്ങൾക്കരികിൽ നാല് വിലാസങ്ങളും രണ്ട് സെഗ്മെന്റ് പേരുകളും ഉള്ള ഒരു ടെക്സ്റ്റ് ഫയൽ സൂക്ഷിക്കുകയും അത് ഓരോ shell-ലും ഒട്ടിക്കുകയും ചെയ്യുന്നു. ആഴ്ചകൾക്ക് ശേഷം, പ്രൊഫൈൽ മാറ്റം എന്തെങ്കിലും തകർക്കുമ്പോൾ, ആ ഫയലാണ് പ്രൊഫൈൽ ഡീബഗ് ചെയ്യുന്നതും സ്വന്തം ഓർമ്മ ഡീബഗ് ചെയ്യുന്നതും തമ്മിലുള്ള വ്യത്യാസം.
ചോരരുതാത്ത സെഗ്മെന്റിന് ആന്തരികമോ ഹോസ്റ്റ്-മാത്രയോ തിരഞ്ഞെടുക്കുക
ഹോസ്റ്റ്-മാത്ര മോഡ് ഹോസ്റ്റിൽ തന്നെ ഒരു വെർച്വൽ അഡാപ്റ്റർ സൃഷ്ടിക്കുന്നു, സാധാരണയായി vboxnet0, ഹോസ്റ്റിന് അതിഥിയുടെ സെഗ്മെന്റിൽ ഒരു വിലാസം നൽകുന്നു. ഇത് അഡ്മിനിസ്ട്രേഷന് സൗകര്യപ്രദവും ഐസൊലേഷൻ പരീക്ഷയ്ക്ക് മാരകവുമാണ്, കാരണം ഹോസ്റ്റിന് ഇപ്പോൾ അതിഥിയിലേക്ക് നേരിട്ട് എത്താം, ഹോസ്റ്റ് വശത്തുള്ള ഓരോ സേവനവും സാധ്യമായ പാതയാകുന്നു. ആന്തരിക മോഡിൽ ഹോസ്റ്റ് അഡാപ്റ്റർ ഒട്ടുമില്ല. നെറ്റ്വർക്ക് ക്രമീകരണ പാനലിൽ രണ്ട് മോഡുകളും എളുപ്പത്തിൽ കൂടിക്കുഴയുന്നു, അതിനാൽ ലേബലല്ല, രേഖപ്പെടുത്തിയ വ്യത്യാസം പരിശോധിക്കുക (VirtualBox നെറ്റ്വർക്കിംഗ് വിശദാംശങ്ങൾ പേജ് കാണുക).
ടണൽ ഉപയോഗിക്കേണ്ട അതിഥിക്ക്, ആന്തരികമാണ് സുരക്ഷിതമായ ഡിഫോൾട്ട്, ഗേറ്റ്വേ ഒരേയൊരു പുറത്തേക്കുള്ള വഴി. ഹോസ്റ്റ്-മാത്ര നിലനിർത്തുന്നുവെങ്കിൽ, ഹോസ്റ്റ് അഡാപ്റ്ററെ ഒരു മാനേജ്മെന്റ് പാതയായി കണക്കാക്കി അത് ഉറക്കെ പറയുക: ഹോസ്റ്റിന് അതിഥിയിലേക്ക് എത്താം, അതിഥിക്ക് ഹോസ്റ്റിനെ പുറത്തേക്കുള്ള വഴിയായി ഉപയോഗിക്കാൻ കഴിയരുത്.
VBoxManage modifyvm lab-client --nic1 hostonly --hostonlyadapter1 vboxnet0
നിങ്ങൾക്ക് തെളിയിക്കാനാകുന്ന ഐസൊലേഷൻ നിങ്ങൾ കോൺഫിഗർ ചെയ്ത ഐസൊലേഷനാണ്. ഒരു ആന്തരിക അഡാപ്റ്റർ, ഗേറ്റ്വേയിൽ ഡിഫോൾട്ട് റൂട്ട്, NAT അഡാപ്റ്റർ ഇല്ലാത്ത അതിഥിക്ക് ഗേറ്റ്വേയെ ഒഴിവാക്കുന്ന പാതയില്ല. ഹോസ്റ്റ്-മാത്ര അഡാപ്റ്ററും NAT അഡാപ്റ്ററും ഉള്ള അതിഥിക്ക് രണ്ട് പാതകളുണ്ട്, അവയിൽ ഒന്ന് മാത്രമാണ് നിങ്ങൾ പരീക്ഷിക്കാൻ ഉദ്ദേശിച്ചത്.
ഗേറ്റ്വേയിൽ റൂട്ട് ചെയ്ത് വിവർത്തനം ചെയ്യുക, പിന്നീട് അതിനെ അടഞ്ഞ പരാജയത്തിലാക്കുക
VirtualBox സെഗ്മെന്റുകൾക്കിടയിൽ കൈമാറ്റം ചെയ്യുന്നില്ല; അത് അതിഥിയാണ് ചെയ്യുന്നത്. VPN സെർവർ VM ഗേറ്റ്വേയുടെ പിന്നിലിരിക്കുമ്പോൾ, കൈമാറ്റം സജീവമാക്കി ക്ലയന്റിന്റെ ട്രാഫിക് സെർവറിലേക്ക് പുറപ്പെടുമ്പോൾ വിവർത്തനം ചെയ്യുക:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
ആ നിയമത്തോടെ സെർവർ ക്ലയന്റിന്റെ പകരം ഗേറ്റ്വേയുടെ LAN വിലാസം കാണുന്നു, ഓപ്പറേറ്റർ NAT-ന് പിന്നിലുള്ള യഥാർത്ഥ ക്ലയന്റ് നെറ്റ്വർക്ക് തലയ്ക്ക് അങ്ങനെയാണ് കാണപ്പെടുന്നത്. sysctl മൂല്യം /etc/sysctl.d/-ൽ, നിയമം ഡിസ്ട്രിബ്യൂഷൻ ഉപയോഗിക്കുന്ന firewall സേവനത്തിൽ സൂക്ഷിക്കുക, അല്ലെങ്കിൽ റീബൂട്ട് ലാബിനെ നിശബ്ദമായി റൂട്ട് ചെയ്തതും എന്നാൽ വിവർത്തനം ചെയ്യാത്തതുമായ അവസ്ഥയിലേക്ക് തിരികെ കൊണ്ടുവരും.
കൈമാറ്റം അനുമതിയല്ല. ACCEPT-ന്റെ ഡിഫോൾട്ട് FORWARD നയത്തിന് കീഴിൽ, ഡിഫോൾട്ട് റൂട്ട് ഗേറ്റ്വേയിലേക്ക് ചൂണ്ടുന്ന അതിഥി, ടണൽ ഉണ്ടായാലും ഇല്ലെങ്കിലും, റൂട്ടിംഗ് പട്ടിക തിരഞ്ഞെടുക്കുന്ന ഇന്റർഫേസിലൂടെ പുറപ്പെടുന്നു. ഗേറ്റ്വേയ്ക്ക് പാക്കേജ് ഇൻസ്റ്റാളേഷനായി NAT അഡാപ്റ്ററും ഉണ്ടെങ്കിൽ, ടണൽ വീഴുന്ന നിമിഷത്തിൽ ആ അഡാപ്റ്റർ പ്രവർത്തിക്കുന്ന എൻക്രിപ്ഷൻ ഇല്ലാത്ത പുറത്തേക്കുള്ള വഴിയാണ്, നിങ്ങളുടെ VPN-മാത്ര പരീക്ഷ ഒരിക്കലും VPN-മാത്ര പരീക്ഷയായിരുന്നില്ല.
സെർവർ ദൂരെയായിരിക്കുകയും ടണൽ ഗേറ്റ്വേ തന്നെ അവസാനിപ്പിക്കുകയും ചെയ്യുമ്പോൾ, അതേ തീരുമാനം ഇന്റർനെറ്റിൽ എത്തുന്ന NIC-യിലേക്കല്ല, ടണൽ ഇന്റർഫേസിലേക്കാണ് ചൂണ്ടുന്നത്:
iptables -P FORWARD DROP
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
ടണലിന്റെ സ്വന്തം പുറം ഗതാഗതവും ബാൻഡിന് പുറത്തുള്ള മാനേജ്മെന്റ് റൂട്ടും കൈമാറ്റം ചെയ്യുന്ന ട്രാഫിക്കിൽ നിന്ന് വേർതിരിച്ച് സൂക്ഷിക്കുക. ഗേറ്റ്വേ നന്നാക്കാനുള്ള ഒരേയൊരു വഴി നിങ്ങൾ ഡീബഗ് ചെയ്യുന്ന ടണലിലൂടെയാണെങ്കിൽ, ലാബ് ഒരു ലോക്ക്ഔട്ട് അഭ്യാസമായി മാറുന്നു. സീരിയൽ കൺസോൾ, ഹോസ്റ്റ്-മാത്ര മാനേജ്മെന്റ് അഡാപ്റ്റർ, അല്ലെങ്കിൽ അറിയപ്പെടുന്ന നല്ല അവസ്ഥയുടെ സ്നാപ്പ്ഷോട്ട് എന്നിവ കേടായ റൂട്ടർ കൈകൊണ്ട് വീണ്ടെടുക്കുന്നതിനേക്കാൾ വിലകുറഞ്ഞതാണ്.
പാത ഹോസ്റ്റിൽ നിന്നല്ല, അതിഥിയിൽ നിന്ന് പരിശോധിക്കുക
പുറത്തേക്ക് പ്രവർത്തിക്കുക. ക്ലയന്റ് ഗേറ്റ്വേയുടെ WAN വിലാസത്തിൽ എത്തുന്നുവെന്ന്, തുടർന്ന് ഗേറ്റ്വേ വഴി സെർവറിൽ എത്തുന്നുവെന്ന്, തുടർന്ന് VPN പോർട്ടിലേക്കുള്ള കണക്ഷൻ പുറപ്പെട്ട് തിരികെ വരുന്നുവെന്ന് ഉറപ്പാക്കുക. ഗേറ്റ്വേയുടെ രണ്ട് ഇന്റർഫേസുകളിലെയും ക്യാപ്ചർ ഉത്തരം വരുന്നുണ്ടോ, മടക്കപ്പാതയിൽ വലിച്ചെറിയപ്പെടുന്നുണ്ടോ എന്ന് കാണിക്കുന്നു, ക്ലയന്റിൽ മാത്രമുള്ള ക്യാപ്ചറിന് അത് വേർതിരിക്കാനാവില്ല:
tcpdump -ni eth0 udp port 1194
tcpdump -ni tun0 udp port 1194
തുടർന്ന് പുറത്തേക്കുള്ള വഴി തെളിയിക്കുക. അതിഥിയിൽ നിന്ന് ഒരു വിലാസ പ്രതിഫലന സേവനത്തോട് ഏത് ഉറവിടമാണ് കാണുന്നതെന്ന് ചോദിച്ച് ഗേറ്റ്വേയുടെ സ്വന്തം പുറത്തേക്കുള്ള വിലാസവുമായി താരതമ്യം ചെയ്യുക; ഉത്തരം ഹോസ്റ്റിന്റെ വിലാസവുമായി യോജിക്കുന്നുവെങ്കിൽ, ടണലിന് ചുറ്റുമുള്ള ഒരു പാതയുണ്ട്. അതിഥി യഥാർത്ഥത്തിൽ ഏത് റിസോൾവർ ഉപയോഗിക്കുന്നുവെന്ന് പരിശോധിക്കുക, IPv6 വെവ്വേറെ പരിശോധിക്കുക, കാരണം IPv6 സജീവമായിരിക്കുമ്പോൾ ടണൽ IPv4 മാത്രം വഹിക്കുന്ന സെഗ്മെന്റ് ആകസ്മികമായല്ല, രൂപകൽപ്പന പ്രകാരം ചോരുന്നു.
അവസാനം, അത് ബോധപൂർവം തകർക്കുക. ടണൽ നിർത്തുക, അല്ലെങ്കിൽ അതിന്റെ പുറം പോർട്ട് തടയുക, അതിഥിയിൽ നിന്ന് പുതിയ കണക്ഷൻ തുറക്കുക. അത് പരാജയപ്പെടണം, കാരണം നിങ്ങൾക്ക് പേരിടാൻ കഴിയുന്ന ഒന്നായിരിക്കണം: റൂട്ടില്ല, നിരസിക്കൽ നിയമമുണ്ട്, അല്ലെങ്കിൽ റിസോൾവർ മരിച്ചു. ടണൽ വീണ്ടും ആരംഭിച്ച് നെറ്റ്വർക്ക് പുനർനിർമ്മിക്കാതെ അതിഥി കരകയറുന്നുവെന്ന് ഉറപ്പാക്കുക. Hamachi അല്ലെങ്കിൽ ZeroTier പോലുള്ള ഒരു mesh VPN ലാബ് പങ്കിടുന്നുവെങ്കിൽ, ബ്രിഡ്ജ് ചെയ്ത അഡാപ്റ്റർ mesh-അല്ല, അഡാപ്റ്ററിന്റെ പേര് പിന്തുടരുന്നു എന്ന് ഓർക്കുക, അതിനാൽ ക്ലയന്റ് സ്വന്തം വെർച്വൽ അഡാപ്റ്റർ ഇൻസ്റ്റാൾ ചെയ്തതിന് ശേഷം ബ്രിഡ്ജ് വീണ്ടും ചൂണ്ടണം.
VBoxManage list bridgedifs
VBoxManage modifyvm lab-client --bridgeadapter1 <mesh-adapter-name>
അതിഥിയുടെ ടണൽ ഹോസ്റ്റുമായി പങ്കിടുന്നത് പ്രശ്നം പ്രതിഫലിപ്പിക്കുന്നു. ഹോസ്റ്റിന്റെ ഡിഫോൾട്ട് റൂട്ട് അതിഥിയിലേക്ക് ചൂണ്ടുന്നത് പ്രവർത്തിക്കുന്നു, അതിഥിക്കുള്ളിലെ ഒരു പ്രോക്സിയും പ്രവർത്തിക്കുന്നു; ഹോസ്റ്റ് വഴിയുള്ള NAT ഹോസ്റ്റ് ആരംഭിച്ച ട്രാഫിക്കിന് അതിഥിയുടെ ടണൽ വഹിക്കുന്നില്ല. സെഗ്മെന്റ് പേരുകളും firewall നിയമങ്ങളും ഒരിടത്ത് സൂക്ഷിക്കുക, പ്രവർത്തിക്കുന്ന അവസ്ഥയുടെ സ്നാപ്പ്ഷോട്ട് എടുക്കുക, സെർവർ നിരീക്ഷിച്ച ഉറവിട വിലാസം രേഖപ്പെടുത്തുക. അപ്പോൾ അടുത്ത പ്രൊഫൈൽ മാറ്റം പുനർനിർമ്മിച്ച ലാബിന് പകരം ഒരു സ്ക്രിപ്റ്റ് ഓട്ടത്തിന്റെ ചെലവ് മാത്രമാകും.