നിങ്ങളുടെ VPN സെർവർ യഥാർത്ഥത്തിൽ കാണുന്ന ഏത് ഉറവിട വിലാസമാണ് NAT നിർണ്ണയിക്കുന്നത്
നിങ്ങളുടെ ലാപ്ടോപ്പിന്റെ വിലാസം ഒരിക്കലും VPN സെർവറിൽ എത്തുന്നില്ല. NAT അത് അവസാന ഹോപ്പിൽ വീണ്ടും എഴുതുന്നു, ടണലിന്റെ IP പിന്നീട് നൽകുന്നു. രണ്ട് അറ്റങ്ങളും എങ്ങനെ താരതമ്യം ചെയ്യാം.
VPN സെർവർ പാക്കറ്റിൽ നിന്ന് നിങ്ങളുടെ ലാപ്ടോപ്പിന്റെ വിലാസം വായിച്ച് ലോഗിൽ എഴുതുന്നു എന്ന് നിങ്ങൾ സങ്കൽപ്പിക്കുന്നു. അത് വായിക്കുന്നത് അവസാന NAT ഹോപ്പ് പുറം ഹെഡറിൽ ഇട്ടതാണ്, ഹോട്ട്സ്പോട്ടായി ഉപയോഗിക്കുന്ന ഫോണിൽ ഇത് പലപ്പോഴും നൂറുകണക്കിന് മറ്റ് വരിക്കാരുമായി പങ്കിടുന്ന വിലാസമാണ്. നിങ്ങളുടെ യന്ത്രത്തിന്റെ സ്വന്തം 192.168.x.x ആ ഹെഡറിൽ ഒരിക്കലും ഇന്റർനെറ്റ് കടക്കുന്നില്ല, ടണൽ വിലാസം കണക്ഷൻ ഇതിനകം സ്ഥാപിച്ചതിന് ശേഷം സെർവർ നൽകുന്നു. അതിനാൽ സെർവർ ലോഗും ലാപ്ടോപ്പിലെ ip addr യും യോജിക്കുന്നില്ലെങ്കിൽ, രണ്ടും തെറ്റല്ല; അവ ഒരു സെഷന്റെ വ്യത്യസ്ത പാളികളെ വിവരിക്കുന്നു.
മൂന്ന് വിലാസങ്ങൾ, ലോഗിൽ ഒന്ന് മാത്രം
മൂന്ന് വിലാസങ്ങൾ ഒന്നായി ചുരുക്കുന്നതിൽ നിന്നാണ് ആശയക്കുഴപ്പം ഉണ്ടാകുന്നത്. ഓരോന്നിനും വ്യത്യസ്ത ഉടമയുണ്ട്, വ്യത്യസ്ത ഹെഡറിലാണ് ജീവിക്കുന്നത്, വ്യത്യസ്ത വഴിയിലൂടെ സെർവറിൽ എത്തുന്നു.
| Address | Who assigns it | Where it sits | Visible to the VPN server |
|---|---|---|---|
Device address, e.g. 192.168.1.24 | Your router via DHCP | Outer header, before translation | No, rewritten in place |
| Translated address and port | Router, ISP CGNAT, or both | Outer header, after translation | Yes, this is the tuple it logs |
Tunnel address, e.g. 10.8.0.6 | The VPN server itself | Inner header, after decapsulation | Yes, but it chose it |
കണക്ട് ചെയ്യുന്ന നിമിഷത്തിൽ മധ്യനിര മാത്രമാണ് അജ്ഞാതം. ഡീമോൺ അനുസരിച്ച് സെർവർ അത് തന്റെ പിയർ പട്ടികയിലോ സ്റ്റാറ്റസ് ഫയലിലോ ഫ്ലോ ലോഗിലോ എഴുതുന്നു: WireGuard അതിനെ എൻഡ്പോയിന്റ് എന്ന് വിളിക്കുന്നു, OpenVPN സ്റ്റാറ്റസ് ഫയൽ അതിനെ Real Address എന്ന് അടയാളപ്പെടുത്തുന്നു, strongSwan അതിനെ IKE_SA യുടെ ദൂരെയുള്ള ഹോസ്റ്റായി റിപ്പോർട്ട് ചെയ്യുന്നു. മറ്റൊരു ഉറവിടത്തിൽ നിന്ന് പാക്കറ്റ് വരുമ്പോഴെല്ലാം ആ മൂല്യം പുതുക്കുന്നു, അതിനാൽ ആരും ഒന്നും പുനരാരംഭിക്കാതെ അത് മാറുന്നു.
ഏറ്റവും താഴെയുള്ള നിരയാണ് ആളുകൾ തെറ്റായി ഐഡന്റിറ്റി അവകാശവാദമായി വായിക്കുന്നത്. അത് സെർവർ കോൺഫിഗറേഷനിലെ ഒരു സ്ഥാനം അടയാളപ്പെടുത്തുന്നു, വ്യക്തിയല്ല, കാരണം സെർവർ അതിനെ സ്വന്തം പൂളിൽ നിന്നാണ് തിരഞ്ഞെടുത്തത്. രണ്ട് ഉപയോക്താക്കൾക്ക് വ്യത്യസ്ത ദിവസങ്ങളിൽ ഒരേ ടണൽ വിലാസം ലഭിക്കാം, ഒരാൾക്ക് രണ്ട് ഉപകരണങ്ങളിൽ നിന്ന് രണ്ടെണ്ണം സൂക്ഷിക്കാം.
ടണൽ നിലനിൽക്കുമ്പോൾ ലോഗ് ചെയ്ത ട്യൂപ്പിൾ മാറുന്നത് എന്തുകൊണ്ട്
വിലാസ വിവർത്തനം ടൈമറുള്ള ഒരു പട്ടികയാണ്, ശാശ്വതമായ ബന്ധമല്ല. വീട്ടിലെ റൗട്ടർ അവസാന പാക്കറ്റിന് ശേഷം കുറച്ചു സമയം അതിന്റെ UDP മാപ്പിംഗ് സൂക്ഷിക്കുന്നു, ഓപ്പറേറ്ററുടെ ഗേറ്റ്വേ സ്വന്തം ഷെഡ്യൂൾ അനുസരിച്ച് പോർട്ടുകൾ പുനരുപയോഗിക്കുന്നു, Wi-Fi ൽ നിന്ന് LTE യിലേക്ക് പോകുന്ന ഫോൺ തികച്ചും വ്യത്യസ്തമായ ഉറവിടവുമായി മടങ്ങുന്നു. ഇവിടെ Linux conntrack ഡിഫോൾട്ടുകൾ ഉപയോഗപ്രദമായ അളവാണ്: nf_conntrack_udp_timeout 30 സെക്കൻഡും സ്ട്രീമിംഗ് രൂപഭേദം 120 ഉം ആണ്, അതിനാൽ ശാന്തമായ ഒരു ടണലിന് ഉപയോക്താവ് ശ്രദ്ധിക്കുന്നതിന് വളരെ മുൻപേ മാപ്പിംഗ് നഷ്ടപ്പെടാം.
ടണൽ അതിജീവിക്കുന്നത് പ്രോട്ടോക്കോൾ വിലാസത്തെയല്ല, പിയറിനെയാണ് പ്രാമാണീകരിക്കുന്നതിനാൽ. ഹാൻഡ്ഷേക്കിന് ശേഷം WireGuard അവസ്ഥയില്ലാത്തതാണ്, അതിനാൽ പ്രാമാണീകരിച്ച ഏത് പാക്കറ്റും സൂക്ഷിച്ച എൻഡ്പോയിന്റ് പുതുക്കുന്നു, അടുത്ത പാക്കറ്റിൽ പുനർബന്ധനം ഭേദമാകുന്നു; persistent-keepalive = 25 അതുകൊണ്ടാണ്, നിഷ്ക്രിയമായിരിക്കുമ്പോൾ മാപ്പിംഗ് ചൂടോടെ നിലനിർത്താൻ. OpenVPN ന്റെ --float അതേ ജോലി ചെയ്യുന്നു, പ്രാമാണീകരിച്ച ക്ലയന്റിന് പുതിയ വിലാസത്തിൽ നിന്നും പോർട്ടിൽ നിന്നും തുടരാൻ അനുവദിക്കുന്നു. float ഡിഫോൾട്ടായി ഓഫ് ആയ 2.4, 2.5 ബിൽഡുകളിൽ, പുനർബന്ധനം സെഷൻ പുനഃസജ്ജമാക്കുന്നു, ക്ലയന്റ് വീണ്ടും കണക്ട് ചെയ്യുന്നു.
IPsec കൂടുതൽ ചലിക്കുന്ന ഭാഗങ്ങളുമായി അങ്ങോട്ട് എത്തുന്നു. NAT കണ്ടെത്തൽ പേലോഡുകളിലെ ഉറവിട, ലക്ഷ്യ ഹാഷുകൾ താരതമ്യം ചെയ്ത് IKEv2 വിവർത്തനം തിരിച്ചറിയുന്നു, UDP 4500 എൻക്യാപ്സുലേഷനിലേക്ക് മാറുന്നു, keepalive പുതിയ ട്യൂപ്പിളിലേക്ക് പിന്തുടരുന്നു. keepalive തടയുമ്പോൾ SA കടലാസിൽ സജീവമായി നിലനിൽക്കുന്നു, ഒരു ദിശയിലെ ട്രാഫിക് നിശബ്ദമായി നിലയ്ക്കുന്നു.
സെർവറിന് എന്ത് ആരോപിക്കാം, എന്ത് സാധ്യമല്ല
കൊല്ലാൻ യോഗ്യമായ കെട്ടുകഥ എന്നത് വിവർത്തനം നിങ്ങളെ ഓപ്പറേറ്ററിൽ നിന്ന് മറയ്ക്കുന്നു എന്നതാണ്. അത് ലേബൽ മാറ്റുന്നു, നിരീക്ഷണമല്ല. ഓപ്പറേറ്ററുടെ NAT ന് പിന്നിലുള്ള ഗേറ്റ്വേ 100.64.0.0/10 സ്ഥലമോ പല വരിക്കാരും പങ്കിടുന്ന ഒരു പൊതു വിലാസമോ കാണുന്നു, എന്നിട്ടും പ്രവാഹത്തെ സർട്ടിഫിക്കറ്റ് വിഷയം, WireGuard പൊതു കീ, അനുവദിച്ച ടണൽ വിലാസം, ബൈറ്റ് കൗണ്ടറുകൾ, സമയ വിൻഡോ എന്നിവയുമായി ബന്ധിപ്പിക്കാം. അവയിലൊന്നിനും നിങ്ങളുടെ LAN വിലാസം ആവശ്യമില്ല.
പരിധികൾ എതിർദിശയിലും പ്രവർത്തിക്കുന്നു. ലോഗിലെ പങ്കിട്ട വിലാസം വീടിനെയല്ല, ഗേറ്റ്വേയെ സൂചിപ്പിക്കുന്നു; ഒരേ വിവർത്തന വിലാസത്തിൽ നിന്ന് വ്യത്യസ്ത പോർട്ടുകളിലുള്ള രണ്ട് സെഷനുകൾ വ്യത്യസ്ത ഉപകരണങ്ങളാണ്; പോർട്ട് പുനരുപയോഗിച്ചെങ്കിൽ രണ്ട് വ്യത്യസ്ത ദിവസങ്ങളിലെ ഒരേ വിലാസം ബന്ധമില്ലാത്ത രണ്ട് വരിക്കാരായിരിക്കാം. പിയർ കീകൾ മാത്രം രേഖപ്പെടുത്തുന്ന സെർവറിന് അക്കൗണ്ട് ഡാറ്റാബേസ് ഇല്ലാതെ അവയെ ഉപഭോക്താവുമായി ബന്ധിപ്പിക്കാനാവില്ല, വിലാസങ്ങൾ മാത്രം രേഖപ്പെടുത്തുന്ന സെർവറിന് ഒരേ റൗട്ടറിന് പിന്നിലെ ലാപ്ടോപ്പിനെയും ഫോണിനെയും വേർതിരിക്കാനാവില്ല.
ഊഹിക്കുന്നതിന് പകരം രണ്ട് അറ്റങ്ങളും താരതമ്യം ചെയ്യുക
എന്ത് സംഭവിച്ചുവെന്ന് തീരുമാനിക്കാൻ, അതേ കണക്ഷൻ രണ്ട് അറ്റങ്ങളിലും ഒരേ നിമിഷം പകർത്തി വിലാസമല്ല, ട്യൂപ്പിൾ താരതമ്യം ചെയ്യുക. ക്ലയന്റിൽ, ഏതെങ്കിലും വിവർത്തനത്തിന് മുൻപ്:
ss -uapn 'dport = :51820'
ip -4 route get 203.0.113.10
wg show wg0 endpoints
തുടർന്ന് റൗട്ടറിലോ CGNAT ഗേറ്റ്വേയിലോ ഉള്ള വിവർത്തന എൻട്രിയും ഒടുവിൽ സെർവറിൽ എത്തുന്നതും വായിക്കുക:
conntrack -L -p udp --dport 51820
tcpdump -ni eth0 udp port 51820
മിക്ക അസമത്വങ്ങളും മൂന്ന് മാതൃകകൾ വിശദീകരിക്കുന്നു. സെർവറിലെ ഉറവിട പോർട്ട് പ്രാദേശിക പോർട്ടിൽ നിന്ന് വ്യത്യസ്തവും ലക്ഷ്യം യോജിക്കുന്നതുമാണെങ്കിൽ: സാധാരണ പോർട്ട് വിവർത്തനം. സെർവറിലെ ഉറവിട വിലാസം നിങ്ങളുടേതല്ലാത്ത ISP ബ്ലോക്കിന്റേതാണെങ്കിൽ: കുറഞ്ഞത് ഒരു അധിക NAT പാളി. നിഷ്ക്രിയതയ്ക്ക് ശേഷം പാക്കറ്റുകൾ നിലച്ച് പുതിയ പോർട്ടിൽ തുടരുന്നുവെങ്കിൽ: മാപ്പിംഗ് കാലഹരണപ്പെട്ടു, റൗട്ടിംഗ് തകരാറല്ല. സമയ സ്റ്റാമ്പുകൾ ഒന്നോ രണ്ടോ സെക്കൻഡിൽ കൂടുതൽ അകലെയാണെങ്കിൽ, നിങ്ങൾ രണ്ട് വ്യത്യസ്ത ശ്രമങ്ങൾ താരതമ്യം ചെയ്യുകയാണ്.
വ്യത്യാസം കാര്യങ്ങൾ തകർക്കുന്നിടം
സെർവർ തകരാറുകളെപ്പോലെ തോന്നുന്ന തടസ്സങ്ങൾ സാധാരണയായി ഇവിടെ ആരംഭിക്കുന്നു. നിങ്ങളുടെ വീട്ടിലെ വിലാസത്തിൽ പിന്നിട്ട ആക്സസ് നിയമം ISP ലീസ് മാറിയതിന് ശേഷം പരാജയപ്പെടുന്നു. വിവർത്തന വിലാസവുമായി യോജിക്കുന്ന fail2ban നിയമം ആ ഗേറ്റ്വേയ്ക്ക് പിന്നിലെ എല്ലാ വരിക്കാരെയും ഒരുമിച്ച് വിലക്കുന്നു. സ്ഥിരമായ ദൂരെ വിലാസമുള്ള സൈറ്റ്-ടു-സൈറ്റ് പിയർ മൊബൈൽ ലിങ്ക് മാറിയതിന് ശേഷം കീ പുതുക്കുന്നത് നിർത്തുന്നു. ടണൽ പ്രോട്ടോക്കോൾ കുഴപ്പമില്ലായിരുന്നു; പുറം ട്യൂപ്പിളിനെക്കുറിച്ചുള്ള ഊഹം അല്ല.
അതേ ആശയക്കുഴപ്പം സെർവർ ഭാഗത്തും പ്രത്യക്ഷപ്പെടുന്നു. VPN ബോക്സ് തന്നെ NAT ന് പിന്നിലാണെങ്കിൽ പോർട്ട് ഫോർവേഡിംഗും പ്രവർത്തിക്കുന്ന ഫോർവേഡിംഗ് പാതയും വേണം; strongSwan ഫോർവേഡിംഗ് ഗൈഡ് IPsec ന് ആ കേസ് ഉൾക്കൊള്ളുന്നു. സ്വകാര്യ വിലാസത്തിൽ മാത്രം ലഭ്യമായ സെർവർ തന്റെ ക്ലയന്റുകൾ അവതരിപ്പിക്കുന്ന വിവർത്തന ട്യൂപ്പിൾ ഒരിക്കലും കാണുന്നില്ല, അത് ക്ലയന്റുകൾ വിവർത്തനം ചെയ്യപ്പെടുന്നതിൽ നിന്ന് വ്യത്യസ്ത പ്രശ്നമാണ്.
ഈ നാല് പരിശോധനകൾ ക്രമത്തിൽ ചെയ്യുക, ആദ്യം പരാജയപ്പെടുന്നതിൽ നിർത്തുക:
- രണ്ട് അറ്റങ്ങളിലും ഒരേ സമയം പകർത്തുക; ഉറവിട പോർട്ട്, ലക്ഷ്യ പോർട്ട്, സമയ സ്റ്റാമ്പുകൾ യോജിക്കുന്നുവെന്ന് ഉറപ്പാക്കുക.
- നിങ്ങൾ പ്രതീക്ഷിച്ച വിലാസമല്ല, സെർവർ ഇപ്പോൾ കൈവശം വയ്ക്കുന്ന വിലാസം പിയർ പട്ടികയിൽ വായിക്കുക.
- എൻട്രിയും അതിന്റെ ശേഷിക്കുന്ന ആയുസ്സും conntrack അല്ലെങ്കിൽ NAT പട്ടികയിൽ പരിശോധിക്കുക.
- ക്ലയന്റിലെ ടണൽ ഇന്റർഫേസ് വിലാസം LAN വിലാസമല്ല, സെർവർ അനുവദിച്ചതുമായി യോജിക്കുന്നുവെന്ന് ഉറപ്പാക്കുക.
രണ്ട് പകർപ്പുകളും ട്യൂപ്പിളിൽ യോജിക്കുന്നുവെങ്കിലും ടണൽ പരാജയപ്പെടുന്നുവെങ്കിൽ, വിവർത്തനം നിങ്ങളുടെ പ്രശ്നമല്ല; ഹാൻഡ്ഷേക്കിലേക്കും ടണലിനുള്ളിലെ റൗട്ടിംഗ് പട്ടികയിലേക്കും പോകുക.