SNAT, DNAT, Masquerade: ഓരോ VPN NAT നിയമവും എന്തു ചെയ്യുന്നു
സ്രോതസ്സ് NAT പ്രവാഹം എവിടെ നിന്ന് വരുന്നതായി കാണപ്പെടുന്നു എന്ന് വീണ്ടും എഴുതുന്നു; ലക്ഷ്യ NAT അത് എവിടേക്ക് പോകുന്നു എന്ന് വീണ്ടും എഴുതുന്നു. Masquerade കടമെടുത്ത വിലാസത്തോടുകൂടിയ സ്രോതസ്സ് NAT ആണ്.
VPN ഗേറ്റ്വേയുടെ ഇരുവശത്തും ക്യാപ്റ്റർ ഇടുക, ഒരു ഫ്ലോ നാല് വ്യത്യസ്ത വിലാസങ്ങൾ കാണിക്കാം. സ്രോതസ്സ് NAT പാക്കറ്റ് എവിടെ നിന്ന് വരുന്നു എന്ന് അവകാശപ്പെടുന്നത് വീണ്ടും എഴുതുന്നു; ലക്ഷ്യ NAT അത് എവിടേക്ക് പോകുന്നു എന്ന് വീണ്ടും എഴുതുന്നു. Masquerade മൂന്നാമത്തെ ദിശയല്ല, സ്ഥിരമായ മൂല്യത്തിനു പകരം പുറത്തേക്ക് പോകുന്ന ഇന്റർഫേസിന്റെ വിലാസം എടുക്കുന്ന സ്രോതസ്സ് NAT നിയമമാണ്. മൂന്നിൽ ഏതാണ് യഥാർത്ഥത്തിൽ വേണ്ടതെന്ന് പേരിടുക, ബഹുഭൂരിപക്ഷം «VPN തകർന്നു» ടിക്കറ്റുകളും തിരിച്ചുവരവ് പാതയെക്കുറിച്ചുള്ള ചോദ്യമായി ചുരുങ്ങും.
ഓരോ നിയമവും എന്ത് വീണ്ടും എഴുതുന്നു
സ്രോതസ്സ് NAT, സാധാരണയായി SNAT എന്ന് എഴുതുന്നു, ഫ്ലോ ഒരു റൗട്ടറോ ഗേറ്റ്വേയോ വിടുന്ന സമയത്ത് അതിന്റെ സ്രോതസ്സ് വിലാസം മാറ്റുന്നു. സ്വീകരിക്കുന്ന സേവനം വിവർത്തനം ചെയ്ത വിലാസത്തിന് മറുപടി നൽകുന്നു, വിവർത്തനം ചെയ്യുന്ന പെട്ടി ആ കണക്ഷനുവേണ്ടി സൂക്ഷിച്ച അവസ്ഥ ഉപയോഗിച്ച് മാറ്റം തിരികെയാക്കുന്നു. Linux-ൽ ആ അവസ്ഥ conntrack-ൽ കഴിയുന്നു, അതിനാൽ conntrack -L യഥാർത്ഥവും മറുപടി ട്യൂപിളുകളും ഒരുമിച്ച് അച്ചടിക്കുന്നു.
ലക്ഷ്യ NAT, അതായത് DNAT, പകരം ലക്ഷ്യം മാറ്റുന്നു. UDP 51820-ലെ പൊതു വിലാസത്തിലേക്ക് അയച്ച പാക്കറ്റ് 10.8.0.2:51820-ലെ ആന്തരിക WireGuard സെർവറിലേക്ക് വീണ്ടും എഴുതാം. വീട്ടിലെ റൗട്ടറോ ക്ലൗഡ് ലോഡ് ബാലൻസറോ VPN ശ്രോതാവിനെ ഇങ്ങനെ പ്രസിദ്ധീകരിക്കുന്നു, ടണൽ പിന്നീട് എന്ത് വഹിക്കാമെന്നതിനെക്കുറിച്ച് ഇത് ഒന്നും പറയുന്നില്ല.
Masquerade SNAT കുടുംബത്തിൽ പെടുന്നു. നിയമം വിലാസം പേരിടുന്നില്ല; പാക്കറ്റ് പുറത്തുപോകുമ്പോൾ പുറത്തേക്ക് പോകുന്ന ഇന്റർഫേസിനുള്ള വിലാസം ഉപയോഗിക്കുന്നു. Linux അതിന് സ്വന്തം ലക്ഷ്യം നൽകുന്നു, DHCP-യിൽ നിന്നോ PPPoE-യിൽ നിന്നോ വിലാസം നേടുന്ന WAN ഇന്റർഫേസിൽ ഇത് സാധാരണ തിരഞ്ഞെടുപ്പാണ്.
മാപ്പിംഗ് എവിടെയുണ്ടെന്നത് പരാജയം നിർണ്ണയിക്കുന്നു
ഓരോ അതിർത്തിയിലും ട്യൂപിൾ രേഖപ്പെടുത്തുക: ടണലിന് മുമ്പ്, അതിനുള്ളിൽ, പൊതു ഇന്റർഫേസിൽ. ടണലിനുള്ളിലെ ക്യാപ്റ്റർ പുറത്തുള്ളതിൽ നിന്ന് നിയമപരമായി വ്യത്യസ്തമാണ്, വിവർത്തനം എവിടെ നടക്കുന്നു എന്ന് അറിയാതെ രണ്ടും താരതമ്യം ചെയ്യുന്നയാൾ തെറ്റായ ഹോസ്റ്റിന്റെ പിന്നാലെ പോകും.
തിരിച്ചുവരവ് ട്രാഫിക് മാപ്പിംഗ് സൂക്ഷിക്കുന്ന ഉപകരണത്തിലൂടെ കടന്നുപോകണം. മറുപടി മറ്റൊരു പാത, രണ്ടാമത്തെ അപ്ലിങ്ക്, നയ പാത, അല്ലെങ്കിൽ നിങ്ങളുടെ സ്വകാര്യ ശ്രേണിയെക്കുറിച്ച് ഒരിക്കലും കേട്ടിട്ടില്ലാത്ത ദാതാവിലൂടെ പോയാൽ, അവസ്ഥയുള്ള വിപരീത വിവർത്തനം ഒരിക്കലും നടക്കുന്നില്ല, ക്ലയന്റിന് ഏകദിശ ട്രാഫിക് കാണാം. കൂടുതൽ സ്രോതസ്സ് NAT ചേർക്കുന്നത് കാണാതായ തിരിച്ചുവരവ് പാത കുറച്ച് മാത്രമേ ശരിയാക്കുന്നു; ഒരു ഫ്ലോയിൽ ലക്ഷണം ഒളിപ്പിച്ച് മറ്റെല്ലായിടത്തും വിലാസാധിഷ്ഠിത നയം തകർക്കാം.
മറ്റൊരു സാധാരണ തെറ്റ് ടണൽ റൂട്ടിംഗ് സാധ്യത സൃഷ്ടിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നതാണ്. പാക്കറ്റുകൾ ഇന്റർനെറ്റിലേക്ക് പോകുന്ന സ്വകാര്യ ക്ലയന്റിന് സാധുവായ ഇഗ്രസ് ക്രമീകരണം വേണം: ഡിഫോൾട്ട് റൂട്ട്, ഫോർവേഡ് ചെയ്യുന്ന ഗേറ്റ്വേ, സാധാരണയായി പൊതു വിലാസത്തിലേക്കുള്ള സ്രോതസ്സ് വിവർത്തനം. എൻക്രിപ്ഷൻ മാത്രം സ്വകാര്യ വിലാസത്തെ എത്തിച്ചേരാവുന്നതാക്കുന്നില്ല.
Masquerade അല്ലെങ്കിൽ വ്യക്തമായ SNAT
അവ വാഗ്ദാനം ചെയ്യുന്നതനുസരിച്ച് രണ്ടിനെയും താരതമ്യം ചെയ്യുക. Masquerade ഇഗ്രസ് വിലാസം തിരഞ്ഞെടുക്കുന്നു, വ്യക്തമായ SNAT അത് പിന്നിടുന്നു. സ്ഥിരമായ പൊതു വിലാസമുള്ള ഗേറ്റ്വേയിൽ പിന്നിടുന്നത് ലോഗുകൾക്കും പങ്കാളി അനുമതി പട്ടികകൾക്കും ഒരു പ്രവചനാത്മക മൂല്യം നൽകുന്നു. ചലനാത്മക WAN ലിങ്കിൽ പിന്നിട്ട SNAT വിലാസം ലീസ് മാറുന്ന നിമിഷം തെറ്റാകുന്നു, Masquerade കൃത്യമായി ആ സാഹചര്യത്തിനുവേണ്ടിയാണ് നിർമ്മിച്ചത്.
പരിധി തിരഞ്ഞെടുപ്പിനൊപ്പം പ്രധാനമാണ്. ഗേറ്റ്വേ വിടുന്ന ഓരോ പാക്കറ്റിനും പൊരുത്തപ്പെടുന്ന, സ്രോതസ്സോ ലക്ഷ്യമോ പരിധിയില്ലാത്ത Masquerade നിയമം നിങ്ങൾ അതേപടി സൂക്ഷിക്കാൻ ഉദ്ദേശിച്ച ട്രാഫിക്കും വിവർത്തനം ചെയ്യുന്നു, മറ്റ് സ്വകാര്യ നെറ്റ്വർക്കുകളിലേക്കുള്ള ട്രാഫിക് ഉൾപ്പെടെ. നിയമം ക്ലയന്റ് ശ്രേണിയിലേക്കും ഉദ്ദേശിച്ച ലക്ഷ്യത്തിലേക്കും ഇന്റർഫേസിലേക്കും പരിമിതപ്പെടുത്തുക.
നയാധിഷ്ഠിത IPsec-ൽ ഇത് ഏറ്റവും കടിക്കുന്നു. strongSwan-ന്റെ ഫോർവേഡിംഗ് ഗൈഡ് IP ഫോർവേഡിംഗ് പ്രവർത്തനക്ഷമമാക്കുന്നതും ക്ലയന്റുകൾക്ക് സ്രോതസ്സ് NAT നിയമം ചേർക്കുന്നതും വിശദീകരിക്കുന്നു, അതേ രേഖ യഥാർത്ഥ വിലാസം നിലനിർത്തേണ്ട ട്രാഫിക് ഒഴിവാക്കുന്നതും ഉൾക്കൊള്ളുന്നു. സുരക്ഷാ നയം പൊരുത്തപ്പെടുന്നതിന് മുമ്പ് സ്രോതസ്സ് വിവർത്തനം ചെയ്യുക, ടണൽ ഉയരാം, പക്ഷേ ട്രാഫിക് ഇപ്പോഴും വീഴുന്നു, കാരണം പാക്കറ്റ് ഇനി ചർച്ച ചെയ്ത സെലക്ടർ പോലെ തോന്നുന്നില്ല.
വിദൂര അറ്റം എന്ത് കാണണമെന്നും തീരുമാനിക്കുക. വിവർത്തനത്തിനുശേഷം സേവനം ഗേറ്റ്വേയെ കാണുന്നു, വ്യക്തിഗത ക്ലയന്റിനെയല്ല. ഇത് തിരിച്ചുവരവ് റൂട്ടിംഗ് ലളിതമാക്കുന്നു, അതേസമയം ലോഗുകൾ പരന്നതാക്കി ഓരോ ക്ലയന്റിനുമുള്ള അനുമതി പട്ടികകളെ നിഷ്ഫലമാക്കുന്നു. ക്ലയന്റ് വിലാസങ്ങൾ സൂക്ഷിക്കേണ്ടത് പ്രധാനമെങ്കിൽ, പരീക്ഷ പാസാകാൻ അവ ഒളിപ്പിക്കുന്നതിനു പകരം റൂട്ടുചെയ്ത തിരിച്ചുവരവ് പാത ആസൂത്രണം ചെയ്യുക.
Linux ഗേറ്റ്വേയിൽ നിയമങ്ങൾ വായിക്കുന്നു
10.8.0.0/24-ൽ ക്ലയന്റുകളും eth0 എന്ന പേരിലുള്ള WAN ഇന്റർഫേസുമുള്ള റിമോട്ട് ആക്സസ് ഗേറ്റ്വേയ്ക്ക് ഫോർവേഡിംഗ് പ്രവർത്തനക്ഷമവും ഫ്ലോ അനുവദിക്കുന്ന ഫിൽട്ടർ നയവും വേണം, അപ്പോൾ മാത്രമേ ഏതെങ്കിലും NAT നിയമത്തിന് സഹായിക്കാനാകൂ. iptables പതിപ്പ് ഇരു ദിശകളും nat പട്ടികയിൽ സൂക്ഷിക്കുന്നു:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 51820 \
-j DNAT --to-destination 10.8.0.2:51820
nftables രൂപം അതേ രണ്ട് ഹൂക്കുകൾ പേരിട്ട ഇന്റർഫേസും വ്യക്തമായ ചെയിനും ഉപയോഗിച്ച് ഉപയോഗിക്കുന്നു:
nft add rule ip nat postrouting ip saddr 10.8.0.0/24 oifname "eth0" masquerade
nft add rule ip nat prerouting iifname "eth0" udp dport 51820 dnat to 10.8.0.2:51820
രണ്ട് സ്നിപ്പറ്റുകളും ഫിൽട്ടർ ചെയിൻ ഫോർവേഡ് ചെയ്ത ഫ്ലോ ഇതിനകം സ്വീകരിക്കുന്നു എന്ന് അനുമാനിക്കുന്നു. NAT അനുമതി നിയമമല്ല, ശരിയായി വിവർത്തനം ചെയ്ത പാക്കറ്റ് പോലും ഒരു പട്ടിക കഴിഞ്ഞ് നിരസിക്കപ്പെടാം. conntrack -L ഉപയോഗിച്ച് ജീവനുള്ള മാപ്പിംഗ് സ്ഥിരീകരിക്കുക, nft list ruleset അല്ലെങ്കിൽ iptables-save -t nat ഉപയോഗിച്ച് എന്ത് ലോഡ് ചെയ്തുവെന്ന് സ്ഥിരീകരിക്കുക, തുടർന്ന് വിലാസം ശരിക്കും മാറുന്നത് കാണാൻ ഇരു ഇന്റർഫേസുകളിലും ക്യാപ്റ്റർ ചെയ്യുക.
മോശം നിയമം പോലെ തോന്നിക്കുന്ന പരാജയ മാതൃകകൾ
ഹെയർപിൻ ട്രാഫിക് ക്ലാസിക് ആണ്. സെർവറിന്റെ പൊതു വിലാസത്തിലൂടെ ആന്തരിക സെർവറിലെത്തുന്ന ആന്തരിക ക്ലയന്റിന് അകത്തേക്കുള്ള വഴിയിൽ DNAT-ഉം തിരികെ പുറത്തേക്കുള്ള വഴിയിൽ സ്രോതസ്സ് വിവർത്തനവും വേണം, അല്ലെങ്കിൽ സെർവർ നേരിട്ട് ക്ലയന്റിന് മറുപടി നൽകുന്നു, മറുപടി നിരസിക്കപ്പെടുന്നു. പരിഹാരം ആ ആന്തരിക-മുതൽ-പൊതു സാഹചര്യത്തിനുള്ള രണ്ടാമത്തെ, ഇടുങ്ങിയ നിയമമാണ്, എല്ലാത്തിനുമുള്ള വിശാലമായ Masquerade നിയമമല്ല.
ഇരട്ട വിവർത്തനം നിശബ്ദമാണ്. ഇതിനകം കാരിയർ-ഗ്രേഡ് NAT-ന് പിന്നിലുള്ള ക്ലയന്റ് തിരികെ റൂട്ട് ചെയ്യാനാകാത്ത വിലാസത്തോടെ നിങ്ങളുടെ ഗേറ്റ്വേയിൽ എത്തുന്നു, അതിനാൽ വീണ്ടും വിവർത്തനം ചെയ്യുന്നു. ഇത് പ്രവർത്തിക്കുന്നു, പക്ഷേ ലോഗുകളിൽ ഇപ്പോൾ സ്വകാര്യ വിലാസത്തിന്റെ രണ്ട് ഹോപ്പുകൾ ഉണ്ട്, ഏത് അന്വേഷണത്തിനും രണ്ട് മാപ്പിംഗുകളും വേണം. നയാധിഷ്ഠിത IPsec മൂന്നാമത്തെ തിരിവ് ചേർക്കുന്നു: നയം പൊരുത്തപ്പെടുന്നതിന് മുമ്പ് വിവർത്തനം ചെയ്യുക, ട്രാഫിക് കടന്നുപോകാതെ ഉയർന്ന SA ലഭിക്കും, ഇത് NAT-ന്റേതല്ല, ഫയർവാളിന്റെ കുഴപ്പം പോലെ വായിക്കപ്പെടുന്നു.
പിന്നെ പാസാകുന്ന പരീക്ഷയും പരാജയപ്പെടുന്ന വിന്യാസവുമുണ്ട്. NAT കമാൻഡ് കൈകൊണ്ട് ഓടിക്കുന്നത് സംവിധാനം തെളിയിക്കുന്നു, കോൺഫിഗറേഷനല്ല. റൺടൈമിൽ ചേർത്ത നിയമം റീബൂട്ടിലോ അടുത്ത ഇന്റർഫേസ് സംഭവത്തിലോ അപ്രത്യക്ഷമാകുന്നു, നമ്പർ മാറുന്ന ഇന്റർഫേസിനോട് ബന്ധിപ്പിച്ച Masquerade നിയമം വിദൂര അറ്റം കാണുന്ന വിലാസം നിശബ്ദമായി മാറ്റാം. നിയമം അതിന്റെ ഉടമയായ ഫയർവാളിന്റെ കോൺഫിഗറേഷനിൽ വയ്ക്കുക, വീണ്ടും കണക്ട് ചെയ്ത ശേഷം വീണ്ടും പരിശോധിക്കുക.
നിയമം സേവ് ചെയ്യുന്നതിന് മുമ്പുള്ള ചെക്ക്ലിസ്റ്റ്
ആദ്യം ദിശ പേരിടുക: സ്രോതസ്സ്, ലക്ഷ്യം അല്ലെങ്കിൽ രണ്ടും. പിന്നെ അവസ്ഥ ആര് സൂക്ഷിക്കണമെന്ന് നിർണ്ണയിക്കുക — ഗേറ്റ്വേ, മുകളിലെ റൗട്ടർ അല്ലെങ്കിൽ IPsec പിയർ — മറുപടി പാത അതിലൂടെ തിരികെ വരുന്നുവെന്ന് സ്ഥിരീകരിക്കുക. നിയമം നിങ്ങൾ യഥാർത്ഥത്തിൽ ഉദ്ദേശിക്കുന്ന ക്ലയന്റ് ശ്രേണിയിലേക്കും ലക്ഷ്യത്തിലേക്കും ഇന്റർഫേസിലേക്കും പരിമിതപ്പെടുത്തുക, വിദൂര അറ്റം ഗേറ്റ്വേയെ കാണണോ യഥാർത്ഥ ക്ലയന്റ് വിലാസത്തെ കാണണോ എന്ന് മുൻകൂട്ടി തീരുമാനിക്കുക.
ഗേറ്റ്വേയിൽ നിന്നല്ല, ക്ലയന്റിൽ നിന്ന് പരീക്ഷിക്കുക. ഗേറ്റ്വേയിലെ ബ്രൗസർ ക്ലയന്റ് വിവർത്തന നിയമം പൂർണ്ണമായും ഒഴിവാക്കാം, അതിനാൽ അവിടെ പ്രവർത്തിക്കുന്ന പേജ് ടണലിനെക്കുറിച്ച് ഒന്നും തെളിയിക്കുന്നില്ല. ക്ലയന്റിൽ നിന്ന് ഉത്ഭവിച്ച ഒരു അഭ്യർത്ഥന അയക്കുക, കൗണ്ടറുകളും conntrack പട്ടികയും നിരീക്ഷിക്കുക, നിങ്ങൾ ജോലി ചെയ്യുന്നിടത്ത് ഏതെങ്കിലും സാധ്യമെങ്കിൽ ടണൽ വീണ്ടും കണക്ട് ചെയ്തതിനും WAN വിലാസം മാറിയതിനും ശേഷം അത് ആവർത്തിക്കുക.