VPN ക്ലയന്റായി Pi: ഒരു മാനേജർ അതോ സ്വന്തം സ്ക്രിപ്റ്റോ?
Raspberry Pi-യിൽ NetworkManager പ്രൊഫൈലിനെ കൈകൊണ്ട് എഴുതിയ ക്ലയന്റ് സ്ക്രിപ്റ്റുമായി താരതമ്യം ചെയ്യുക, പൂർണ്ണ ടണൽ, DNS, IPv6, ടണൽ വീഴുമ്പോഴുള്ള പെരുമാറ്റം എന്നിവ ഉൾപ്പെടെ.
സ്വന്തം പുറത്തേക്കുള്ള ട്രാഫിക് മാത്രം സംരക്ഷിക്കേണ്ട Raspberry Pi-ന് രണ്ട് യാഥാർത്ഥ്യമായ രൂപകൽപ്പനകളുണ്ട്: നെറ്റ്വർക്ക് മാനേജർക്ക് ടണൽ സ്വന്തമാക്കാൻ അനുവദിക്കുക, അല്ലെങ്കിൽ അത് സ്വന്തമാക്കുന്ന ഒരു സ്ക്രിപ്റ്റ് സൂക്ഷിക്കുക. രണ്ടിനും ട്രാഫിക് വഹിക്കാനാകും. അവ വ്യത്യസ്ത സ്ഥലങ്ങളിൽ പരാജയപ്പെടുന്നു, രാത്രി രണ്ടു മണിക്ക് വിദൂരത്തുനിന്ന് നിങ്ങൾക്ക് രോഗനിർണയം ചെയ്യാനാകുന്ന പരാജയമാണ് തിരഞ്ഞെടുക്കാൻ യോഗ്യമായത്. ഉടമസ്ഥതയിൽ, IPv6-ഉം DNS-ഉം ഉൾപ്പെടുമ്പോൾ പൂർണ്ണ ടണൽ എന്താണ് അർത്ഥമാക്കുന്നത് എന്നതിൽ, ടണൽ വീഴുന്ന നിമിഷത്തിൽ എന്ത് സംഭവിക്കുന്നു എന്നതിൽ അവയെ താരതമ്യം ചെയ്യുക.
ഒരു ടണലിന് രണ്ട് ഉടമകൾ
ഡിസൈൻ A സിസ്റ്റത്തിന്റെ നെറ്റ്വർക്ക് മാനേജർക്കുള്ളിലെ ഒരു പ്രൊഫൈലാണ്: ഇറക്കുമതി ചെയ്ത OpenVPN പ്രൊഫൈൽ അല്ലെങ്കിൽ തദ്ദേശീയ WireGuard കണക്ഷൻ, ബൂട്ടിൽ Ethernet-ഉം Wi-Fi-യും ഉയർത്തുന്ന അതേ സേവനം അതിനെ സജീവമാക്കുന്നു. ഡിസൈൻ B നിങ്ങളുടെ സ്വന്തം യൂണിറ്റാണ്, അത് ക്ലയന്റിനെ നേരിട്ട് പ്രവർത്തിപ്പിക്കുന്നു, റിസോൾവർ കോൺഫിഗറേഷൻ തിരുത്തുന്നു, സ്വന്തം റൂട്ടുകളും ഫയർവാൾ നിയമങ്ങളും ഇൻസ്റ്റാൾ ചെയ്യുന്നു. രണ്ടും നിയമാനുസൃതമാണ്; റൂട്ടിംഗ് പട്ടിക മാറ്റാൻ ആർക്കാണ് അനുവാദം എന്നതിൽ അവ വ്യത്യാസപ്പെടുന്നു.
ഉടമകൾ വ്യത്യസ്തരായതിനാൽ പരാജയങ്ങളും വ്യത്യസ്തമാണ്. A-യിൽ, സജീവമാകാത്ത പ്രൊഫൈൽ ഇന്റർഫേസ് മുകളിലും ടണൽ താഴെയും വിടുന്നു, മാനേജരുടെ ലോഗുകൾ കാരണം പറയുന്നു. B-യിൽ, പകുതി വിജയിക്കുന്ന സ്ക്രിപ്റ്റ് അവയെ സൃഷ്ടിച്ച പ്രോസസിന് ശേഷവും നിലനിൽക്കുന്ന റൂട്ടുകൾ അവശേഷിപ്പിക്കുന്നു. രണ്ടും ഒരുമിച്ച് പ്രവർത്തിപ്പിക്കുന്നതാണ് ഏറ്റവും മോശം ഫലം: രണ്ട് പ്രോസസുകൾ ഡിഫോൾട്ട് റൂട്ട് എഴുതുന്നു, ബൂട്ടിൽ രണ്ട് റിസോൾവർ എഡിറ്റുകൾ മത്സരിക്കുന്നു, കറക്കാൻ രണ്ട് സെറ്റ് രഹസ്യങ്ങൾ.
ഓരോ ടണലിനും ഒരു ഉടമയെ തിരഞ്ഞെടുക്കുക, എന്തെങ്കിലും പരീക്ഷിക്കുന്നതിന് മുമ്പ് മറ്റൊന്ന് പ്രവർത്തനരഹിതമാക്കുക. രണ്ട് ഉടമകൾ എന്നാൽ ടണൽ ഉയർന്നിരിക്കുമ്പോൾ എന്തും പരിഹരിക്കപ്പെടാത്തപ്പോൾ നോക്കാൻ രണ്ട് സ്ഥലങ്ങൾ എന്നുമാണ്. ഈ ഒരു നിയമം Pi VPN ചർച്ചകളിൽ വിവരിച്ചിരിക്കുന്ന ആശയക്കുഴപ്പമുള്ള അവസ്ഥകളിൽ ഭൂരിഭാഗവും തടയുന്നു.
ഇറക്കുമതി എന്താണ് സൃഷ്ടിക്കുന്നത്, എന്തല്ല
Raspberry Pi OS Bookworm-ഉം അതിനുശേഷമുള്ള പതിപ്പുകളിലും ഡിഫോൾട്ട് നെറ്റ്വർക്ക് കോൺഫിഗറേഷൻ ഉപകരണം NetworkManager ആണ്, അതിനാൽ പ്രൊഫൈൽ ക്ലയന്റ് ടണലിന്റെ സ്വാഭാവിക വീടാണ്. ഇറക്കുമതിക്ക് അനുയോജ്യമായ പ്ലഗിൻ ഇൻസ്റ്റാൾ ചെയ്തിരിക്കണം; അതില്ലാതെ ഇറക്കുമതി പിന്തുണയ്ക്കാത്ത കണക്ഷൻ തരത്തെക്കുറിച്ചുള്ള സന്ദേശത്തോടെ പരാജയപ്പെടുന്നു, അതാണ് നിർത്തി പ്ലഗിൻ ഇൻസ്റ്റാൾ ചെയ്യാനുള്ള സത്യസന്ധമായ സൂചന.
nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name
ഇറക്കുമതി ഒരു പ്രൊഫൈൽ സൂക്ഷിക്കുന്നു. അത് മറുവശം എത്താവുന്നതാണെന്ന് തെളിയിക്കുന്നില്ല, ഫയലിലെ ഓരോ നിർദ്ദേശവും പരിവർത്തനത്തെ അതിജീവിച്ചു എന്ന് ഉറപ്പും നൽകുന്നില്ല. ലഭിച്ച കണക്ഷൻ വീണ്ടും വായിച്ച് ഐഡന്റിറ്റിയും വിശ്വാസവും വഹിക്കുന്ന ഭാഗങ്ങൾ പരിശോധിക്കുക: സർട്ടിഫിക്കറ്റ്, ദൂരെയുള്ള ഹോസ്റ്റും പോർട്ടും, ഒപ്പം പാസ്വേഡ് ചോദിക്കുന്നുണ്ടോ സൂക്ഷിക്കുന്നുണ്ടോ എന്നതും.
--ask ഉപയോഗിച്ചുള്ള സജീവമാക്കൽ പങ്കിട്ട യന്ത്രത്തിൽ ഷെൽ ചരിത്രത്തിന് പുറത്ത് പാസ്ഫ്രേസ് നിർത്തുന്നു. മേൽനോട്ടമില്ലാത്ത Pi-ക്ക് ഒടുവിൽ പ്രൊഫൈൽ ബൂട്ടിൽ ഉയരണമെന്ന് നിങ്ങൾ ആഗ്രഹിക്കും, അത് കൈകൊണ്ട് ഒരിക്കൽ ഉയർത്തുന്നതിൽനിന്ന് വേറിട്ട തീരുമാനമാണ്.
പൂർണ്ണ ടണൽ, രണ്ട് ഡിസൈനുകളിലായുള്ള താരതമ്യം
പൂർണ്ണ ടണൽ റൂട്ടുകളെക്കുറിച്ചുള്ള പ്രസ്താവനയാണ്, ഉദ്ദേശ്യത്തെക്കുറിച്ചല്ല, രണ്ട് ഡിസൈനുകളും അത് വ്യത്യസ്തമായി പ്രകടിപ്പിക്കുന്നു. പ്രൊഫൈൽ സമീപനം മാനേജരോട് ഡിഫോൾട്ട് റൂട്ടും അതിന്റെ റിസോൾവർ ക്രമീകരണങ്ങളും ഇൻസ്റ്റാൾ ചെയ്യാൻ ആവശ്യപ്പെടുന്നു; സ്ക്രിപ്റ്റ് സമീപനം സ്ക്രിപ്റ്റ് പറയുന്നത് ചെയ്യുന്നു, ഒന്നും ചെയ്യാതിരിക്കുന്നതും ഉൾപ്പെടെ. പറഞ്ഞില്ലെങ്കിൽ ഒരു ഡിസൈനും IPv6 ഉൾക്കൊള്ളുന്നില്ല, തൊടാത്ത IPv6 ഡിഫോൾട്ട് റൂട്ട് IPv4 തികഞ്ഞതായി കാണുമ്പോൾ ടണലിന് പുറത്തേക്ക് ട്രാഫിക് സന്തോഷത്തോടെ കൊണ്ടുപോകും.
ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org
റൂട്ട് അന്വേഷണത്തിന് ഡോക്യുമെന്റേഷൻ വിലാസം ഉപയോഗിക്കുക, പരിശോധിക്കാൻ അനുവാദമുള്ള ഹോസ്റ്റ് കൊണ്ട് അത് മാറ്റുക. ആദ്യ കമാൻഡ് Pi സാധാരണ ലക്ഷ്യത്തിന് ഏത് ഇന്റർഫേസ് ഉപയോഗിക്കുമെന്ന് കാണിക്കുന്നു; രണ്ടാമത്തേത് IPv6 ഡിഫോൾട്ട് റൂട്ട് ഇപ്പോഴും ഉണ്ടോ എന്ന് കാണിക്കുന്നു; മൂന്നാമത്തേത് ഏത് റിസോൾവർ ഉത്തരം നൽകി എന്ന് തെളിയിക്കുന്നു. പൂർണ്ണ ടണലിനെക്കുറിച്ചുള്ള ഏത് പ്രസ്താവനയും വിശ്വസിക്കുന്നതിന് മുമ്പ് മൂന്നും വായിക്കുക.
ദാതാവിന്റെ നിർദ്ദേശങ്ങൾ പൂർണ്ണ ടണൽ വാഗ്ദാനം ചെയ്യുന്നുവെങ്കിലും IPv6 ഡിഫോൾട്ട് റൂട്ട് നിലനിൽക്കുന്നുവെങ്കിൽ, Pi ചോരുന്നു. അപ്ലിങ്കിൽ IPv6 പ്രവർത്തനരഹിതമാക്കുക അല്ലെങ്കിൽ പ്രൊഫൈലിനോട് അത് ആവശ്യപ്പെടാൻ പറയുക, പിന്നീട് കണ്ടെത്തുന്നതിന് പകരം ബോധപൂർവ്വം തീരുമാനിക്കുക.
തുറന്ന പരാജയം അടച്ച പരാജയത്തിനെതിരെ
ടണൽ വീഴുമ്പോൾ അതിന്റെ ഡിഫോൾട്ട് റൂട്ട് നഷ്ടപ്പെടുന്ന റൂട്ടിംഗ് പട്ടിക ലളിതമായി ഭൗതിക അപ്ലിങ്കിലേക്ക് മടങ്ങുന്നു, ട്രാഫിക് തുറന്ന് തുടരുന്നു. അതാണ് തുറന്ന പരാജയം, എന്തെങ്കിലും തടയുന്നില്ലെങ്കിൽ അതാണ് രണ്ട് ഡിസൈനുകളുടെയും ഡിഫോൾട്ട് പെരുമാറ്റം. മിക്കവരും അത് ആഴ്ചകൾക്ക് ശേഷം ഫയർവാൾ ലോഗ് വായിച്ച് കണ്ടെത്തുന്നു.
അടച്ച പരാജയം ടണൽ താഴെയിരിക്കുമ്പോൾ നിങ്ങൾക്ക് വിദൂര പ്രവേശനം നഷ്ടപ്പെടുത്തുന്നു, അതിനാൽ മാനേജ്മെന്റ് പാതയ്ക്ക് ബോധപൂർവ്വമായ ഒഴിവ് വേണം. ഒരു മാർഗം ടണലിന് പുറത്ത് VPN പീയറിന്റെ വിലാസം മാത്രം അനുവദിക്കുന്ന നിയമമാണ്:
sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject
പ്രവർത്തനച്ചെലവ് സത്യസന്ധമായി താരതമ്യം ചെയ്യുക. പ്രൊഫൈലിന് സാധാരണയായി ഈ നിയമം പ്രകടിപ്പിക്കാനാകില്ല, അതിനാൽ അടച്ച പരാജയം നിങ്ങളെ സ്ക്രിപ്റ്റ് ഡിസൈനിലേക്കോ ടണലിൽനിന്ന് സ്വതന്ത്രമായി നിയമം ഇൻസ്റ്റാൾ ചെയ്യുന്ന ചെറിയ യൂണിറ്റിലേക്കോ തള്ളുന്നു. ഏതായാലും ഒരു ആഴ്ച നിരസിക്കലുകൾ രേഖപ്പെടുത്തുക: നിശ്ശബ്ദ നിരസിക്കൽ തകർന്ന സേവനത്തിന് സമാനമാണ്, ഒരു സൈറ്റ് ലോഡ് ചെയ്യുന്നത് നിലച്ചു എന്ന് ഉപയോക്താവ് റിപ്പോർട്ട് ചെയ്യുമ്പോൾ കൗണ്ടർ നിങ്ങൾക്ക് ആവശ്യമാകും.
സ്ക്രീൻ ഇല്ലാത്ത Pi-ക്കുള്ള തിരഞ്ഞെടുപ്പ്
ഇമേജ് ഇതിനകം NetworkManager പ്രവർത്തിപ്പിക്കുന്നുവെങ്കിൽ, ടണലിന് പ്രത്യേകമായി ഒന്നും ആവശ്യമില്ലെങ്കിൽ, അത് അപ്ലിങ്കിനെ സ്വയമേവ പിന്തുടരണമെന്ന് നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, പ്രൊഫൈൽ എടുക്കുക. നിങ്ങൾക്ക് നയ അടിസ്ഥാനമാക്കിയ റൂട്ടിംഗ്, ഓരോ ലക്ഷ്യത്തിനും തിരഞ്ഞെടുക്കുന്ന നിരവധി ടണലുകൾ, അല്ലെങ്കിൽ ടണൽ ഉയരുന്നതിന് മുമ്പ് നിലനിൽക്കേണ്ട അടച്ച-പരാജയ നിയമം ആവശ്യമെങ്കിൽ, സ്ക്രിപ്റ്റ് എടുത്ത് ബൂട്ട് ക്രമവും വൃത്തിയാക്കലും ഉൾപ്പെടെ അതിന്റെ ഓരോ ഭാഗവും സ്വന്തമാക്കുക. രണ്ട് ഡിസൈനുകളും കലർത്തുന്നത് ഏതെങ്കിലും ഒന്നിനെക്കാൾ ചെലവേറിയതാണ്.
അവയ്ക്കിടയിലുള്ള മാറ്റം പ്രധാനമായും ക്രമത്തിന്റെ കാര്യമാണ്: പഴയ ഉടമയെ പ്രവർത്തനരഹിതമാക്കുക, കാലഹരണപ്പെട്ട റൂട്ടോ റിസോൾവർ എൻട്രിയോ അവശേഷിക്കുന്നില്ലെന്ന് ഉറപ്പാക്കുക, തുടർന്ന് പുതിയത് സജീവമാക്കി രണ്ടുതവണ റീബൂട്ട് ചെയ്യുക. ഒരു റീബൂട്ട് രണ്ടാമത്തേത് വെളിപ്പെടുത്തുന്ന ഒരു മത്സരം മറയ്ക്കാം. ടണലല്ല, Pi പരീക്ഷിച്ച് അവസാനിപ്പിക്കുക: ഒരു പേര് പരിഹരിക്കുക, IPv4 വഴി എന്തെങ്കിലും എടുക്കുക, സൂക്ഷിച്ചിട്ടുണ്ടെങ്കിൽ IPv6 വഴിയും എടുക്കുക, തുടർന്ന് ടണൽ വീഴ്ത്തി നിങ്ങൾ തിരഞ്ഞെടുത്ത പെരുമാറ്റം യഥാർത്ഥത്തിൽ സംഭവിക്കുന്നുവെന്ന് ഉറപ്പാക്കുക. ip link-ലെ ഇന്റർഫേസ് പരീക്ഷണത്തിന്റെ തുടക്കമാണ്, അവസാനമല്ല.