macOS-ൽ, ഒരു കിൽ സ്വിച്ച് അതിന് പിന്നിലുള്ള പാക്കറ്റ് ഫിൽട്ടർ നയത്തിനൊപ്പം മാത്രമേ നല്ലതാകൂ, കൂടാതെ pf ആ നയം നടപ്പാക്കുന്ന ഭാഗമാണ്. നയം ഒരേസമയം രണ്ട് വിപരീത കാര്യങ്ങൾ ചെയ്യണം: ടണൽ നിലനിൽക്കാൻ ക്ലയന്റിനെ അതിന്റെ സർവറിലെത്താൻ അനുവദിക്കുക, ബാക്കിയെല്ലാം നേരിട്ട് പുറത്തുപോകുന്നത് തടയുക. പ്രസിദ്ധീകരിച്ച നിയമക്കൂട്ടങ്ങളിൽ മിക്കതും രണ്ടാമത്തേത് ചെയ്ത് ആദ്യത്തേത് മറക്കുന്നു, അതിനാൽ യന്ത്രം സംരക്ഷണം നേടുന്നതിനുപകരം കണക്റ്റിവിറ്റി നഷ്ടപ്പെടുത്തുന്നു. പ്രവർത്തിക്കുന്ന പതിപ്പ് അന്തിമ പോയിന്റ്, റിസോൾവർ, ടണൽ എന്നിവയെ പേരിടുന്നു, അതിൽ കൂടുതലൊന്നുമില്ല.

ഒരു പാക്കറ്റ് ഫിൽട്ടർ എന്ത് തീരുമാനിക്കാം, എന്ത് തീരുമാനിക്കാനാവില്ല

pf ഇന്റർഫേസുകൾ, വിലാസങ്ങൾ, പ്രോട്ടോക്കോൾ നമ്പറുകൾ, പോർട്ടുകൾ എന്നിവ നോക്കുന്നു, അവിടെ നിർത്തുന്നു. ഏത് പ്രോസസ് ഒരു സോക്കറ്റ് തുറന്നു എന്ന് അത് ഒരിക്കലും അറിയുന്നില്ല, അതിനാൽ ഒരു പ്രോഗ്രാമിനായി എഴുതിയ അനുമതി അതേ പോർട്ടിൽ എത്താവുന്ന ഓരോ പ്രോഗ്രാമിനും അനുമതിയായിത്തീരുന്നു. ഉദാരമായ ഒരു UDP ഒഴിവാക്കൽ കിൽ സ്വിച്ചിനെ വീണ്ടും സാധാരണ നെറ്റ്വർക്കാക്കി മാറ്റുന്നത് ഇങ്ങനെയാണ്. അപ്ലിക്കേഷൻ അറിയുന്ന തടയൽ ക്ലയന്റിന്റേതോ സിസ്റ്റം എക്സ്റ്റൻഷന്റേതോ ആണ്, ഈ ഫയലിന്റേതല്ല.

ഫിൽട്ടർ റൂട്ടുകളും ഉണ്ടാക്കുന്നില്ല. ക്ലയന്റ് വീഴുമ്പോൾ ഡിഫോൾട്ട് റൂട്ട് ഇപ്പോഴും ഒരു മരിച്ച ടണലിലേക്ക് ചൂണ്ടിയേക്കാം, pf അതിനെ Wi-Fi-ലേക്ക് നിശബ്ദമായി മടങ്ങുന്നതിനുപകരം തടഞ്ഞ പാക്കറ്റുകളാക്കി മാറ്റുന്നു. തടയൽ ഉദ്ദേശിച്ച ഫലമാണ്, ഒഴിവാക്കേണ്ട തകരാറല്ല.

നിയമത്തിന്റെ പാഠത്തെക്കാൾ ക്രമമാണ് ഫലം കൂടുതലായി തീരുമാനിക്കുന്നത്. quick ഇല്ലാതെ pf പൊരുത്തത്തിനുശേഷവും വിലയിരുത്തുന്നു, അവസാനം പൊരുത്തപ്പെടുന്ന നിയമം ജയിക്കുന്നു, അതിനാൽ താഴെയുള്ള ഒരു വിശാലമായ കടത്ത് മുകളിലുള്ള സൂക്ഷ്മമായ ഒഴിവാക്കലുകളെ റദ്ദാക്കുന്നു. കടത്തുകളെ quick എന്ന് അടയാളപ്പെടുത്തിയാൽ ആദ്യ പൊരുത്തം അന്തിമമാകുന്നു, ഒരു നയ രചയിതാവ് സാധാരണ ഉദ്ദേശിക്കുന്നത് അതാണ്.

ആദ്യം ഇന്റർഫേസിന്റെയും അന്തിമ പോയിന്റിന്റെയും വസ്തുതകൾ വായിക്കുക

ഓരോ Mac-ലും വയർലെസ് ഇന്റർഫേസുകൾ ഒരേ രീതിയിൽ അക്കമിട്ടിട്ടില്ല, ടണൽ ഉപകരണത്തിന് ബൂട്ടുകൾക്കിടയിൽ മാറിയേക്കാവുന്ന ഒരു നമ്പർ ലഭിക്കുന്നു. നിലവിലില്ലാത്ത ഒരു ഉപകരണത്തെ പേരിടുന്ന നിയമം പാഴ്സിംഗിൽ പരാജയപ്പെടുന്നു, അത് ഉച്ചത്തിലും പിടിക്കാൻ എളുപ്പവുമാണ്, എന്നാൽ തെറ്റായ നിലവിലുള്ള ഉപകരണത്തെ പേരിടുന്ന നിയമം വ്യക്തമായി പാഴ്സ് ചെയ്യപ്പെടുകയും നിങ്ങൾ നിർത്താൻ ഉദ്ദേശിച്ച ട്രാഫിക് അനുവദിക്കുകയും ചെയ്യുന്നു.

ക്ലയന്റ് കണക്റ്റ് ചെയ്തിരിക്കുമ്പോൾ വസ്തുതകൾ ശേഖരിക്കുക, കാരണം ടണൽ ഉപകരണം അപ്പോൾ മാത്രമേ ഉണ്ടാകൂ. ഡിഫോൾട്ട് റൂട്ട് പിടിക്കുന്ന ഇന്റർഫേസ്, ക്ലയന്റ് സൃഷ്ടിച്ച ഉപകരണം, അത് ഡയൽ ചെയ്യുന്ന സർവറിന്റെ വിലാസവും പോർട്ടും എന്നിവ നിങ്ങൾക്ക് വേണം. ആ അവസാന മൂല്യമാണ് മിക്ക നിയമക്കൂട്ടങ്ങളും ഒഴിവാക്കുന്നത്, അത് ഒഴിവാക്കുന്നതാണ് പകർത്തിയ കൂട്ടം സ്വന്തം ടണൽ തടയാൻ കാരണം.

route -n get default
ifconfig -l
scutil --nc list

ആദ്യ കമാൻഡ് ഇപ്പോൾ ജയിക്കുന്ന ഇന്റർഫേസിനെ പേരിടുന്നു, രണ്ടാമത്തേത് കേർണലിന് അറിയാവുന്ന ഓരോ ഉപകരണവും ലിസ്റ്റ് ചെയ്യുന്നു, മൂന്നാമത്തേത് സിസ്റ്റത്തിന് ആരംഭിക്കാവുന്ന VPN കോൺഫിഗറേഷനുകൾ കാണിക്കുന്നു. ആ ഉത്തരങ്ങൾ എഴുതിവയ്ക്കുക, തുടർന്ന് ക്ലയന്റിന്റെ സ്വന്തം കോൺഫിഗറേഷനിൽനിന്ന് സർവർ വിലാസവും പോർട്ടും വായിക്കുക.

ടണലിന്റെ വഴിക്ക് ചുറ്റും നിയമക്കൂട്ടം എഴുതുക

താഴെയുള്ള ഫയൽ സ്വതവേ നിരസിച്ച് അഞ്ച് കാര്യങ്ങൾ വീണ്ടും അനുവദിക്കുന്നു: ലൂപ്പ്ബാക്ക്, ടണൽ ഉപകരണം, ക്ലയന്റിന്റെ സർവറിലേക്കുള്ള വഴി, ടണൽ ഉണ്ടാകുന്നതിന് മുമ്പ് ഉപയോഗിക്കുന്ന റിസോൾവർ, കൂടാതെ വയർലെസ് ലിങ്ക് ഉപയോഗയോഗ്യമായി നിർത്തുന്ന രണ്ട് കൈമാറ്റങ്ങൾ. ഇന്റർഫേസ് പേരുകളും സർവർ വിലാസവും നിങ്ങളുടെ യന്ത്രത്തിൽനിന്നാണ് വരുന്നത്, അതിനാൽ നിങ്ങൾ സ്ഥിരീകരിച്ച മൂല്യങ്ങൾ ചേർക്കുക. ടണൽ നമ്പറും നിങ്ങളുടേതുമായി പൊരുത്തപ്പെടില്ല.

set skip on lo0
block all
pass out quick on utun0
# maintain this line when the server address changes
pass out quick on en1 inet proto udp to 203.0.113.10 port 1194
# only the resolver the client uses before the tunnel exists
pass out quick on en1 inet proto udp to 192.0.2.53 port 53
pass out quick on en1 inet proto udp from any port 68 to any port 67
pass out quick on en1 inet proto udp to 224.0.0.251 port 5353

Mac-ന് വിലാസം ലഭിക്കുന്നതിന് മുമ്പുതന്നെ അത് ആവശ്യപ്പെടുന്നതിനാൽ DHCP വരി ഉണ്ട്, അതിനാൽ അഭ്യർത്ഥന ഉപയോഗയോഗ്യമായ ഉറവിട വിലാസമില്ലാതെ പോർട്ട് 68-ൽനിന്ന് പോർട്ട് 67-ലേക്ക് പുറപ്പെടുന്നു. മൾട്ടികാസ്റ്റ് വരി വയർലെസ് ലിങ്ക് ഉപയോഗിക്കാൻ യോഗ്യമാണോ എന്ന് സിസ്റ്റത്തെ വിലയിരുത്താൻ അനുവദിക്കുന്നു, അത് നീക്കം ചെയ്താൽ പ്രവർത്തിക്കുന്ന നെറ്റ്വർക്കിൽപോലും കണക്ഷനില്ലെന്ന് റിപ്പോർട്ട് ചെയ്യുന്ന യന്ത്രമാകും. അന്തിമ പോയിന്റിന്റെ വരിയാണ് OpenVPN തന്റെ സർവറിലെത്താൻ അനുവദിക്കുന്നത്; അതില്ലാതെ block all പുറം ഹാൻഡ്ഷേക്ക് ഇട്ടുകളയുന്നു, ടണൽ ഒരിക്കലും ഉയരുന്നുമില്ല. റിസോൾവറിന്റെ വരി പൊതുവായ DNS അനുമതിയെക്കാൾ ഇടുങ്ങിയതാണ്, കാരണം യന്ത്രം നടത്തുന്ന ഓരോ ചോദ്യത്തിനും പകരം ഒരു വിലാസവും ഒരു പോർട്ടും മാത്രം പേരിടുന്നു.

ആ അന്തിമ പോയിന്റ്, റിസോൾവർ ഒഴിവാക്കലുകളാണ് നിലനിൽക്കേണ്ട രണ്ടെണ്ണം; ബാക്കിയെല്ലാം തടഞ്ഞിരിക്കുന്നു. ക്ലയന്റ് അക്ഷരാർത്ഥ വിലാസത്തിൽ ഡയൽ ചെയ്യുന്നുവെങ്കിൽ റിസോൾവർ വരി നീക്കി അന്തിമ പോയിന്റിന്റെ വരി നിലനിർത്തുക. സർവർ വിലാസം മാറുന്നുവെങ്കിൽ അടുത്ത കണക്ഷന് മുമ്പ് ആ വരി പുതുക്കുക, അല്ലെങ്കിൽ ക്ലയന്റിന്റെ സ്വന്തം ഹൂക്കിൽനിന്ന് pf പട്ടിക നിറച്ച് പകരം പട്ടിക ഒത്തുനോക്കുക.

ടണൽ താഴ്ത്തുക, തുടർന്ന് റീബൂട്ട് ചെയ്യുക

ലോഡ് ചെയ്യുന്നതിന് മുമ്പ് പാഴ്സ് ചെയ്യുക, കാരണം വാക്യഘടനാ പിശക് ഉണങ്ങിയ ഓട്ടത്തിൽ വിലകുറഞ്ഞതും വിദൂര സെഷനിൽ ചെലവേറിയതുമാണ്. തുടർന്ന് ഫയൽ ലോഡ് ചെയ്യുക, ഫിൽട്ടർ ഓഫായിരുന്നെങ്കിൽ ഓണാക്കുക, യഥാർത്ഥത്തിൽ എന്താണ് പ്രാബല്യത്തിലുള്ളതെന്ന് വീണ്ടും വായിക്കുക. വീണ്ടും വായിക്കൽ ആചാരമല്ല: മറ്റൊരു ആങ്കർ നിങ്ങൾ എഴുതാത്ത നിയമങ്ങൾ ചേർത്തേക്കാം, അതിനാൽ അച്ചടിച്ച കൂട്ടം നിങ്ങളുടെ ഫയലുമായി താരതമ്യം ചെയ്യുക.

sudo pfctl -n -v -f /etc/pf.conf
sudo pfctl -f /etc/pf.conf
sudo pfctl -e
sudo pfctl -s rules
sudo pfctl -s Anchors
sudo pfctl -a <anchor> -s rules
sudo pfctl -s info

നിയമങ്ങൾ ലോഡ് ചെയ്തശേഷം ടണൽ താഴ്ത്തി ഒരു പേജ് ലോഡ് ചെയ്യാൻ ശ്രമിക്കുക. സാധാരണ ട്രാഫിക് നിൽക്കണം, യന്ത്രം ഉറങ്ങി ഉണരുന്നതിനുശേഷവും നിന്നിരിക്കണം, കാരണം ആ പരിവർത്തനത്തിലാണ് പഴയ അവസ്ഥ തിരികെ കയറുന്നത്. വീണ്ടും കണക്റ്റ് ചെയ്ത് നിയമക്കൂട്ടം തൊടാതെ ട്രാഫിക് പുനരാരംഭിക്കുന്നുവെന്ന് സ്ഥിരീകരിക്കുക. ടണൽ താഴ്ത്തിയിട്ടും ബ്രൗസർ പ്രവർത്തിക്കുന്നുവെങ്കിൽ ഏതോ നിയമം നിങ്ങൾ കരുതിയതിലും വിശാലമാണ്, വീണ്ടും വായിക്കൽ സാധാരണ അതിനെ പേരിടുന്നു.

റീബൂട്ട് ആളുകൾ ഒഴിവാക്കുന്ന ഭാഗമാണ്. macOS ബൂട്ടിൽ /etc/pf.conf വായിക്കുന്നു, പക്ഷേ ഫയൽ വായിക്കുന്നത് ഫിൽട്ടർ ഓണാക്കുന്നതിന് തുല്യമല്ല, അതിനാൽ ഇപ്പോൾ പ്രവർത്തിക്കുന്ന നിയമക്കൂട്ടം റീസ്റ്റാർട്ടിനുശേഷം നിഷ്ക്രിയമായേക്കാം. തുടർന്ന് sudo pfctl -s info പ്രവർത്തിപ്പിച്ച് സ്റ്റാറ്റസ് വരി ഫിൽട്ടർ ഓണാണെന്ന് റിപ്പോർട്ട് ചെയ്യുന്നുവെന്ന് സ്ഥിരീകരിക്കുക.

പുറത്തുകടക്കുന്ന വഴിയും റീസ്റ്റാർട്ട് വഴിയും സത്യസന്ധമായി സൂക്ഷിക്കുക

എല്ലാം തടയുന്ന ഒരു നിയമക്കൂട്ടത്തിന് വിദൂരമായി കൈകാര്യം ചെയ്യുന്ന യന്ത്രത്തിൽനിന്ന് നിങ്ങളെ പുറത്താക്കാനും കഴിയും. കഴിയുമ്പോൾ പ്രാദേശിക സെഷനിൽനിന്ന് എഡിറ്റ് ചെയ്യുക, മുൻ ഫയൽ പുതിയതിനൊപ്പം സൂക്ഷിക്കുക, ആവശ്യമാകുന്നതിന് മുമ്പ് തിരികെയുള്ള വഴി അറിയുക. താഴെയുള്ള കമാൻഡുകൾ ഫിൽട്ടർ ഓഫാക്കി നിങ്ങൾ സൂക്ഷിച്ച പകർപ്പ് വീണ്ടും ലോഡ് ചെയ്യുന്നു, ഇത് നിങ്ങൾ ഇപ്പോൾ മുറിച്ച ടണലിലൂടെയല്ല, കൺസോളിൽനിന്ന് ഓടിക്കേണ്ട ക്രമമാണ്. അഞ്ച് സെക്കൻഡിലെ തിരിച്ചുവരവ് ഓരോ തവണയും ബുദ്ധിയുള്ള നിയമത്തെ തോൽപ്പിക്കുന്നു.

sudo pfctl -d
sudo pfctl -f /etc/pf.conf.previous
sudo pfctl -s rules

സ്ഥിരതയ്ക്ക് pfctl -e ഓടിക്കുകയും ബൂട്ടിൽ നിങ്ങളുടെ ഫയൽ ലോഡ് ചെയ്യുകയും ചെയ്യുന്ന ഒരു ലോഞ്ച് ഡീമൺ വേണം. മറ്റേതൊരു പ്രത്യേകാവകാശ ജോലിയെപ്പോലെ അതിനെ കാണുക: കേവല പാതകൾ, പിന്നീട് വായിക്കാവുന്ന ലോഗ്, ശാരീരികമായി എത്താവുന്ന യന്ത്രത്തിലെ പരിശോധന. നിശബ്ദമായി പരാജയപ്പെടുന്ന ഡീമൺ യന്ത്രത്തെ അസംരക്ഷിതവും സാധാരണമെന്ന് തോന്നുന്നതുമായി വിടുന്നു.

വിടവുകൾ രേഖപ്പെടുത്തുക, സ്വന്തം ടണൽ ഉപകരണം സൃഷ്ടിക്കുന്ന രണ്ടാമത്തെ VPN ക്ലയന്റിൽ തുടങ്ങുക. നിങ്ങളുടെ നിയമങ്ങൾ ഒരു ടണൽ ഇന്റർഫേസിനെ പേരിടുന്നു, അതിനാൽ രണ്ടാമത്തേത് തടഞ്ഞിരിക്കും അല്ലെങ്കിൽ പിന്നീട് ചേർത്ത വിശാലമായ നിയമം അതിനെ പിടിക്കും. ടെതറിംഗ്, ഹോട്ട്സ്പോട്ട് ഇന്റർഫേസുകൾ ചിലപ്പോൾ മാത്രം പ്രത്യക്ഷപ്പെടുന്നു, അതേ കുറിപ്പ് അർഹിക്കുന്നു. ആ വിടവുകളിൽ ഒന്നും നയം ഒഴിവാക്കാനുള്ള കാരണമല്ല; അവ നയം ഇപ്പോഴും നിലനിൽക്കുന്ന വ്യവസ്ഥകളാണ്.

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