മാസ്ക്വെറേഡ് അല്ലെങ്കിൽ നയാധിഷ്ഠിത റൂട്ടിംഗ്: VPN ഗേറ്റ്വേ വഴിയുള്ള LAN ട്രാഫിക്
ഒരു Linux ഗേറ്റ്വേയ്ക്ക് LAN ഉറവിടങ്ങൾ അതിന്റെ ടണൽ വിലാസത്തിന് പിന്നിൽ ഒളിപ്പിക്കാം അല്ലെങ്കിൽ മാറ്റമില്ലാതെ റൂട്ട് ചെയ്യാം. തിരഞ്ഞെടുപ്പ് ദൂരെയുള്ള വശം ആരുടേതാണ്, അതിന്റെ മടങ്ങിവരവ് പാത എന്താണ് എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു.
മുഴുവൻ LAN-ഉം VPN ടണലിന് പിന്നിൽ വയ്ക്കുന്നത് എളുപ്പമുള്ള ഭാഗമാണ്; ദൂരെയുള്ള വശം ആ ക്ലയന്റുകളെ എങ്ങനെ കാണുന്നു എന്ന് തീരുമാനിക്കുന്നത് അല്ല. മാസ്ക്വെറേഡ് ഓരോ LAN ഉറവിടവും ഗേറ്റ്വേയുടെ ടണൽ വിലാസത്തിലേക്ക് വീണ്ടും എഴുതുന്നു, അതിനാൽ ദൂരെയുള്ള വശം ഒരു പിയറിന് മറുപടി നൽകുന്നു. നയാധിഷ്ഠിത റൂട്ടിംഗ് യഥാർത്ഥ വിലാസങ്ങൾ നിലനിർത്തുകയും ദൂരെയുള്ള വശം അവയിലേക്ക് എത്തുന്ന വിധം അറിയണമെന്ന് ആവശ്യപ്പെടുകയും ചെയ്യുന്നു. രണ്ടും സ്വതേയുള്ളതല്ല; ദൂരെയുള്ള വശം ആരുടേതാണ്, ഉപകരണം തോറുമുള്ള ഐഡന്റിറ്റി പ്രധാനമാണോ എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു തിരഞ്ഞെടുപ്പ്.
രണ്ട് രൂപകൽപ്പനകൾ വ്യത്യസ്ത കാര്യങ്ങൾ വാഗ്ദാനം ചെയ്യുന്നു
മാസ്ക്വെറേഡ് LAN-നെ ഒരു ദൃശ്യമായ ഹോസ്റ്റായി ചുരുക്കുന്നു: ഗേറ്റ്വേ. ദൂരെയുള്ള ശൃംഖല ആ ഒരു വിലാസത്തിന് മറുപടി നൽകുന്നു, ഗേറ്റ്വേ മറുപടികളെ ഒഴുക്ക് ആരംഭിച്ച ക്ലയന്റിലേക്ക് തിരികെ വിവർത്തനം ചെയ്യുന്നു. ദൂരെയുള്ള വശത്ത് നിങ്ങളുടെ സ്വകാര്യ പ്രിഫിക്സുകളിലേക്ക് റൂട്ട് ആവശ്യമില്ല, അതുകൊണ്ടാണ് ഈ രൂപകൽപ്പന അവ വഹിക്കാൻ വിസമ്മതിക്കുന്ന ദാതാവിനൊപ്പവും നിലനിൽക്കുന്നത്. ഗേറ്റ്വേ ഓരോ കണക്ഷന്റെയും ഉറവിടമായി മാറുന്നു, അതിനാൽ ദൂരെയുള്ള വശത്തിന് രണ്ട് ക്ലയന്റുകളെ വേർതിരിച്ചറിയാനാവില്ല.
നയാധിഷ്ഠിത റൂട്ടിംഗ് ഓരോ ക്ലയന്റിന്റെയും വിലാസം അക്ഷതമായി നിലനിർത്തുന്നു. ദൂരെയുള്ള ശൃംഖല യഥാർത്ഥ ഉറവിടം കാണുകയും അത് ലോഗ് ചെയ്യുകയും ഓരോ ഹോസ്റ്റിനുമുള്ള നിയമം പ്രയോഗിക്കുകയും മറുപടി നേരിട്ട് ആ വിലാസത്തിലേക്ക് അയയ്ക്കുകയും ചെയ്യാം. ഈ ദൃശ്യതയാണ് മുഴുവൻ കാര്യം, അത് ഒരു ബാധ്യതയും കൊണ്ടുവരുന്നു: ദൂരെയുള്ള വശത്ത് LAN പ്രിഫിക്സിന് ടണലിലൂടെ തിരികെ പോകുന്ന റൂട്ട് ഉണ്ടായിരിക്കണം. നിയമം പ്രവർത്തനക്ഷമമാക്കുന്നതിന് മുമ്പ് ആ റൂട്ട് ആസൂത്രണം ചെയ്യുക, കാരണം ടണൽ ഏതായാലും ഉയരും, മറുപടികൾ മാത്രമായിരിക്കും കുറയുക.
പരാജയ മാതൃകകൾ വാഗ്ദാനങ്ങളോളം വ്യത്യസ്തമാണ്. ഇല്ലാത്ത മാസ്ക്വെറേഡ് നിയമം സ്വകാര്യ ഉറവിടങ്ങളുമായി പുറത്തുപോകുന്ന, ഒരിക്കലും തിരികെ വരാത്ത പാക്കറ്റുകൾ സൃഷ്ടിക്കുന്നു. ഇല്ലാത്ത മടങ്ങിവരവ് റൂട്ട് നയാധിഷ്ഠിത റൂട്ടിംഗിൽ അതേ ലക്ഷണം നൽകുന്നു, പക്ഷേ പരിഹാരം ഗേറ്റ്വേയിലല്ല, ദൂരെയുള്ള റൂട്ടറിലാണ്.
മാസ്ക്വെറേഡ്: ദൂരെയുള്ള വശത്ത് ഒരു പിയർ
മാസ്ക്വെറേഡ് പാതയ്ക്ക് പ്രധാനമായ ഒരു ക്രമമുണ്ട്. ഏതെങ്കിലും NAT നിയമം പ്രയോജനപ്പെടുന്നതിന് മുമ്പ് ഫോർവേഡിംഗ് പ്രവർത്തനക്ഷമമായിരിക്കണം, ഫിൽട്ടർ പട്ടിക ഇരു ദിശകളിലും കടന്നുപോകാൻ അനുവദിക്കണം, അതിനുശേഷം മാത്രമാണ് ടണൽ ഇന്റർഫേസിൽ വിവർത്തനം ബാധകമാകുന്നത്.
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
ക്ലയന്റുകൾക്ക് ഇപ്പോഴും ഗേറ്റ്വേയിലേക്ക് പാത വേണം. ഒന്നുകിൽ ഗേറ്റ്വേ അവരുടെ സ്വതേയുള്ള റൂട്ടറാണ്, അല്ലെങ്കിൽ ദൂരെയുള്ള പ്രിഫിക്സിന് നിർദ്ദിഷ്ട റൂട്ട് അവർ കൊണ്ടുനടക്കുന്നു; വേറെ റൂട്ടർ സ്വതേയുള്ളതായി തുടരുകയാണെങ്കിൽ, ആ റൂട്ടറിന് ടണൽ ലക്ഷ്യസ്ഥാനങ്ങൾക്ക് സ്ഥിരമായ റൂട്ട് വേണം, അല്ലെങ്കിൽ ഗേറ്റ്വേ കാണുന്നതിന് മുമ്പ് പാക്കറ്റ് തെറ്റായ ഹോപ്പിലേക്ക് പോകും.
DNS ഒരു വേറിട്ട തീരുമാനമാണ്. ദൂരെയുള്ള വശത്തെ റിസോൾവർ അതിന്റെ മറുപടി ക്ലയന്റിലേക്ക് തിരികെ എത്താൻ കഴിയുമ്പോൾ മാത്രമാണ് മറുപടി നൽകുന്നത്. മാസ്ക്വെറേഡിൽ ചോദ്യം ഗേറ്റ്വേയിൽ നിന്ന് വരുന്നതായി തോന്നുന്നു, അതിനാൽ റിസോൾവറിന്റെ മടങ്ങിവരവ് പാത ഇതിനകം തൃപ്തികരമാണ്; നയാധിഷ്ഠിത റൂട്ടിംഗിൽ റിസോൾവറിന് മറ്റേതൊരു ദൂരെയുള്ള സേവനത്തിനും വേണ്ട അതേ മടങ്ങിവരവ് റൂട്ട് വേണം.
നയാധിഷ്ഠിത റൂട്ടിംഗ്: ഉറവിടം നിലനിർത്തുക, ഒരു മടങ്ങിവരവ് പാത ചേർക്കുക
നയാധിഷ്ഠിത റൂട്ടിംഗ് ഒരു പട്ടികയും അത് തിരഞ്ഞെടുക്കുന്ന നിയമവും കൊണ്ട് തുടങ്ങുന്നു. LAN ഇന്റർഫേസിൽ നിന്ന് വരുന്ന ട്രാഫിക് സമർപ്പിത പട്ടികയിലേക്ക് അയയ്ക്കുന്നു, ആ പട്ടിക ടണലിലൂടെ സ്വതേയുള്ള റൂട്ട് വഹിക്കുന്നു. പ്രധാന പട്ടിക അസ്പർശിതമായി തുടരുന്നു, അതിനാൽ ഗേറ്റ്വേ തന്നെ സൃഷ്ടിക്കുന്ന ട്രാഫിക് വേറെ പാത പിന്തുടരാം.
ip rule add iif eth1 table vpn
ip route add default dev tun0 table vpn
തുടർന്ന് ദൂരെയുള്ള വശം LAN പ്രിഫിക്സ് ടണലിലൂടെ തിരികെ റൂട്ട് ചെയ്യണം. അത് ഈ ഗേറ്റ്വേയിലല്ല, ദൂരെയുള്ള റൂട്ടറിലെ ക്രമീകരണമാണ്. പ്രധാന പട്ടിക പ്രതീക്ഷിക്കുന്നതിൽ നിന്ന് വ്യത്യസ്ത ഇന്റർഫേസിൽ എത്തുന്ന മറുപടികളും ഗേറ്റ്വേ സ്വീകരിക്കണം; കർശന മോഡ് ആ പാക്കറ്റുകൾ ഉപേക്ഷിക്കുമ്പോൾ അയഞ്ഞ റിവേഴ്സ് പാത്ത് ഫിൽട്ടറിംഗ് (rp_filter 2 ആയി സജ്ജീകരിച്ചത്) സാധാരണ ക്രമീകരണമാണ്.
രണ്ട് ടണലുകൾ സജീവമായിരിക്കുമ്പോൾ പ്രവേശനത്തിൽ ഓരോ ഒഴുക്കിനും ടാഗ് ഇടുക, ടാഗ് പട്ടിക തിരഞ്ഞെടുക്കട്ടെ. ഇൻപുട്ട് ഇന്റർഫേസ് മാത്രം നോക്കുന്ന നിയമം രണ്ട് ടണലുകളുടെയും ട്രാഫിക് ഒരേ പട്ടികയിലേക്ക് അയയ്ക്കുന്നു, അതിനാൽ രണ്ടാം ടണൽ ആദ്യത്തേതിൽ നിന്ന് ഒഴുക്കുകൾ മോഷ്ടിക്കുന്നു. വീണ്ടും ബന്ധിപ്പിക്കലിനെ അതിജീവിക്കുന്ന കണക്ഷൻ ഉപയോഗിച്ച് ആ ടാഗ് പരിശോധിക്കുക, കാരണം അപ്പോഴാണ് മിശ്ര നയം പ്രത്യക്ഷമാകുന്നത്.
ഉടമസ്ഥതയും ദൂരെയുള്ള വശം എന്ത് ലോഗ് ചെയ്യുന്നു എന്നതും അനുസരിച്ച് തീരുമാനിക്കുക
ടണൽ ഒരു ദാതാവിൽ അവസാനിക്കുന്നുവെങ്കിൽ മാസ്ക്വെറേഡ് ഉപയോഗിക്കുക. ആ ഓപ്പറേറ്റർ നിങ്ങളുടെ സ്വകാര്യ LAN ശ്രേണികൾ റൂട്ട് ചെയ്യില്ല, നിങ്ങളുടെ ഗേറ്റ്വേയ്ക്ക് പിന്നിലെ വ്യക്തിഗത ക്ലയന്റുകളെ വേർതിരിച്ചറിയാൻ അദ്ദേഹത്തിന് കാരണവുമില്ല. ഒരു ദൃശ്യമായ പിയർ മാത്രമാണ് അദ്ദേഹത്തിന്റെ നയം പിന്തുണയ്ക്കുന്ന ഏക മാതൃക, അതിനാൽ അത് നൽകി വിവർത്തനം നിങ്ങളുടെ അറ്റത്ത് നിലനിർത്തുക. ദാതാവ് ഒരു പിയറിനെ കാണുന്നു, അത് അദ്ദേഹത്തിന്റെ നയം പ്രതീക്ഷിക്കുന്നത് കൃത്യമായി അതാണ്, നിങ്ങളുടെ ക്ലയന്റുകൾ ആ ഒരു ഐഡന്റിറ്റി പാരമ്പര്യമായി നേടുന്നു.
രണ്ട് അറ്റങ്ങളും നിങ്ങളുടേതാണെങ്കിൽ, ദൂരെയുള്ള സേവനങ്ങൾ ഉറവിട വിലാസങ്ങളിൽ പ്രവർത്തിക്കുന്നുവെങ്കിൽ, നയാധിഷ്ഠിത റൂട്ടിംഗ് അതിന്റെ അധിക റൂട്ടിന് അർഹമാണ്. അപ്പോൾ ഫയർവാൾ നിയമങ്ങൾ, ഉപയോക്താവിനുള്ള പ്രവേശനം, ഓഡിറ്റ് ലോഗുകൾ എന്നിവയ്ക്ക് ക്ലയന്റുകളെ വേർതിരിച്ചറിയാം. ദൂരെയുള്ള വശത്തിന് എത്തിച്ചേരൽ മാത്രം വേണമെങ്കിൽ, മാസ്ക്വെറേഡ് ലളിതവും മടങ്ങിവരവ് റൂട്ട് പിശകുകളുടെ ഒരു വർഗ്ഗം നീക്കം ചെയ്യുന്നതുമാണ്.
സങ്കര രൂപകൽപ്പനകൾ സാധാരണമാണ്: നിങ്ങളുടെ സ്വന്തം ശൃംഖലയിൽ നയാധിഷ്ഠിത റൂട്ടിംഗ്, ദാതാവിന്റെ അറ്റത്ത് മാസ്ക്വെറേഡ്. പ്രധാനമായത് ഏത് ഹോപ്പ് വിവർത്തനം ചെയ്യുന്നു, ഏത് ഹോപ്പ് റൂട്ട് ചെയ്യുന്നു എന്ന് എഴുതിവയ്ക്കുക എന്നതാണ്, കാരണം ഒരു ക്ലയന്റിനായി അബദ്ധത്തിൽ ചേർത്ത NAT നിയമം അതേ ശൃംഖലയിലെ എല്ലാ ക്ലയന്റുകളിൽ നിന്നും ഉറവിടം മറയ്ക്കുന്നു.
ഒരു ക്ലയന്റിൽ നിന്ന് പരിശോധിക്കുക, പിന്നെ രണ്ടാം ക്ലയന്റിൽ നിന്ന്
ട്രാഫിക് ആരംഭിക്കുന്നിടത്ത് പരീക്ഷണം നടത്തുക. ഹോസ്റ്റ് ഉപയോഗിക്കുന്ന റൂട്ട് പരിശോധിക്കുക, ടണൽ ഇന്റർഫേസിൽ പാക്കറ്റ് പ്രത്യക്ഷപ്പെടുന്നത് നിരീക്ഷിക്കുക, വിവർത്തനത്തിനായി conntrack പരിശോധിക്കുക. ആ ക്രമം പാക്കറ്റ് ഉദ്ദേശിച്ച പാതയിലൂടെ പോയി എന്ന് തെളിയിക്കുന്നു, എവിടെയോ എത്തി എന്നല്ല.
വീണ്ടും ബന്ധിപ്പിച്ചതിന് ശേഷം പരീക്ഷണം ആവർത്തിക്കുക. ഇന്റർഫേസ് പേരിടുന്ന മാസ്ക്വെറേഡ് നിയമം പുതിയ ടണൽ വിലാസത്തിലും നിലനിൽക്കുന്നു; പഴയ വിലാസം പേരിടുന്ന നിയമം നിലനിൽക്കുന്നില്ല. പിന്നെ രണ്ടാം LAN ഹോസ്റ്റ് പരിശോധിക്കുക, കാരണം ഒരു യന്ത്രത്തിൽ പ്രവർത്തിക്കുന്ന രൂപകൽപ്പന പലപ്പോഴും ആ യന്ത്രത്തിന്റെ സ്വന്തം റൂട്ടിനെയാണ് ആശ്രയിക്കുന്നത്, ഗേറ്റ്വേയുടെ നയത്തെയല്ല.
തിരഞ്ഞെടുത്ത മാതൃക, വിവർത്തനം ചെയ്തതോ സംരക്ഷിച്ചതോ ആയ ഉറവിടം, മടങ്ങിവരവ് റൂട്ടിന്റെ ഉടമ എന്നിവ ഗേറ്റ്വേ കുറിപ്പുകളിൽ എഴുതുക. അല്ലെങ്കിൽ ഒരു ക്ലയന്റോ ടണലോ ചേർക്കുന്ന അടുത്ത വ്യക്തി ഊഹിക്കും, ഊഹിക്കലാണ് പ്രവർത്തിക്കുന്ന LAN-മുതൽ-VPN ക്രമീകരണത്തെ പകുതിയാക്കുന്ന വഴി.