പോർട്ട് 80, 443 നിയമങ്ങൾ ബ്രൗസറെ VPN വഴി അയക്കുന്നില്ല
പോർട്ട് പൊരുത്തം TCP പ്രവാഹങ്ങളെ തിരഞ്ഞെടുക്കുന്നു, ബ്രൗസറിനെയല്ല. HTTP/3 UDP-യിൽ പ്രവർത്തിക്കുന്നു, DNS മറ്റൊരു വഴി സ്വീകരിച്ചേക്കാം, അപ്ഡേറ്റർ നിങ്ങൾ എഴുതിയ അതേ നിയമവുമായി പൊരുത്തപ്പെടുന്നു.
ആരോ ബ്രൗസർ ടണൽ ഉപയോഗിക്കണമെന്ന് ആവശ്യപ്പെടുന്നു, മറുപടി ലക്ഷ്യ പോർട്ട് 80, 443 എന്നിവയുമായി പൊരുത്തപ്പെടുന്ന ഫയർവാൾ നിയമമായി തിരിച്ചുവരുന്നു. അത് കൃത്യമായി തോന്നുന്നു, അല്ലതാനും. പോർട്ട് പൊരുത്തം പാക്കറ്റുകളെ അവയുടെ ഗതാഗത ഹെഡർ പ്രകാരം തിരഞ്ഞെടുക്കുന്നു, ഏത് പ്രോഗ്രാം സോക്കറ്റ് തുറന്നു എന്നത് പ്രകാരമല്ല, ആധുനിക ബ്രൗസിംഗ് TCP-യിലെ ആ രണ്ട് പോർട്ടുകളിൽ ഒതുങ്ങുന്നുമില്ല. നിയമം നിങ്ങൾ ഉൾപ്പെടുത്താൻ ഉദ്ദേശിച്ച ചില ട്രാഫിക് വിട്ടുകളയും, നിങ്ങൾ ഒരിക്കലും സ്പർശിക്കാൻ ഉദ്ദേശിക്കാത്ത ട്രാഫിക് പിടിക്കും. അതെഴുതുന്നതിന് മുൻപ്, മൂന്ന് വ്യത്യസ്ത അതിരുകളിൽ യഥാർത്ഥത്തിൽ ഏതാണ് വേണ്ടതെന്ന് തീരുമാനിക്കുക.
നിയമം ഗതാഗത വർഗ്ഗത്തെ വിവരിക്കുന്നു, ഒരു ആപ്ലിക്കേഷനെയല്ല
Linux-ൽ, ലക്ഷ്യ-പോർട്ട് പൊരുത്തം TCP ഹെഡർ പരിശോധിക്കുന്നു, അതിന് മുകളിൽ ഒന്നുമില്ല. ആ പാക്കറ്റുകൾ അടയാളപ്പെടുത്തി നയ-റൂട്ട് ഉപയോഗിച്ച് നയിക്കുന്നത് രേഖപ്പെടുത്തിയത് പോലെ തന്നെ പ്രവർത്തിക്കുന്നു, ആ യന്ത്രങ്ങളിൽ ഒന്നിനും പേലോഡിന്റെ അർത്ഥമോ ഏത് പ്രോസസ് അത് അയച്ചുവെന്നോ അറിയില്ല. അടയാളം പാക്കറ്റിനോട് ചേർത്ത ഒരു സംഖ്യയാണ്, ആപ്ലിക്കേഷനോട് ചേർത്ത ഒരു ഐഡന്റിറ്റിയല്ല.
nft add rule inet mangle output tcp dport { 80, 443 } meta mark set 0x1
ip rule add fwmark 0x1 table 100
ip route add default dev wg0 table 100
ഉടൻ തന്നെ രണ്ട് അനന്തരഫലങ്ങൾ ഉണ്ട്. TCP 443-മായി ബന്ധപ്പെടുന്ന സോഫ്റ്റ്വെയർ അപ്ഡേറ്ററിന് ബ്രൗസറിന് ലഭിക്കുന്ന അതേ പെരുമാറ്റം ലഭിക്കുന്നു, അത് കുഴപ്പമില്ലായിരിക്കാം അല്ലെങ്കിൽ അടുത്ത അപ്ഡേറ്റ് ചക്രത്തിനായി കാത്തിരിക്കുന്ന ഒരു തടസ്സമായിരിക്കാം. മറ്റൊരു പോർട്ടിൽ, പറയട്ടെ 8443-ൽ, ബോധപൂർവ്വം പ്രസിദ്ധീകരിച്ച ഒരു വെബ് സേവനം നിയമത്തിന് പൂർണ്ണമായി പുറത്താണ്, എന്നിട്ടും അത് ഉപയോക്താവിന് പ്രധാനമായിരുന്ന ആ വെബ് ട്രാഫിക് തന്നെയാണ്.
ആവശ്യകത യഥാർത്ഥത്തിൽ ആ പോർട്ടുകളെക്കുറിച്ചായിരിക്കുമ്പോൾ സംഖ്യകൾ സാധുവായ തിരഞ്ഞെടുക്കലുകളാണ്. ടിക്കറ്റിൽ «ബ്രൗസർ» എന്ന് എഴുതി നിയമക്കൂട്ടത്തിൽ പോർട്ട് ശ്രേണി നടപ്പിലാക്കുമ്പോൾ അവ കെട്ടുകഥയാകുന്നു. ഈ വിടവ് ഡോക്യുമെന്റേഷന്റെ സൂക്ഷ്മതയല്ല. അവലോകനത്തിൽ സമർത്ഥിക്കാവുന്ന ഒരു നിയമവും ആർക്കും പരിശോധിക്കാനാകാത്ത ഒരു നിയമവും തമ്മിലുള്ള വ്യത്യാസമാണ്.
HTTP/3 നിങ്ങളുടെ TCP നിയമം നിശ്ശബ്ദമായി ഉപേക്ഷിക്കുന്നു
HTTP/3 QUIC-ന് മുകളിൽ പ്രവർത്തിക്കുന്നു, QUIC UDP-യിൽ വഹിക്കപ്പെടുന്നു. TCP-യുമായി മാത്രം പൊരുത്തപ്പെടുന്ന നിയമത്തിന് അത് കാണാനാകില്ല, അതിനാൽ നിങ്ങളുടെ പരീക്ഷണ പേജ് കടക്കുന്ന അതേ ബ്രൗസറിന് പിന്നീടുള്ള ഒരു അഭ്യർത്ഥന UDP-യിൽ അയച്ച് ആരും ക്രമീകരണം മാറ്റാതെ തന്നെ ടണൽ ഒഴിവാക്കാനാകും. RFC 9114 HTTP/3-നെ QUIC അധിഷ്ഠിത പ്രോട്ടോക്കോളായി വിവരിക്കുന്നു, സാധാരണ വിന്യാസത്തിൽ QUIC സ്ഥിരസ്ഥിതി പോർട്ട് 443 ഉള്ള UDP ഉപയോഗിക്കുന്നു.
ഒരു നിർദ്ദിഷ്ട ബ്രൗസർ HTTP/3 പരീക്ഷിക്കുമോ എന്നത് അതിന്റെ കോൺഫിഗറേഷൻ, സൈറ്റ്, മുൻപത്തെ ശ്രമം വിജയിച്ചോ എന്നിവയെ ആശ്രയിച്ചിരിക്കുന്നു. അതിനാൽ ഓർമ്മയിൽ നിന്ന് അതിനെക്കുറിച്ച് യുക്തി പറയുന്നത് മോശമാണ്. പകരം ഉപകരണത്തോട് ചോദിക്കുക:
curl --http3 -sS -o /dev/null -w '%{http_version} %{time_total}\n' https://example.com
ss -tunp | grep -E ':443\b'
curl വരി ചർച്ച ചെയ്ത പതിപ്പ് അച്ചടിക്കുന്നു, അതിനാൽ 3 UDP പാത ഉപയോഗിച്ചുവെന്ന് സ്ഥിരീകരിക്കുന്നു. തുടർന്ന് സോക്കറ്റ് പട്ടിക ആ കണക്ഷൻ ടണൽ ഇന്റർഫേസുമായി ബന്ധിപ്പിച്ചിട്ടുണ്ടോ ഭൗതികമായതുമായി എന്ന് കാണിക്കുന്നു. നിങ്ങളുടെ curl ബിൽഡിൽ HTTP/3 ഇല്ലെങ്കിൽ, ഫ്ലാഗ് നിശ്ശബ്ദമായി പിൻവാങ്ങുന്നതിന് പകരം ഉറക്കെ പരാജയപ്പെടുന്നു, അത് അതിന്റേതായ ഒരു ചെറിയ കരുണയാണ്.
DNS നിങ്ങൾ എടുക്കേണ്ട പ്രത്യേക തീരുമാനമാണ്
വെബ് ട്രാഫിക്കിനുള്ള പോർട്ട് നിയമം നാമ വിശകലനത്തെക്കുറിച്ച് ഒന്നും പറയുന്നില്ല. ബ്രൗസറിന് സിസ്റ്റം റിസോൾവർ, ബ്രൗസറിനുള്ളിൽ കോൺഫിഗർ ചെയ്ത റിസോൾവർ, അല്ലെങ്കിൽ അവസാനം കണക്ട് ചെയ്തത് തള്ളിയ ഒന്ന് എന്നിവ ഉപയോഗിക്കാം. അവയിൽ ഓരോന്നിനും നിങ്ങളുടെ നിയമം തിരഞ്ഞെടുക്കുന്ന പാതയിൽ നിന്ന് വ്യത്യസ്തമായ പാതയിൽ ചോദ്യങ്ങൾ അയക്കാം, അത് പരിചിതമായ വിഭജനം സൃഷ്ടിക്കുന്നു: പേജ് ലോഡ് ചെയ്യുന്നു, പേര് നിങ്ങൾ പ്രതീക്ഷിക്കാത്ത ഇടത്ത് വിശകലനം ചെയ്യുന്നു, ആന്തരിക സൈറ്റ് പൊതു വിലാസത്തിലേക്ക് വിശകലനം ചെയ്യുന്നു അല്ലെങ്കിൽ ഒട്ടും ചെയ്യുന്നില്ല.
അത് വ്യക്തമായി തീരുമാനിക്കുക. ആന്തരിക നാമങ്ങൾ ടണൽ വഴി വിശകലനം ചെയ്യേണ്ടതുണ്ടെങ്കിൽ, റിസോൾവർ അതിനുള്ളിൽ ആയിരിക്കണം, നിയമക്കൂട്ടം ആ റിസോൾവറിലേക്ക് DNS അനുവദിച്ച് മറ്റ് ചോദ്യങ്ങൾ പുറത്ത് നിർത്തണം. ബ്രൗസർ ഒരു പൊതു ദാതാവിനോട് DNS over HTTPS ഉപയോഗിക്കുന്നുവെങ്കിൽ, ചോദ്യം നിങ്ങളുടെ റിസോൾവറിനെ പൂർണ്ണമായി ഒഴിവാക്കുന്നു, പോർട്ട് നിയമത്തിന് സഹായിക്കാനാകില്ല. തിരഞ്ഞെടുപ്പ് റൂട്ടിംഗ് നിയമത്തിന്റെ അതേ മാറ്റ രേഖയിൽ എഴുതുക, കാരണം അടുത്ത പരാജയം ഡീബഗ് ചെയ്യുന്നയാൾ രണ്ടും ഒരുമിച്ച് വായിക്കുന്നു.
തുടർന്ന് പേജിനെക്കാൾ റിസോൾവർ ഉപയോഗിച്ച് പരിശോധിക്കുക:
resolvectl query intranet.example.internal
resolvectl status | grep -A3 'Current DNS Server'
ഉത്തരം ലഭിക്കാതിരിക്കുന്നത് വിശകലന പ്രശ്നമാണ്, ബ്രൗസറിന്റെ പിശക് സന്ദേശം നെറ്റ്വർക്കിനെ കുറ്റപ്പെടുത്തുമ്പോഴും. ഈ രണ്ട് പരാജയങ്ങളും ഉപയോക്താവിന് ഒരുപോലെ തോന്നുന്നു, എന്നാൽ തീർത്തും വ്യത്യസ്ത ടിക്കറ്റുകളാണ്.
മൂന്ന് അതിരുകൾ, മൂന്ന് വ്യത്യസ്ത സംവിധാനങ്ങൾ
നിങ്ങൾക്ക് വേണ്ട അതിർത്തി പേരിട്ടാൽ ഭൂരിഭാഗം ആശയക്കുഴപ്പവും അപ്രത്യക്ഷമാകുന്നു. അവ പരസ്പരം മാറ്റാനാകില്ല, ടണൽ വീഴുമ്പോൾ ഓരോന്നിനും വ്യത്യസ്ത പരാജയ രീതിയാണ്.
| What you actually want | Mechanism that fits | What it does not cover |
|---|---|---|
| These transport ports use this exit | Firewall mark plus policy route | Applications, HTTP/3 over UDP, DNS |
| This browsing session stays separate | Application-aware VPN, or a separate network namespace plus a proxy | Other applications in the same session |
| Only these private sites are reachable | Destination-based routes with private DNS | Public sites on the same address family |
വേറിട്ട ബ്രൗസർ പ്രൊഫൈൽ മധ്യ നിരയിലെ കെണിയാണ്. അത് കുക്കികളും ചരിത്രവും വേർതിരിക്കുന്നു, ഹോസ്റ്റിന്റെ റൂട്ടിംഗ് പട്ടികയിൽ ഒന്നും മാറ്റുന്നില്ല, അതിനാൽ രണ്ട് പ്രൊഫൈലുകളും ഒരേ പാതയിലൂടെ പോകുന്നു. വേർതിരിക്കലിന് കേർണൽ നിർബന്ധിക്കുന്ന എന്തെങ്കിലും വേണം, അതായത് നെയിംസ്പേസ്, കണ്ടെയ്നർ, അല്ലെങ്കിൽ സ്വന്തം ടണൽ ഇന്റർഫേസുള്ള ഒരു ആപ്ലിക്കേഷൻ.
ഏത് നിര ബാധകമായാലും, ടണൽ വീഴുമ്പോൾ എന്ത് സംഭവിക്കണം എന്ന് എഴുതുക. ഇന്റർഫേസിനൊപ്പം അപ്രത്യക്ഷമാകുന്ന അടയാള അധിഷ്ഠിത റൂട്ട് സാധാരണയായി ഭൗതിക സ്ഥിരസ്ഥിതി റൂട്ടിലേക്ക് മടങ്ങുന്നു, അത് fail-open പെരുമാറ്റമാണ്. അത് ബ്രൗസിംഗിന് സ്വീകാര്യവും മറ്റെല്ലാത്തിനും അസ്വീകാര്യവുമായേക്കാം, അത് ഒരു തീരുമാനമാണ്, നടപ്പിലാക്കലിന്റെ വിശദാംശമല്ല.
നിങ്ങൾ ഉൾക്കൊള്ളുന്നു എന്ന് അവകാശപ്പെടുന്ന പ്രവാഹങ്ങൾ പരിശോധിക്കുക
സ്വീകാര്യതാ പരീക്ഷണം നിങ്ങൾ എഴുതിയ അതിർത്തിയെ പിന്തുടരണം, സൗകര്യപ്രദമായ പോർട്ട് നമ്പറുകളെയല്ല. ടണൽ വഴി പോകേണ്ട ഒരു പ്രവാഹം, പോകരുതാത്ത മറ്റൊന്ന്, നിങ്ങൾ ചിന്തിക്കാത്ത ഒരു ഗതാഗതം ഉപയോഗിക്കുന്ന ഇനിയൊന്ന് എന്നിവ തിരഞ്ഞെടുക്കുക:
ip route get 203.0.113.40
curl -sS -o /dev/null -w 'v4 %{http_version} %{remote_ip}\n' https://example.com
nft list ruleset | grep -A2 'dport'
റൂട്ട് അന്വേഷണം ഒരു ലക്ഷ്യം യഥാർത്ഥത്തിൽ ഏത് ഇന്റർഫേസ് ഉപയോഗിക്കുന്നു എന്ന് പറയുന്നു, അതാണ് മിക്ക റിപ്പോർട്ടുകളും തെറ്റിക്കുന്ന വസ്തുത. curl വരി ചർച്ച ചെയ്ത പതിപ്പും വിലാസ കുടുംബവും സ്ഥിരീകരിക്കുന്നു. നിയമക്കൂട്ടത്തിന്റെ ഡംപ് പരീക്ഷണ വേളയിൽ ചേർത്ത് പരിധി നിശ്ചയിക്കാൻ മറന്ന നിയമം പിടിക്കുന്നു, അങ്ങനെ താൽക്കാലിക അടയാളം സ്ഥിരമായ fail-open റൂട്ടിംഗ് ആകുന്നു.
മൂന്ന് ഔട്ട്പുട്ടുകളും സമയ മുദ്രയോടെ രേഖപ്പെടുത്തി മാറ്റത്തിനൊപ്പം സൂക്ഷിക്കുക. പിന്നീട് ആരെങ്കിലും «VPN ഇന്റ്രാനെറ്റ് തകർത്തു» എന്ന് റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, ഉദ്ദേശിച്ചതും നടപ്പിലാക്കിയതുമായ അതിർത്തികളുടെ വ്യത്യാസം ആ രേഖയിൽ കാണാം, തിരുത്തൽ നിയമ മാറ്റമായിരിക്കും, തർക്കമല്ല.