VPN റൂട്ട് അതോ ഫയർവാൾ നിയമമോ: പാക്കറ്റ് ഏതാണ് ഇടുന്നത്?
റൂട്ട് ഒരു വഴി തിരഞ്ഞെടുക്കുന്നു, ഫിൽട്ടർ അനുമതി തീരുമാനിക്കുന്നു. ഫയർവാൾ നിയമം വിശാലമാക്കുന്നതിന് മുമ്പ് അതേ ഉറവിടം, ലക്ഷ്യസ്ഥാനം, ദിശ എന്നിവയ്ക്ക് രണ്ടും പരിശോധിക്കുക.
ഒരേ പാക്കറ്റിൽ രണ്ട് സ്വതന്ത്ര തീരുമാനങ്ങൾ ഉണ്ടാകുന്നു, അവയിൽ ഏതും അഭ്യർത്ഥന നിശ്ശബ്ദമായി അവസാനിപ്പിക്കാം. റൂട്ട് തിരയൽ ഒരു ഇന്റർഫേസും അടുത്ത ഹോപ്പും തിരഞ്ഞെടുക്കുന്നു, പിന്നീട് പാക്കറ്റ് ഫിൽട്ടർ ആ കോമ്പിനേഷൻ അനുവദനീയമാണോ എന്ന് തീരുമാനിക്കുന്നു. സമയപരിധി കഴിയുന്നത് രണ്ടിൽ ഒന്ന് നിരസിച്ചു, ഏതെന്നല്ല എന്ന് നിങ്ങളോട് പറയുന്നു. ഘട്ടങ്ങൾ ക്രമത്തിൽ ചെയ്യുക, അപ്പോൾ അറ്റകുറ്റപ്പണി സാധാരണയായി ഊഹമല്ലാതാകും.
രണ്ട് തീരുമാനങ്ങൾ, ഒരു പാക്കറ്റ്, രണ്ട് ഉടമകൾ
റൂട്ട് തിരയൽ ആദ്യം നയ നിയമങ്ങളെ സമീപിക്കുന്നു, പിന്നീട് അവ ചൂണ്ടുന്ന പട്ടികയെ, ലക്ഷ്യസ്ഥാനവുമായി പൊരുത്തപ്പെടുന്ന ഏറ്റവും നിർദ്ദിഷ്ട പ്രിഫിക്സ് തിരഞ്ഞെടുക്കുന്നു. ടണൽ റൂട്ട് ഇൻസ്റ്റാൾ ചെയ്ത ക്ലയന്റിനാണ് ആ തീരുമാനത്തിന്റെ ഉടമസ്ഥത, ഫയർവാൾ നിയമത്തിലെ ഒന്നിനും അതിനെ മാറ്റിസ്ഥാപിക്കാനാവില്ല. തിരയൽ അപ്രതീക്ഷിതമായ ഒരിടത്തേക്ക് ചൂണ്ടുമ്പോൾ, തുടർന്നുള്ള ഓരോ ഘട്ടവും തെറ്റായ പാക്കറ്റിൽ പ്രവർത്തിക്കുന്നു.
ഫിൽട്ടറിംഗ് വേറെയാണ്. Linux ഹോസ്റ്റിൽ netfilter ഹുക്കുകൾ പാക്കറ്റ് ആർക്കുള്ളതെന്ന് അനുസരിച്ച് ട്രാഫിക് വിഭജിക്കുന്നു: ഔട്ട്പുട്ട് യന്ത്രം വിടുന്നു, ഇൻപുട്ട് അതിൽ അവസാനിക്കുന്നു, ഫോർവേഡ് അതിലൂടെ കടക്കുന്നു. VPN ക്ലയന്റുകളെ സ്വീകരിച്ച് അവയെ LAN-ലേക്ക് റൂട്ട് ചെയ്യുന്ന ഗേറ്റ്വേയ്ക്ക് ഫോർവേഡ് പാത ആവശ്യമാണ്, മിക്ക ഡിഫോൾട്ട് കോൺഫിഗറേഷനുകളും ഒഴിച്ചിടുന്ന ചങ്ങല അതാണ്.
ഉറവിട തിരഞ്ഞെടുപ്പ് അതേ തീരുമാനത്തിന്റെ ഭാഗമാണ്, അവിടെയാണ് മിക്ക പൊരുത്തക്കേടുകളും ഒളിഞ്ഞിരിക്കുന്നത്. റൂട്ട് ഒന്ന് പേരിട്ടില്ലെങ്കിൽ കർണൽ പുറത്തേക്കുള്ള ഇന്റർഫേസിൽ നിന്ന് ഉറവിട വിലാസം തിരഞ്ഞെടുക്കുന്നു, അതിനാൽ LAN സബ്നെറ്റിനായി എഴുതിയ ഫിൽട്ടർ നിയമം ടണൽ വിലാസവുമായി പുറത്തുപോകുന്ന പാക്കറ്റുമായി ഒരിക്കലും പൊരുത്തപ്പെടുന്നില്ല.
തിരയൽ യഥാർത്ഥത്തിൽ എന്താണ് തിരഞ്ഞെടുത്തതെന്ന് വായിക്കുക
തീരുമാനം ഊഹിക്കുന്നതിനുപകരം അച്ചടിക്കുക. താഴെയുള്ള കമാൻഡ് ആ ലക്ഷ്യസ്ഥാനത്തിനായി കർണൽ ഉപയോഗിക്കുന്ന റൂട്ട്, ഇന്റർഫേസും അത് തിരഞ്ഞെടുക്കുന്ന ഉറവിടവും ഉൾപ്പെടെ പരിഹരിക്കുന്നു:
ip route get 10.8.0.5 ip route get 10.8.0.5 from 192.0.2.44 ip rule show ip route show table all | sed -n '1,40p'
VPN ക്ലയന്റുകൾ പലപ്പോഴും പ്രധാന പട്ടികയ്ക്ക് താഴെയുള്ള മുൻഗണനകളിൽ നയ നിയമങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നു, അതിനാൽ വൃത്തിയുള്ള പ്രധാന പട്ടിക തനിയെ ഒന്നും തെളിയിക്കുന്നില്ല. നിയമങ്ങളുടെ മുൻഗണനകളെ അവ തിരഞ്ഞെടുക്കുന്ന പട്ടികകളുമായി താരതമ്യം ചെയ്യുക, ടണൽ റൂട്ട് ഒരിക്കൽ കൈകൊണ്ട് ചേർക്കുന്നതിനുപകരം വീണ്ടും ബന്ധിപ്പിക്കുമ്പോൾ നിലനിൽക്കുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക.
നയാധിഷ്ഠിത IPsec റൂട്ടിംഗ് ഉൾക്കൊള്ളാത്ത മൂന്നാം പൊരുത്ത ഘട്ടം ചേർക്കുന്നു, എന്ന് strongSwan-ന്റെ ഫോർവേഡിംഗ് കുറിപ്പുകൾ ടണൽ, ട്രാൻസ്പോർട്ട് ക്രമീകരണങ്ങൾക്കായി വിവരിക്കുന്നു. സുരക്ഷാ നയം ട്രാഫിക്കിനെ പ്രിഫിക്സും പ്രോട്ടോക്കോളും അനുസരിച്ച് തിരഞ്ഞെടുക്കുന്നു, റൂട്ട് സംരക്ഷിക്കപ്പെടാത്ത പാക്കറ്റ് എവിടേക്ക് പോകുമെന്ന് മാത്രം തീരുമാനിക്കുന്നു. റൂട്ട് ചെയ്യപ്പെടുന്നെങ്കിലും പൊരുത്തമുള്ള സെലക്ടർ ഇല്ലാത്ത സബ്നെറ്റ് ഒന്നുകിൽ സംരക്ഷണമില്ലാതെ തുടരുന്നു, അല്ലെങ്കിൽ കോൺഫിഗറേഷൻ അനുസരിച്ച് ഉപേക്ഷിക്കപ്പെടുന്നു, രണ്ട് ഫലങ്ങളും ഫയർവാൾ പ്രശ്നമായി തോന്നുന്നില്ല. നയം അച്ചടിച്ച് അതിന്റെ സെലക്ടറുകളെ ടണൽ വഹിക്കുമെന്ന് നിങ്ങൾ പ്രതീക്ഷിച്ച പ്രിഫിക്സുകളുമായി താരതമ്യം ചെയ്യുക.
ഫിൽട്ടറിംഗ് ഒരു ഹുക്കിൽ പ്രയോഗിക്കുന്നു, ഒരു റൂട്ടിൽ അല്ല
VPN ശ്രോതാവിനെ അനുവദിക്കുന്ന നിയമം ഗേറ്റ്വേയ്ക്ക് തന്നെ അഭിസംബോധന ചെയ്ത ട്രാഫിക്കിനെക്കുറിച്ചുള്ള നിയമമാണ്. ആ ഗേറ്റ്വേയ്ക്ക് പിന്നിലുള്ള ഹോസ്റ്റുകളിലെത്തുന്ന ക്ലയന്റുകളെക്കുറിച്ച് അത് ഒന്നും പറയുന്നില്ല, കാരണം ഫോർവേഡ് ചെയ്ത ട്രാഫിക് മറ്റൊരു ചങ്ങലയിലൂടെ കടക്കുന്നു. നിയമക്കൂട്ടത്തെ ഒരു പരന്ന പട്ടികയായി വായിക്കുന്നതാണ് ശരിയെന്ന് തോന്നുന്ന നിയമം ഒരിക്കലും സജീവമാകാത്തതിന്റെ സാധാരണ കാരണം.
കൗണ്ടറുകൾ ചോദ്യം വേഗത്തിൽ തീർക്കുന്നു. പൂജ്യം പാക്കറ്റ് എണ്ണമുള്ള നിയമത്തിൽ ഒരിക്കലും എത്തിയിട്ടില്ല, ഇത് തെറ്റായ ചങ്ങല, തെറ്റായ ഇന്റർഫേസ് അല്ലെങ്കിൽ മുൻപത്തെ ഡ്രോപ്പ് ചൂണ്ടുന്നു. ഡ്രോപ്പ് നയത്തിന് കീഴിൽ എണ്ണം കൂടുന്ന നിയമമാണ് നിങ്ങൾ തിരഞ്ഞ അതിർത്തി, പാക്കറ്റ് തെറ്റായി റൂട്ട് ചെയ്യപ്പെടുന്നതിനുപകരം ഉപേക്ഷിക്കപ്പെടുന്നു.
ക്ലയന്റ് ഉപയോഗിക്കുന്ന പാതയിലൂടെ ഒരു പ്രോബ് അയയ്ക്കുക
ഗേറ്റ്വേയിൽ തന്നെ പ്രവർത്തിപ്പിക്കുന്ന പരിശോധനകൾ ഗേറ്റ്വേയുടെ സ്വന്തം ഉറവിട വിലാസത്തോടെ ഔട്ട്പുട്ടിലൂടെയും ഇൻപുട്ടിലൂടെയും കടക്കുന്നു. അത് ക്ലയന്റിന്റെ ഫോർവേഡ് ചെയ്ത അഭ്യർത്ഥനയിൽ നിന്ന് വ്യത്യസ്ത പാതയാണ്, അതിനാൽ വിജയകരമായ പ്രാദേശിക curl കാണുന്നതിനേക്കാൾ കുറവ് തെളിയിക്കുന്നു. പരാജയപ്പെടുന്ന യന്ത്രത്തിൽ നിന്ന് പരിശോധിക്കുക, അല്ലെങ്കിൽ ഇന്റർഫേസും ഉറവിടവും വ്യക്തമായി പിൻ ചെയ്യുക.
nc -vz -w 3 10.8.0.5 443 ping -c 3 -W 1 10.8.0.5 tcpdump -ni any host 10.8.0.5 and port 443 iptables -vnL FORWARD --line-numbers nft list ruleset | sed -n '1,60p'
ഇരു അറ്റങ്ങളിലും ക്യാപ്ചർ ചെയ്യുന്നത് ബാക്കിയുള്ള കേസുകളെ വേർതിരിക്കുന്നു. ക്ലയന്റ് വിട്ട് ഒരിക്കലും എത്താത്ത SYN എന്നാൽ റൂട്ടിംഗ്, എൻക്രിപ്ഷൻ അല്ലെങ്കിൽ മുകളിലെ ആക്സസ് ലിസ്റ്റ്. എത്തി മറുപടി ലഭിക്കാത്ത SYN എന്നാൽ സേവനം അല്ലെങ്കിൽ അതിന്റെ ഹോസ്റ്റ് ഫിൽട്ടർ, ടണൽ ഒരിക്കലും പ്രശ്നമായിരുന്നില്ല.
തിരികെ വരുന്ന ട്രാഫിക് സ്വന്തം നോട്ടത്തിന് അർഹമാണ്. അസമമായ റൂട്ടിംഗും വിപരീത പാത ഫിൽട്ടറിംഗും തെറ്റായ ഇന്റർഫേസിൽ എത്തുന്ന മറുപടികൾ ഉപേക്ഷിക്കുന്നു, അത് തടഞ്ഞ പോർട്ടിനുപകരം ഏകദിശാ കണക്ഷനായി കാണപ്പെടുന്നു. ഫയർവാൾ ഉണ്ടാക്കാത്ത ഒരു ലക്ഷണത്തിന് അതിനെ കുറ്റപ്പെടുത്തുന്നതിന് മുമ്പ് sysctl മൂല്യം പരിശോധിക്കുക.
ലോഗിംഗ് ആദ്യ ഘട്ടമല്ല, രണ്ടാം അഭിപ്രായമായി പ്രവർത്തിക്കുന്നു. ഫോർവേഡ് ചങ്ങലയിലെ താൽക്കാലിക ലോഗ് പ്രസ്താവന അതിൽ തട്ടിയ ഇന്റർഫേസും വിലാസങ്ങളും പേരിടുന്നു, പിന്നീട് നീക്കം ചെയ്യാൻ എളുപ്പമാണ്. അത് സ്ഥിരമായി വിട്ടാൽ ഉത്തരത്തിനുപകരം ലോഗ് വോളിയം പ്രശ്നം നിർമ്മിച്ചു.
ഓരോ മാറ്റവും വീണ്ടും ബന്ധിപ്പിക്കുമ്പോൾ നിലനിൽക്കുന്നയിടത്ത് വയ്ക്കുക
ip route add ഉപയോഗിച്ച് ചേർത്ത റൂട്ട് ഇന്റർഫേസ് താഴുന്നതുവരെ ജീവിക്കുന്നു. പകരം കണക്ഷൻ പ്രൊഫൈലിൽ സംരക്ഷിക്കുക: NetworkManager കണക്ഷനിൽ അധിക റൂട്ടുകൾ സ്വീകരിക്കുന്നു, netplan അവ ബൂട്ടുകൾക്കിടയിൽ സൂക്ഷിക്കുന്നു. അതേ നിയമം ക്ലയന്റ് വശത്തെ ഫയർവാൾ ഒഴിവിനും ബാധകമാണ്, അത് അടുത്ത റീലോഡിന് ശേഷം പോകുന്നു.
സെർവർ വശത്തെ നിയമങ്ങൾ സേവനം തുടക്കത്തിൽ ലോഡ് ചെയ്യുന്ന കോൺഫിഗറേഷൻ ഫയലിൽ പെടുന്നു, നിങ്ങൾ അടയ്ക്കുമ്പോൾ അവസാനിക്കുന്ന ഇന്ററാക്ടീവ് സെഷനിൽ അല്ല. നിയമം എഴുതുക, റീലോഡ് ചെയ്യുക, കൗണ്ടർ നീങ്ങിയെന്ന് ഉറപ്പാക്കുക, കാരണം സിന്റാക്സ് നിരസിച്ച റീലോഡ് പഴയ നിയമക്കൂട്ടം നിശ്ശബ്ദമായി അതിന്റെ സ്ഥാനത്ത് നിർത്തുന്നു.
തുടർന്ന് യഥാർത്ഥ ആപ്ലിക്കേഷൻ അഭ്യർത്ഥന ആദ്യം മുതൽ അവസാനം വരെ ആവർത്തിച്ച് ഏത് പാളി മാറിയെന്ന് രേഖപ്പെടുത്തുക. ഫിൽട്ടർ മാറ്റവും ആവശ്യമായിരുന്ന റൂട്ട് തിരുത്തൽ ഇപ്പോഴും പരാജയപ്പെടും, ആദ്യത്തേത് പോയെന്ന് അറിഞ്ഞാൽ രണ്ടാം പരാജയം വായിക്കാൻ വളരെ എളുപ്പമാണ്. ഫലത്തിനൊപ്പം തീയതിയും ക്ലയന്റ് പതിപ്പും രേഖപ്പെടുത്തുക, കാരണം റൂട്ടിംഗിന്റെയും ഫിൽട്ടറിംഗിന്റെയും ഡിഫോൾട്ടുകൾ റിലീസുകൾക്കിടയിൽ മാറുന്നു. ആ കുറിപ്പ് ടിക്കറ്റിൽ സൂക്ഷിക്കുക, അടുത്തയാൾ രണ്ട് ഘട്ട യാത്ര ആവർത്തിക്കാതെ നിങ്ങൾ നിർത്തിയിടത്ത് നിന്ന് തുടങ്ങട്ടെ.