ഒരേ OpenBSD ഗേറ്റ്‌വേ ഉള്ള രണ്ട് എൻജിനീയർമാർ ഒരു ദൂര നെറ്റ്‌വർക്കിലെത്താൻ പലപ്പോഴും രണ്ട് വ്യത്യസ്ത നിയമക്കൂട്ടങ്ങൾ നൽകും, രണ്ടും സമർത്ഥിക്കാവുന്നതാണ്. സോഴ്‌സ് വിവർത്തനവും റിട്ടേൺ റൂട്ടും തമ്മിലുള്ള തിരഞ്ഞെടുപ്പ് ഒരിക്കലും വാക്യഘടനയുടെ ചോദ്യമല്ല. എതിർവശത്തിന് 192.168.88.0/24 നെക്കുറിച്ച് ഇതിനകം എന്തറിയാം, നിങ്ങളുടെ ലോഗുകളിൽ എന്ത് സൂക്ഷിക്കണം എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു. ഇവിടെ തെറ്റിയാൽ nat-to വരി തികച്ചും ശരിയായി കാണും, പക്ഷേ മറുപടികൾ ദൂരത്തിലെ ഡിഫോൾട്ട് ഗേറ്റ്‌വേയിൽ അപ്രത്യക്ഷമാകും.

റൂട്ടിംഗും പുനരെഴുത്തും വ്യത്യസ്ത ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകുന്നു

റൂട്ടിംഗ് പട്ടിക 172.20.0.0/16 tun0 വഴി ലഭ്യമാണെന്ന് തീരുമാനിക്കുന്നു, ആ തീരുമാനം ഏതെങ്കിലും pf വിവർത്തനം ആലോചിക്കുന്നതിന് മുൻപേ ഉണ്ടാകുന്നു. തുടർന്ന് സോഴ്‌സ് വിവർത്തനം പാക്കറ്റ് ഹെഡർ മാറ്റുന്നു, അതിനാൽ ദൂരത്തിലെ അറ്റം LAN ഹോസ്റ്റിന് പകരം ഗേറ്റ്‌വേയുടെ ടണൽ വിലാസം കാണും. ഒരു സംവിധാനവും മറ്റൊന്നിന് പകരമാകുന്നില്ല: nat നിയമത്തിന് റൂട്ട് സൃഷ്ടിക്കാനാവില്ല, റൂട്ടിന് നിങ്ങളുടെ സ്വകാര്യ സബ്‌നെറ്റിനെക്കുറിച്ച് കേട്ടിട്ടില്ലാത്ത ദൂര റൗട്ടറിനെ ബോധ്യപ്പെടുത്താനാവില്ല. എതിർവശത്തിന് മടക്കവഴി ഇല്ലെങ്കിൽ മറുപടികൾ ഉപേക്ഷിക്കപ്പെടുകയോ അതിന്റെ ഡിഫോൾട്ട് ഗേറ്റ്‌വേയിലേക്ക് അയയ്ക്കുകയോ ചെയ്യും, നിയമങ്ങൾ എത്ര ക്രമീകരിച്ചാലും അത് ശരിയാകില്ല.

ലളിതമായി പറഞ്ഞാൽ, ഫോർവേഡിംഗ് ട്രാഫിക് എവിടേക്ക് പോകുന്നു എന്നതിന് ഉത്തരം നൽകുന്നു, വിവർത്തനം അത് എവിടെ നിന്ന് വരുന്നതായി കാണപ്പെടുന്നു എന്നതിന് ഉത്തരം നൽകുന്നു. നിയമക്കൂട്ടം രൂപകൽപ്പന ചെയ്യുമ്പോൾ രണ്ടും വെവ്വേറെ മാനസിക പെട്ടികളിൽ സൂക്ഷിക്കുക.

തീരുമാനിക്കുന്ന മൂന്ന് വ്യവസ്ഥകൾ

മൂന്ന് ചോദ്യങ്ങൾ ക്രമത്തിൽ ചോദിക്കുക, രൂപകൽപ്പന സാധാരണയായി സ്വയം തിരഞ്ഞെടുക്കും. ദൂര നെറ്റ്‌വർക്കിന് 192.168.88.0/24 എന്നതിന് ടണൽ വിലാസത്തിലേക്ക് ചൂണ്ടുന്ന സ്ഥിര റൂട്ട് ഉണ്ടോ, അല്ലെങ്കിൽ അതിന്റെ അഡ്മിനിസ്ട്രേറ്റർ ആ പാതയിലെ റൗട്ടറുകൾ നിയന്ത്രിക്കുന്നുണ്ടോ? ഉണ്ടെങ്കിൽ LAN വിലാസങ്ങൾ മാറ്റമില്ലാതെ കടന്നുപോകാൻ അനുവദിക്കുക, വിവർത്തനം പൂർണ്ണമായി ഒഴിവാക്കുക. എതിർവശത്ത് ഓരോ ക്ലയന്റിന്റെയും ദൃശ്യത വേണോ, ആക്സസ് നയത്തിനോ ഓഡിറ്റ് ട്രെയിലിനോ? വേണമെങ്കിൽ സോഴ്‌സ് സംരക്ഷിക്കുന്നത് റൂട്ടിംഗ് ജോലിക്ക് തക്കതാണ്. ടണൽ വിലാസം ദൂര റൂട്ടിൽ എഴുതാൻ മതിയായ സ്ഥിരതയുണ്ടോ, അതോ വീണ്ടും ബന്ധിപ്പിക്കുമ്പോൾ മാറുന്നുണ്ടോ?

ഏതെങ്കിലും ഉത്തരം ഇല്ല അല്ലെങ്കിൽ അജ്ഞാതമാണെങ്കിൽ nat-to പ്രായോഗികമായ തിരഞ്ഞെടുപ്പാണ്, അത് പിൻവലിക്കാനും കഴിയും. എതിർവശം ശരിയായ റൂട്ട് ചേർത്താൽ വിവർത്തന നിയമം ഒരു വരിയിൽ ഒഴിവാകും. ഒരിക്കലും ഇൻസ്റ്റാൾ ചെയ്യാത്ത റിട്ടേൺ റൂട്ട്, ടണൽ ഒരു ദിശയിൽ മാത്രം എന്തുകൊണ്ട് പ്രവർത്തിക്കുന്നു എന്ന് ആരെങ്കിലും ചോദിക്കുമ്പോഴൊക്കെ ഒരു സപ്പോർട്ട് ത്രെഡ് എടുക്കും.

pf യഥാർത്ഥത്തിൽ വിലയിരുത്തുന്ന വിധത്തിൽ ഭാഗം വയ്ക്കുക

താഴെയുള്ള ഭാഗം LAN 192.168.88.0/24 എന്നും ദൂര നെറ്റ്‌വർക്ക് 172.20.0.0/16 എന്നും ടണൽ ഇന്റർഫേസ് tun0 എന്നും അനുമാനിക്കുന്നു. അതിൽ അടുത്ത ഹോപ്പ് തിരഞ്ഞെടുക്കുന്ന ഒന്നുമില്ല. ഇതിനകം ടണലിലൂടെ പുറത്തുപോകുന്ന പാക്കറ്റുകളിലെ സോഴ്‌സ് മാത്രം അത് പുനരെഴുതുന്നു.

match out on tun0 inet from 192.168.88.0/24 to 172.20.0.0/16 nat-to (tun0)
pass in on em0 inet from 192.168.88.0/24 to any keep state

ആ ആദ്യ വരിയിലെ രണ്ട് വിശദാംശങ്ങളാണ് കൂടുതൽ ഭാരം വഹിക്കുന്നത്. tun0 ന് ചുറ്റുമുള്ള ബ്രാക്കറ്റുകൾ, സ്റ്റേറ്റ് എൻട്രി നിർമ്മിക്കുമ്പോഴൊക്കെ ഇന്റർഫേസ് വിലാസം വായിക്കാൻ pf-നോട് പറയുന്നു, വീണ്ടും ബന്ധിപ്പിച്ച ശേഷം ടണൽ പുനർനമ്പർ ചെയ്യുമ്പോൾ ഇത് പ്രധാനമാണ്. match എന്ന വാക്കിന്റെ അർത്ഥം നിയമം പുനരെഴുതി പിന്നീട് താഴേക്ക് പോകുന്നു എന്നാണ്, അതിനാൽ പ്രത്യേക pass നിയമം ഇപ്പോഴും ഫ്ലോ അനുവദിക്കണം. match വരിയിൽ പേരിട്ട ഇന്റർഫേസും റൂട്ടിംഗ് പട്ടിക തിരഞ്ഞെടുക്കുന്നതുമായിരിക്കണം, അല്ലെങ്കിൽ പാക്കറ്റ് യഥാർത്ഥത്തിൽ പോകുന്ന പാതയല്ലാത്ത മറ്റൊരു പുറത്തേക്കുള്ള പാതയിൽ pf നിയമം വിലയിരുത്തും.

കേർണൽ വശം മറക്കരുത്. IPv4 ഫോർവേഡിംഗ് പ്രവർത്തനക്ഷമമാക്കണം, ടണലിനും LAN-നും സ്റ്റേറ്റുള്ള pass നിയമങ്ങൾ ഉണ്ടായിരിക്കണം, അല്ലാത്തപക്ഷം ഇതിന് അർത്ഥമില്ല. ഇവിടെ കീവേഡ് ക്രമത്തിന് OpenBSD FAQ-യിലെ PF NAT വിഭാഗം ശരിയായ റഫറൻസാണ്.

ട്രാഫിക്കിൽ വിശ്വസിക്കുന്നതിന് മുൻപ് നിയമക്കൂട്ടം പരിശോധിക്കുക

ആദ്യം pfctl -nf /etc/pf.conf ഉപയോഗിച്ച് വാക്യഘടന പരിശോധിക്കുക, അത് ഫയൽ ലോഡ് ചെയ്യാതെ പാഴ്‌സ് ചെയ്യുന്നു. തുടർന്ന് നയം ലോഡ് ചെയ്ത് കേർണൽ യഥാർത്ഥത്തിൽ എന്ത് സൂക്ഷിക്കുന്നു എന്ന് വീണ്ടും വായിക്കുക, കാരണം വ്യക്തമായി പാഴ്‌സ് ചെയ്ത നിയമവും മറയ്ക്കപ്പെടുകയോ തെറ്റായ ഇന്റർഫേസിൽ ഘടിപ്പിക്കപ്പെടുകയോ ചെയ്യാം. pfctl -sn വിവർത്തന നിയമങ്ങൾ അവ ലോഡ് ചെയ്ത രൂപത്തിൽ പ്രിന്റ് ചെയ്യുന്നു, pfctl -sr ഫിൽട്ടർ നിയമങ്ങൾ വിലയിരുത്തൽ ക്രമത്തിൽ പ്രിന്റ് ചെയ്യുന്നു.

അടുത്തതായി വയർ നിരീക്ഷിക്കുക. ഗേറ്റ്‌വേയിൽ tcpdump -ni tun0 'host 172.20.0.10' ടണലിൽ നിന്ന് പുറത്തുപോകുന്ന സോഴ്‌സ് വിലാസം ടണൽ വിലാസമാണോ LAN ഹോസ്റ്റാണോ എന്ന് കാണിക്കുന്നു. വേഗത്തിലുള്ള netstat -rn -f inet ലക്ഷ്യം ഏത് ഇന്റർഫേസിലേക്ക് പരിഹരിക്കുന്നു എന്ന് സ്ഥിരീകരിക്കുന്നു. ട്രാഫിക് ഒഴുകിത്തുടങ്ങിയാൽ pfctl -ss സ്റ്റേറ്റ് എൻട്രികൾ പട്ടികപ്പെടുത്തുന്നു; ഒരു ഫ്ലോ സ്റ്റേറ്റ് സൃഷ്ടിച്ചില്ലെങ്കിൽ, പാക്കറ്റ് സ്റ്റേറ്റ് സൃഷ്ടിക്കുന്ന നിയമത്തിൽ ഒരിക്കലും എത്തിയിട്ടില്ല.

ടണൽ വശം ശരിയായി തോന്നുന്നുവെങ്കിലും മറുപടികൾ വരുന്നില്ലെങ്കിൽ pf എഡിറ്റ് ചെയ്യുന്നത് നിർത്തുക. ബാക്കിയുള്ള പരാജയം ദൂര റൗട്ടറിലാണ്, അവിടെ മറുപടി ആ വശത്തിന് എത്തിച്ചേരാനാവാത്ത ഒരു സ്വകാര്യ വിലാസത്തിലേക്ക് അയയ്ക്കപ്പെടുന്നു.

വിവർത്തനം ലാഭിക്കുന്നതിലധികം ചെലവാകുമ്പോൾ

വിവർത്തനം ക്ലയന്റുകളെ മറയ്ക്കുന്നു, ചിലപ്പോൾ അത് കൃത്യമായി തെറ്റായ ഇടപാടാണ്. ഒന്നിനുമേൽ ഒന്ന് വരുന്ന സബ്‌നെറ്റുകൾ ഒരു സന്ദർഭമാണ്: എതിർവശവും ഉള്ളിൽ 192.168.88.0/24 ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ, LAN ഹോസ്റ്റുകളെ ഗേറ്റ്‌വേയായി അവതരിപ്പിക്കുന്നത് കൂട്ടിയിടി മെച്ചപ്പെടുത്തുന്നതിന് പകരം വഷളാക്കുന്നു. വിലാസ ജോഡി അനുസരിച്ച് ട്രാഫിക് തിരഞ്ഞെടുക്കുന്ന IPsec നയങ്ങൾ മറ്റൊരു സന്ദർഭമാണ്, കാരണം സുരക്ഷാ നയ ഡാറ്റാബേസ് വിവർത്തനത്തിന് മുൻപ് പൊരുത്തപ്പെടുത്തുന്നു, നിങ്ങൾ പുനരെഴുതിയ പാക്കറ്റ് അത് ഒരിക്കലും കാണുന്നില്ല. ഉപയോക്താവിന് ബിൽ ചെയ്യുന്ന, പരിമിതപ്പെടുത്തുന്ന അല്ലെങ്കിൽ ഓഡിറ്റ് ചെയ്യുന്ന ഏത് വിന്യാസവും സോഴ്‌സ് ഒരു വിലാസത്തിലേക്ക് ചുരുങ്ങുന്ന നിമിഷത്തിൽ അതിന് ആവശ്യമായ ഐഡന്റിറ്റി നഷ്ടപ്പെടുത്തുന്നു.

പോർട്ടബിൾ pf ഡെറിവേറ്റീവുകൾ വേറിട്ട ഒരു കെണിയാണ്. സ്വന്തം നിയമ ഫയലുകൾ സൃഷ്ടിക്കുന്ന ഉൽപ്പന്നങ്ങൾ NAT അവയുടെ ഇന്റർഫേസിലൂടെ ക്രമീകരിക്കണമെന്ന് പ്രതീക്ഷിക്കുന്നു, കൈകൊണ്ട് എഡിറ്റ് ചെയ്ത ഭാഗങ്ങൾ അടുത്ത റീലോഡിൽ മേലെഴുതപ്പെടും. match കീവേഡ് ഉണ്ടാകുന്നതിന് മുൻപ് എഴുതിയ ഗൈഡുകളിൽ നിന്ന് പകർത്തിയ നിയമക്കൂട്ടങ്ങൾ ഇപ്പോഴത്തെ കേർണലിൽ ലോഡാകില്ല, അതിനാൽ വാക്യഘടന പോർട്ട് ചെയ്ത് ഊഹിക്കുന്നതിന് പകരം പിശക് വായിക്കുക.

യഥാർത്ഥ നെറ്റ്‌വർക്കുകളുമായുള്ള സമ്പർക്കത്തെ അതിജീവിക്കുന്ന തീരുമാന നിയമം ചെറുതാണ്: കഴിയുമ്പോൾ റിട്ടേൺ റൂട്ട് ഇൻസ്റ്റാൾ ചെയ്യുക, കഴിയാത്തപ്പോൾ വിവർത്തനം ചെയ്യുക, മൂന്ന് വ്യവസ്ഥകളിൽ ഏതാണ് ആ തിരഞ്ഞെടുപ്പ് നിർബന്ധിച്ചതെന്ന് എഴുതിവയ്ക്കുക. ആ കുറിപ്പ് അടുത്ത വ്യക്തിക്ക് ഒരു ഉച്ചയ്ക്ക് ശേഷം ലാഭിക്കുന്നു.

അനുബന്ധ ലേഖനങ്ങൾ