WireGuard ഹാൻഡ്ഷേക്ക് പ്രവർത്തിക്കുന്നു, പക്ഷേ ഇന്റർനെറ്റ് ഇല്ല: പാക്കറ്റ് പിന്തുടരുക
ഹാൻഡ്ഷേക്ക് കീകളും എത്തിച്ചേരാനുള്ള കഴിവും മാത്രം തെളിയിക്കുന്നു. AllowedIPs-ൽ നിന്ന് ഫോർവേർഡിംഗ്, NAT, മടക്കറൂട്ട് എന്നിവയിലൂടെ ഒരു പാക്കറ്റ് പിന്തുടർന്ന് അത് എവിടെ നിൽക്കുന്നുവെന്ന് കാണുക.
ടണൽ പ്രവർത്തനക്ഷമമാണ്, wg show സമീപകാല ഹാൻഡ്ഷേക്ക് റിപ്പോർട്ട് ചെയ്യുന്നു, സെർവറിന്റെ ടണൽ വിലാസത്തിലേക്ക് നിങ്ങൾക്ക് പിംഗ് ചെയ്യാം, അതിനപ്പുറം ഒന്നും ഉത്തരം നൽകുന്നില്ല. ആദ്യ ചിന്ത കീകൾ വീണ്ടും സൃഷ്ടിക്കുകയോ കോൺഫിഗ് വീണ്ടും പങ്കിടുകയോ ആണ്. അത് ഇതിനകം പ്രവർത്തിക്കുന്നതായി തെളിയിച്ച പാതയുടെ ഭാഗം മാത്രം മാറ്റുന്നു.
പൂർത്തിയായ ഹാൻഡ്ഷേക്ക് പറയുന്നത് ഇരുവശവും കീകളിൽ യോജിക്കുന്നു, UDP എൻഡ്പോയിന്റിൽ എത്തുന്നു, ക്രിപ്റ്റോ റൂട്ടിംഗ് പാക്കറ്റ് സ്വീകരിക്കുന്നു എന്നാണ്. പാക്കറ്റിന് പിന്നീട് സെർവർ വിടാൻ കഴിയുമോ എന്നതിനെക്കുറിച്ച് അത് ഒന്നും പറയുന്നില്ല.
അതിനാൽ ഊഹിക്കുന്നതിന് പകരം ഒരു പാക്കറ്റ് പിന്തുടരുക. അത് ചാകാവുന്ന നാല് സ്ഥലങ്ങളുണ്ട്, ഓരോന്നും വ്യത്യസ്ത അടയാളം അവശേഷിപ്പിക്കുന്നു.
ഹാൻഡ്ഷേക്ക് യഥാർത്ഥത്തിൽ തെളിയിക്കുന്നത്
WireGuard ഒരു UDP പ്രോട്ടോക്കോളാണ്, അത് Noise ഹാൻഡ്ഷേക്കോടെ സെഷൻ സ്ഥാപിച്ച് പിന്നീട് ഒരു പിയറിനായി പാക്കറ്റുകൾ എൻക്രിപ്റ്റ് ചെയ്യുന്നു. wg show കുറച്ച് സെക്കൻഡ് പഴക്കമുള്ള ഹാൻഡ്ഷേക്കും വർദ്ധിക്കുന്ന കൈമാറ്റ കൗണ്ടറും കാണിക്കുമ്പോൾ, എൻഡ്പോയിന്റ്, കീകൾ, പിയറിന്റെ പൊതു കീ എന്നിവയെല്ലാം ശരിയാണ്.
അത് തെളിയിക്കാത്തത്: നിങ്ങളുടെ ക്ലയന്റ് ഇന്റർനെറ്റിലേക്കുള്ള ട്രാഫിക് ഇന്റർഫേസിലേക്ക് അയക്കുന്നുണ്ടോ, സെർവർ അത് ഫോർവേഡ് ചെയ്യാൻ തയ്യാറാണോ, അല്ലെങ്കിൽ മറുപടിക്ക് തിരികെയുള്ള വഴി കണ്ടെത്താനാകുമോ എന്നത്. ഇവ കേർണൽ റൂട്ടിംഗിന്റെയും ഫയർവാളിന്റെയും തീരുമാനങ്ങളാണ്, അവ ടണലിന് പുറത്താണ് എടുക്കുന്നത്.
സെർവറിന്റെ ടണൽ വിലാസത്തിലേക്ക് പിംഗ് ചെയ്യുന്നത് അത്ര തെറ്റിദ്ധരിപ്പിക്കുന്ന പരിശോധനയാകാനുള്ള കാരണം ഇതാണ്. ആ പാക്കറ്റ് സെർവറിലേക്ക് തന്നെ അഭിസംബോധന ചെയ്തതാണ്, അതിനാൽ അത് പ്രാദേശികമായി അവസാനിക്കുന്നു. അതിന് ഒരിക്കലും ഫോർവേർഡിംഗ് ആവശ്യമില്ല, ഒരിക്കലും വിവർത്തനം ആവശ്യമില്ല, ഒരിക്കലും ഇന്റർനെറ്റിൽ നിന്നുള്ള മടക്കറൂട്ട് ആവശ്യമില്ല.
AllowedIPs ഒരു റൂട്ടിംഗ് തീരുമാനമാണ്
ക്ലയന്റിൽ AllowedIPs രണ്ട് ജോലി ചെയ്യുന്നു. ഏത് ലക്ഷ്യ വിലാസങ്ങൾ ഈ പിയറിന്റെ ടണലിലേക്ക് അയക്കുന്നു എന്ന് തീരുമാനിക്കുന്ന ക്രിപ്റ്റോകീ റൂട്ടിംഗ് പട്ടികയാണ് ഇത്, കൂടാതെ പിയർ നിങ്ങളിൽ നിന്ന് സ്വീകരിക്കുന്ന സ്രോതസ്സ് വിലാസങ്ങളുടെ പട്ടികയുമാണ്. ക്ലയന്റ് കോൺഫിഗിൽ 10.8.0.0/24 മാത്രം ഉണ്ടെങ്കിൽ, പൊതു ലക്ഷ്യങ്ങൾ ഒരിക്കലും ഇന്റർഫേസിലേക്ക് കടക്കുന്നില്ല, നിങ്ങളുടെ സാധാരണ ഡിഫോൾട്ട് റൂട്ട് അവയെ ടണലിന് പുറത്തേക്ക് കൊണ്ടുപോകുന്നു. അപ്പോൾ ടണൽ തികച്ചും പ്രവർത്തിക്കുന്നു, നിങ്ങൾ ആഗ്രഹിച്ചതിൽ ഒന്നും ചെയ്യുന്നുമില്ല.
കോൺഫിഗ് ഫയൽ പറയുന്നതല്ല, ക്ലയന്റ് യഥാർത്ഥത്തിൽ എന്ത് ഇൻസ്റ്റാൾ ചെയ്തു എന്ന് നോക്കുക:
wg show wg0 allowed-ipsip route get 1.1.1.1
രണ്ടാമത്തെ കമാൻഡാണ് നിർണായകം. ഉത്തരം നിങ്ങളുടെ ഭൗതിക ഇന്റർഫേസും സാധാരണ ഗേറ്റ്വേയും പേരിടുന്നുവെങ്കിൽ, പാക്കറ്റ് ടണലിലൂടെ പോകുന്നില്ല, സെർവർ ഭാഗത്തെ ഒരു മാറ്റവും അത് ശരിയാക്കില്ല. IPv4-ന് 0.0.0.0/0 ഉം IPv6-ന് ::/0 ഉം വെവ്വേറെ ചേർക്കുക; ഒരു കുടുംബത്തിന് എല്ലാം പിടിക്കുന്ന നിയമം മറ്റേതിനെ അതിന്റെ യഥാർത്ഥ പാതയിൽ തന്നെ വിടുന്നു, പ്രവർത്തിക്കുന്ന IPv4 ടണലും കുടുങ്ങിയ IPv6 തിരച്ചിലും ഉണ്ടാകാനുള്ള സാധാരണ കാരണം ഇതാണ്.
ഗേറ്റ്വേയിൽ പാക്കറ്റ് എവിടെ ചാകുന്നു
റൂട്ട് ശരിയാണെങ്കിലും പാക്കറ്റ് ഇപ്പോഴും എങ്ങോട്ടും പോകുന്നില്ലെങ്കിൽ, അത് സെർവറിൽ എത്തി അവിടെ നിൽക്കുന്നു. നാല് പരിശോധനകൾ മിക്ക ഗേറ്റ്വേകളെയും ഉൾക്കൊള്ളുന്നു.
ഫോർവേർഡിംഗ്. sysctl net.ipv4.ip_forward 0 തിരികെ നൽകുന്നതാണ് ക്ലാസിക് ഉത്തരം, ഒരുപാട് വിതരണങ്ങൾ ഇപ്പോഴും സ്വതവേ 0-ൽ ആണ്. അത് 1 ആയിരിക്കണം, റീബൂട്ടിൽ അപ്രത്യക്ഷമാകുന്ന കമാൻഡിന് പകരം sysctl ഫയലിൽ സ്ഥിരമായി സജ്ജീകരിക്കണം. IPv6 ഫോർവേർഡിംഗ് പ്രത്യേക സ്വിച്ചാണ്.
ഫിൽട്ടർ നയം. സ്വതവേ drop നയമുള്ള FORWARD ചെയിൻ ടണൽ ട്രാഫിക് വലിച്ചെറിയും, പക്ഷേ ഹോസ്റ്റിലേക്കുള്ള ട്രാഫിക് അനുവദിക്കും, ഇത് ലക്ഷണവുമായി കൃത്യമായി യോജിക്കുന്നു. സംരക്ഷിച്ച ഫയലല്ല, ജീവനുള്ള നിയമക്കൂട്ടം വായിക്കുക: nft list ruleset അല്ലെങ്കിൽ iptables -S.
വിവർത്തനം അല്ലെങ്കിൽ റൂട്ടിംഗ്. സ്വകാര്യ ടണൽ വിലാസങ്ങൾ ഉപയോഗിക്കുന്ന ക്ലയന്റുകൾക്ക് സെർവറിന്റെ എക്സിറ്റ് ഇന്റർഫേസിൽ സ്രോതസ്സ് NAT ആവശ്യമാണ്, അല്ലെങ്കിൽ മുകളിലെ നെറ്റ്വർക്കിന് തിരികെ നൽകാൻ അറിയാവുന്ന റൂട്ട് ചെയ്ത പ്രിഫിക്സ് ആവശ്യമാണ്. ഇവയ്ക്കിടയിലുള്ള തിരഞ്ഞെടുപ്പ് വിലാസ പദ്ധതിയെ പിന്തുടരുന്നു. നിങ്ങളുടെ പ്രിഫിക്സ് ഇതിനകം തിരികെ റൂട്ട് ചെയ്യുന്ന നെറ്റ്വർക്കിലേക്ക് MASQUERADE ചേർക്കുന്നത് ഹാനികരമല്ല, പക്ഷേ അർത്ഥശൂന്യമാണ്, റൂട്ടില്ലാത്തിടത്ത് അത് ഒഴിവാക്കുന്നത് മറുപടികളെ റൂട്ട് ചെയ്യാനാകാത്ത സ്വകാര്യ ശ്രേണിയിലേക്ക് അഭിസംബോധന ചെയ്തതായി വിടുന്നു.
മടക്കപ്പാത. റൂട്ട് ചെയ്ത രൂപകൽപ്പനകളിൽ, മുകളിലെ റൗട്ടറിന് നിങ്ങളുടെ സെർവറിലേക്ക് ചൂണ്ടുന്ന ഒരു റൂട്ട് വേണം. പ്രൊവൈഡറിന്റെ നെറ്റ്വർക്കിനും അത് തടയാം: ചില ക്ലൗഡുകൾ ഇൻസ്റ്റൻസിൽ സ്രോതസ്സ്, ലക്ഷ്യ പരിശോധന സജീവമാക്കുന്നു, അത് സ്രോതസ്സ് ഇൻസ്റ്റൻസിന്റെ സ്വന്തം വിലാസമല്ലാത്ത പാക്കറ്റുകൾ ആ പരിശോധന പ്രവർത്തനരഹിതമാകുന്നതുവരെ നിശബ്ദമായി വലിച്ചെറിയുന്നു.
DNS റൂട്ടിംഗിൽ നിന്ന് വ്യത്യസ്തമായി പരാജയപ്പെടുന്നു
അറിയപ്പെടുന്ന വിലാസത്തിലേക്കുള്ള പാക്കറ്റും പേര് തിരച്ചിലും രണ്ട് വേറിട്ട പരാജയങ്ങളാണ്, പിശക് സന്ദേശങ്ങൾ വിപരീത ദിശകളിൽ തെറ്റിദ്ധരിപ്പിക്കുന്നു. ping 1.1.1.1 പ്രവർത്തിക്കുകയും ബ്രൗസറിന് ഒന്നും ലോഡ് ചെയ്യാനാകാതിരിക്കുകയും ചെയ്താൽ, റൂട്ട് കൃത്യമാണ്, പേര് വിശകലനം അല്ല. പിംഗ് തന്നെ പരാജയപ്പെട്ടാൽ, DNS അപ്രസക്തമാണ്, നിങ്ങൾ മുമ്പത്തെ ഭാഗത്തേക്ക് തിരികെ എത്തി.
wg-quick കോൺഫിഗിലെ DNS = വരിയിൽ നിന്ന് ഒരു റിസോൾവർ സജ്ജീകരിക്കാം, systemd-resolved-ന് ഓരോ ലിങ്കിനും സ്വന്തം സ്വഭാവമുണ്ട്. ടണലിനുള്ളിൽ മാത്രം എത്താവുന്ന വിലാസം കൊണ്ട് റിസോൾവർ മാറ്റിസ്ഥാപിക്കുന്ന VPN, ടണൽ വീഴുന്ന നിമിഷം എല്ലാ തിരച്ചിലും പരാജയപ്പെടുത്തും, അത് ടണൽ ഇന്റർനെറ്റ് തകർക്കുന്നതുപോലെ തോന്നിക്കുന്നു.
| Symptom | Layer to inspect |
|---|---|
| Tunnel address pings, nothing else does | Client route, then gateway forwarding |
| Public IP pings, hostnames fail | Resolver selection and reachability |
| Handshake completes, no reply ever | FORWARD policy or missing NAT on the server |
| Small requests work, large transfers stall | MTU and TCP MSS clamping |
തെളിവ് നൽകുന്ന ക്രമം
ആദ്യം ക്ലയന്റ് ഭാഗത്തെ പരിശോധന നടത്തുക, കാരണം അത് ഒരു കമാൻഡാണ്, പകുതി സാധ്യതകൾ ഒഴിവാക്കുന്നു. തുടർന്ന് സെർവർ ഇന്റർനെറ്റ് എക്സിറ്റ് ആയി ഉദ്ദേശിച്ചതാണോ എന്ന് സ്ഥിരീകരിക്കുക; സ്വകാര്യ ആക്സസിനായി നിർമ്മിച്ച ഗേറ്റ്വേ പൊതു ലക്ഷ്യങ്ങൾ പരാജയപ്പെടുമ്പോൾ തകർന്നിട്ടില്ല.
സെർവറിൽ, ക്ലയന്റിൽ നിന്ന് പിംഗ് അയക്കുമ്പോൾ ഇന്റർഫേസ് നിരീക്ഷിക്കുക: tcpdump -ni wg0 icmp അഭ്യർത്ഥന കാണിക്കണം, tcpdump -ni eth0 icmp അത് പുറത്തേക്ക് പോകുന്നത് കാണിക്കണം, വിവർത്തനം ചെയ്തതോ അല്ലയോ എന്നത് പരിഗണിക്കാതെ. ആദ്യത്തേതിൽ പ്രത്യക്ഷപ്പെട്ട് രണ്ടാമത്തേതിൽ ഒരിക്കലും പ്രത്യക്ഷപ്പെടുന്നില്ലെങ്കിൽ, നിർത്തൽ സെർവറിൽ തന്നെ പ്രാദേശികമാണ്. അത് പുറത്തുപോയി മറുപടി തിരികെ വരുന്നില്ലെങ്കിൽ, പ്രശ്നം മുകളിലാണ്, അത് വേറെ സംഭാഷണമാണ്.
അവസാനം, അറ്റകുറ്റപ്പണി റീബൂട്ടിനെ അതിജീവിക്കാൻ ഉറപ്പാക്കുക. ഫോർവേർഡിംഗ് sysctl ഫയലിലേക്കാണ്, ഫയർവാൾ നിയമങ്ങൾ അവ ലോഡ് ചെയ്യുന്ന സേവനത്തിലേക്കാണ്, ക്ലയന്റ് റൂട്ടുകൾ ഇന്റർഫേസ് ഉയർത്തുന്ന കോൺഫിഗിലേക്കാണ്, നിങ്ങൾ മറന്നുപോകുന്ന ഷെല്ലിലേക്കല്ല. വീണ്ടും കണക്ട് ചെയ്യുക, അതേ രണ്ട് പരിശോധനകൾ ആവർത്തിക്കുക, കൗണ്ടറുകൾ നീങ്ങുന്നുവെന്ന് സ്ഥിരീകരിക്കുക.