ഒരു Linux യന്ത്രത്തിൽ രണ്ട് VPN: ഫലങ്ങൾ കൂട്ടിക്കലർത്താതെ ഓരോന്നും വെവ്വേറെ പരിശോധിക്കുക
രണ്ട് പച്ച ഐക്കണുകൾ താരതമ്യമല്ല. ഓരോ ടണലും അതിന്റെ സ്വന്തം നാമസ്ഥലത്ത് വയ്ക്കുക, പ്രതീക്ഷ ആദ്യം എഴുതുക, ഫലം വിശ്വസിക്കുന്നതിന് മുമ്പ് പാത തെളിയിക്കുക.
രണ്ട് പച്ച കണക്ഷൻ ഐക്കണുകൾ താരതമ്യം പോലെ തോന്നുന്നു, സാധാരണയായി അത് യാദൃച്ഛികത മാത്രമാണ്. പരീക്ഷണ അഭ്യർത്ഥനയ്ക്ക് രണ്ട് ടണലുകളിൽ ഏതെങ്കിലും ഉപയോഗിക്കാമായിരുന്നെങ്കിൽ, ഫലം മികച്ച സാഹചര്യത്തിൽ അവയിലൊന്നിനെ വിവരിക്കുന്നു, മോശം സാഹചര്യത്തിൽ ഒന്നിനെയുമല്ല. ഓരോ നിരീക്ഷണത്തിനും ഒരു നെറ്റ്വർക്ക് സന്ദർഭം, ഉദ്ദേശിച്ച ലക്ഷ്യസ്ഥാനം, പരീക്ഷണം പ്രവർത്തിക്കുന്നതിന് മുമ്പ് എഴുതിയ പ്രതീക്ഷ എന്നിവ നൽകുക. നിങ്ങൾ തന്നെ കൈകാര്യം ചെയ്യുന്ന Linux യന്ത്രത്തിൽ, പേരുള്ള നെറ്റ്വർക്ക് നാമസ്ഥലങ്ങളാണ് ആ വേർതിരിവ് വാങ്ങാനുള്ള ഏറ്റവും വിലകുറഞ്ഞ വഴി.
രണ്ട് പച്ച വിളക്കുകൾ താരതമ്യമല്ല
നാമസ്ഥലം റൂട്ടിംഗ് പട്ടികകൾ, ഇന്റർഫേസുകൾ, നെറ്റ്വർക്ക് സ്റ്റാക്കിന്റെ അവസ്ഥ എന്നിവ വേർതിരിക്കുന്നു, അതിനാൽ ഒന്നിനുള്ളിൽ തുടങ്ങിയ അഭ്യർത്ഥന മറ്റൊന്നിന്റെ ടണൽ നിശ്ശബ്ദമായി കടമെടുക്കാൻ കഴിയില്ല. വേർതിരിക്കാത്തത് പ്രൊസസർ, ഭൗതിക അപ്ലിങ്ക്, അല്ലെങ്കിൽ ഹോസ്റ്റിൽ പ്രവർത്തിക്കുന്ന നാമം പരിഹരിക്കൽ സേവനം എന്നിവയാണ്. ഈ അവസാന വിടവിലാണ് ഇത്തരം പരീക്ഷണങ്ങളിൽ ഭൂരിഭാഗവും ആരും ശ്രദ്ധിക്കാതെ പരാജയപ്പെടുന്നത്. നാമസ്ഥലം വിട്ട് ഹോസ്റ്റിന്റെ പരിഹാരകനോട് ചോദിക്കുന്ന തിരയൽ പരീക്ഷണത്തിലുള്ള ടണലുമായി യാതൊരു ബന്ധവുമില്ലാത്ത ഉത്തരം തിരികെ നൽകുന്നു.
ഈ നടപടിക്രമം മുമ്പേ തയ്യാറാക്കി അംഗീകരിച്ച രണ്ട് പരീക്ഷണ നാമസ്ഥലങ്ങളും പ്രവർത്തിക്കുന്ന ബാഹ്യ കണക്റ്റിവിറ്റിയും പിന്തുണയുള്ള ക്ലയന്റുകളും അനുമാനിക്കുന്നു. ഇത് ഒന്നും സൃഷ്ടിക്കുന്നില്ല, ഒന്നും രേഖപ്പെടുത്തുന്നില്ല, ഒരു കോൺഫിഗറേഷനും മാറ്റിസ്ഥാപിക്കുന്നുമില്ല. ക്ലയന്റിന് പൂർണ്ണ ഡെസ്ക്ടോപ്പ് സെഷൻ ആവശ്യമായിരിക്കുമ്പോഴോ അതിന് പുറത്ത് പ്രവർത്തിക്കാൻ വിസമ്മതിക്കുമ്പോഴോ വേറിട്ട വെർച്വൽ യന്ത്രങ്ങളാണ് സത്യസന്ധമായ തിരഞ്ഞെടുപ്പ്.
ആദ്യ പ്രവാഹത്തിന് മുമ്പ് പ്രതീക്ഷ ഉറപ്പിക്കുക
ഓരോ സന്ദർഭത്തിനും വിജയം എങ്ങനെയിരിക്കുമെന്ന് തീരുമാനിക്കുക: പരിഹാരകൻ, സേവനത്തിന്റെ പേര്, പ്രതീക്ഷിക്കുന്ന വിലാസം, ടണൽ വീഴുമ്പോൾ ആവശ്യമായ പെരുമാറ്റം. ആ ആസൂത്രിത മൂല്യങ്ങൾ അവയുടെ സ്വന്തം നിരയിൽ സൂക്ഷിക്കുക, കാരണം പദ്ധതിയും നിരീക്ഷണവും കലർത്തുന്ന രേഖ സമയമുദ്രയുള്ള കൽപിതകഥയാണ്. താഴെയുള്ള പരിശോധനാപട്ടികയാണ് രേഖയ്ക്ക് വേണ്ട രൂപം, ആദ്യ കണക്ഷന് മുമ്പ് ഓരോ വരിയും പൂരിപ്പിക്കാവുന്നതായിരിക്കണം.
| Tunnel | Owner | Client interface inside the namespace | Proof command | Required on disconnect |
|---|---|---|---|---|
| vpn-a | the identity that owns profile A, recorded by name | its own tun device, never the host's | ip -n vpn-a -4 route get 10.55.10.20 | traffic stops; no host-side fallback |
| vpn-b | a separate owner, even when both run on one box | its own tun device in its own namespace | ip -n vpn-b -4 route get 10.55.20.20 | verified separately, never inferred from A |
പരിഹാരകന്റെ വയറിംഗിന് ആ രേഖയിൽ സ്വന്തം വരി അർഹിക്കുന്നു, കാരണം കള്ളം പറയാൻ ഏറ്റവും സാധ്യതയുള്ള മേഖല അതാണ്. നാമസ്ഥലവുമായി ബന്ധിപ്പിച്ച ഫയലുകൾ, ഉദാഹരണത്തിന് /etc/netns/vpn-a/resolv.conf കമാൻഡ് നാമസ്ഥലത്തിനുള്ളിൽ പ്രവർത്തിക്കുമ്പോൾ അവയുടെ സാധാരണ പാതകളിൽ പ്രത്യക്ഷപ്പെടുന്നു, എന്ന് iproute2-ന്റെ നാമസ്ഥല റഫറൻസ് വിശദീകരിക്കുന്നു, എന്നാൽ നാമ സേവന മാറ്റത്തിന്റെ കോൺഫിഗറേഷനും അത് ആരംഭിക്കുന്ന ഏതെങ്കിലും പ്രാദേശിക പരിഹാരകനും തിരയൽ തിരികെ ഹോസ്റ്റിലേക്ക് വലിച്ചിടാം.
ഒരു സമയത്ത് ഒരു ടണൽ, മറ്റൊന്ന് വിച്ഛേദിച്ചത്
B താഴെയിരിക്കുമ്പോൾ A യെ അതിന്റെ നിലവിലുള്ള ഉടമവഴി ബന്ധിപ്പിക്കുക, തുടർന്ന് ഭരണ സന്ദർഭത്തിൽ നിന്ന് നയം, റൂട്ടുകൾ, തിരഞ്ഞെടുത്ത പാത എന്നിവ പരിശോധിക്കുക. താഴെയുള്ള കമാൻഡുകളിൽ മൂന്നെണ്ണം അവസ്ഥ വായിക്കുന്നു; അവസാനത്തേത് മാത്രമാണ് നാമ സേവനവുമായി ബന്ധപ്പെടുന്നത്, അവയൊന്നും ആപ്ലിക്കേഷൻ അഭ്യർത്ഥന അയയ്ക്കുന്നില്ല.
sudo ip -n vpn-a -4 rule show
sudo ip -n vpn-a -4 route show table all
sudo ip -n vpn-a -4 route get 10.55.10.20
sudo ip netns exec vpn-a getent ahostsv4 svc-a.lab.internalറൂട്ട് തിരയൽ ലക്ഷ്യസ്ഥാനത്തെക്കുറിച്ചുള്ള ഒരു സങ്കൽപ ചോദ്യത്തിന് ഉത്തരം നൽകുന്നു, അതിനാൽ സേവനം ട്രാഫിക് സ്വീകരിക്കുന്നുവെന്ന് കാണിക്കാൻ അതിനാവില്ല. ഈ രണ്ട് തരം തെളിവുകളും വെവ്വേറെ നിരകളിൽ സൂക്ഷിക്കുക, കാരണം നിരസിച്ച കണക്ഷന് അടുത്ത് ആരോഗ്യകരമായ റൂട്ട് യഥാർത്ഥവും സാധാരണവുമായ ഫലമാണ്. തുടർന്ന് യഥാർത്ഥ ആപ്ലിക്കേഷൻ ഉപയോഗിച്ച് ഒരു നിരുപദ്രവകരമായ അനുവദിച്ച അഭ്യർത്ഥന അയയ്ക്കുക, അത് A യുടെ സന്ദർഭത്തിൽ അതിന്റെ സാധാരണ പ്രത്യേകാവകാശമില്ലാത്ത ഉപയോക്താവായി ആരംഭിക്കുന്നു, സർട്ടിഫിക്കറ്റ് സ്ഥിരീകരണവും ആപ്ലിക്കേഷൻ പ്രാമാണീകരണവും അസ്പൃശ്യമായി, സേവനം കണ്ട ഉറവിട വിലാസത്തോടൊപ്പം ഫലം രേഖപ്പെടുത്തുക. A യെ അതിന്റെ ഉടമവഴി വിച്ഛേദിച്ച് B യ്ക്കായി മുഴുവൻ അടിസ്ഥാനരേഖയും ആവർത്തിക്കുക, നിങ്ങൾ വരുത്തുന്ന ഏത് കോൺഫിഗറേഷൻ മാറ്റവും കുറിക്കുക, അല്ലെങ്കിൽ രണ്ട് അടിസ്ഥാനരേഖകളും താരതമ്യപ്പെടുത്താവുന്നതല്ലാതാകും.
രണ്ടും മുകളിൽ, പിന്നെ ഒരു സമയത്ത് ഒന്ന് താഴെ
സ്ഥിരാവസ്ഥ എളുപ്പമുള്ള ഭാഗമാണ്. രണ്ട് ടണലുകളും ബന്ധിപ്പിച്ചിരിക്കുമ്പോൾ ഓരോ സന്ദർഭത്തിന്റെയും തിരയലും ആപ്ലിക്കേഷൻ അഭ്യർത്ഥനയും ആവർത്തിക്കുക, പിന്നെ ഒരു ടണൽ മുറിച്ച് മറ്റൊന്ന് പരിശോധിക്കുക. കണക്ഷന്റെ ക്രമം തന്നെയാണ് ചോദ്യമെങ്കിൽ വിപരീത ക്രമത്തിൽ വീണ്ടും ബന്ധിപ്പിക്കുക.
sudo ip netns exec vpn-a tcpdump -ni any port 443 -c 5
sudo ip netns exec vpn-b getent ahostsv4 svc-b.lab.internal
sudo ip -n vpn-b -4 route get 10.55.20.20പിടിച്ചെടുക്കൽ ആപ്ലിക്കേഷൻ ഫലത്തിന് തീർപ്പാക്കാനാവാത്ത തർക്കങ്ങൾ തീർപ്പാക്കുന്നു: അഭ്യർത്ഥന നിങ്ങൾ പ്രതീക്ഷിച്ച ഇന്റർഫേസിലൂടെ പോയോ അതോ തികച്ചും വേറൊന്നിലൂടെയോ എന്ന് കാണിക്കുന്നു. ഓരോ പരിവർത്തനത്തിനും ഉടമയുടെ പ്രവർത്തനം, സമയമുദ്ര, റൂട്ട് ഫലം, നാമ ഫലം, ആപ്ലിക്കേഷൻ ഫലം എന്നിവ രേഖപ്പെടുത്തുക. തുടർന്ന് ബാധിച്ച നാമസ്ഥലത്തിനുള്ളിൽ സുരക്ഷിതമായി അടയ്ക്കാനുള്ള ആവശ്യകത പരിശോധിക്കുക, കാരണം വേർതിരിവ് ഒരു കിൽ സ്വിച്ചല്ല. ഒരു നാമസ്ഥലം രണ്ട് ടണലുകളും വേറിട്ട് നിർത്തുന്നു; അതിന്റെ പ്രൊഫൈൽ ട്രാഫിക് നിൽക്കണമെന്ന് പറയുമ്പോൾ അത് ഏതെങ്കിലും ഒന്നിനെ ട്രാഫിക് വഹിക്കുന്നതിൽ നിന്ന് തടയുന്നില്ല.
ഈ രേഖ എന്ത് അവകാശപ്പെടാം, എന്ത് അവകാശപ്പെടാനാവില്ല
ഒരു വിജയം ഈ ക്രമീകരണത്തിന്, ഈ ഹോസ്റ്റിൽ, ആ സമയത്ത് ആ നിരീക്ഷണങ്ങൾ തെളിയിക്കുന്നു. ഒരു ഡെസ്ക്ടോപ്പ് റൂട്ടിംഗ് പട്ടിക പങ്കിടുന്ന രണ്ട് ക്ലയന്റുകളെക്കുറിച്ച് അത് ഒന്നും പറയുന്നില്ല, രണ്ട് ടണലുകളും ഭാരം വഹിക്കുമ്പോഴുള്ള ത്രൂപുട്ടിനെക്കുറിച്ചും ഒന്നും പറയുന്നില്ല. അവ വെവ്വേറെ പരീക്ഷണങ്ങളുള്ള വെവ്വേറെ ചോദ്യങ്ങളാണ്, ഓരോ വരിയോടും ചേർത്ത സന്ദർഭത്തിനൊപ്പമുള്ളത്ര മാത്രമേ താരതമ്യവും നല്ലതാകൂ.
പരാജയങ്ങൾ രേഖയിൽ വിജയങ്ങൾക്കൊപ്പം സൂക്ഷിക്കുക, ആ സമയത്ത് ഏത് ടണൽ മുകളിലായിരുന്നു എന്ന് അടയാളപ്പെടുത്തി. അളവെടുപ്പ് സമയത്തെ അവസ്ഥ മറയ്ക്കുന്ന വൃത്തിയുള്ള പേജ് അത് കാണിക്കുന്ന വൃത്തികെട്ട പേജിനേക്കാൾ മോശമാണ്. രേഖയെ പിന്നീട് വീണ്ടും ഉപയോഗിക്കാവുന്നതാക്കുന്നത് സന്ദർഭമാണ്, സ്കോറല്ല.
ഒരു യന്ത്രത്തിലെ രണ്ട് ടണലുകൾ സത്യസന്ധമായി താരതമ്യം ചെയ്യാം, പക്ഷേ നിങ്ങൾ യഥാർത്ഥത്തിൽ നിയന്ത്രിച്ച സന്ദർഭങ്ങളുടെ എണ്ണത്തിനുള്ളിൽ മാത്രം. അതിനപ്പുറമുള്ളത് അരികിൽ പച്ച ഐക്കണുള്ള ഒരു മോഹം മാത്രമാണ്.