വീട്ടിലെ ബോക്സ് ടണൽ തുറക്കുകയും പ്രശ്നമില്ലാതെ ക്ലൗഡ് സർവറിൽ എത്തുകയും ചെയ്യുന്നു. വീട്ടിലെ ബോക്സ് അവസാനമായി എന്തെങ്കിലും അയച്ചതിന് ശേഷം ഒന്നോ രണ്ടോ മിനിറ്റ് ക്ലൗഡ് സർവർ വീട്ടിലെ ആപ്പ്ലിക്കേഷനിൽ എത്താം, പിന്നെ നിർത്തുന്നു. WireGuard ലോഗിൽ ഒന്നും കാണുന്നില്ല, ഹാൻഡ്ഷേക്ക് പിശക് റിപ്പോർട്ട് ചെയ്യുന്നില്ല, ടണൽ വീണ്ടും ആരംഭിച്ചാൽ അൽപ്പസമയം ശരിയാകുന്നു. ആ പാറ്റേൺ കാലഹരണപ്പെടുന്ന മാപ്പിംഗാണ്, കേടായ ടണലല്ല, കൂടാതെ താഴെയുള്ള ഗൈഡ് എന്തെങ്കിലും മാറ്റുന്നതിന് മുമ്പ് അത് സ്ഥിരീകരിക്കുന്നു.

പാറ്റേൺ നിഷ്ക്രിയതയിൽ കാലഹരണമാണെന്ന് സ്ഥിരീകരിക്കുക

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

sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer

വീട്ടിലെ പിയർ എന്തെങ്കിലും അയച്ച ഉടനെ ആദ്യ രണ്ടെണ്ണം പ്രവർത്തിപ്പിക്കുക, അഞ്ച് മിനിറ്റ് കാത്തിരുന്ന് വീണ്ടും പ്രവർത്തിപ്പിക്കുക. പുതിയ എൻഡ്പോയിന്റ് ഇല്ലാതെ ഷെഡ്യൂൾ അനുസരിച്ച് പുതുക്കുന്ന ഹാൻഡ്ഷേക്ക് ടൈംസ്റ്റാമ്പ് ടണൽ ജീവനോടെയുണ്ടെന്ന് പറയുന്നു. മാറിയത് പുറത്തുനിന്ന് ആവശ്യപ്പെടാത്ത പാക്കറ്റുകൾ എത്താനുള്ള കഴിവാണ്, അത് ടണലിന്റേതല്ല, പാതയുടെ സ്വഭാവമാണ്.

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

റൗട്ടറിന് പിന്നിലെ പിയറിൽ keepalive ഇടുക

സ്ഥിരമായ keepalive-കൾ ഷെഡ്യൂൾ അനുസരിച്ച് ചെറിയ പ്രാമാണീകരിച്ച പാക്കറ്റ് അയച്ച് NAT മാപ്പിംഗും ഏതെങ്കിലും ഫയർവാൾ അവസ്ഥയും ജീവനോടെ നിർത്തുന്നു. ക്രമീകരണം റൗട്ടറിന് പിന്നിലെ യന്ത്രത്തിന്റെ, വിദൂര പിയറിനുള്ള എൻട്രിയിൽ ആയിരിക്കണം, കാരണം അതിന്റെ പുറത്തേക്കുള്ള പാക്കറ്റ് അവസ്ഥ സൃഷ്ടിക്കുന്ന വശം അതാണ്.

[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25

അത് നിലവിലുള്ള പിയർ വിഭാഗത്തിലേക്ക് ലയിപ്പിക്കുക. അതേ പൊതു കീ ഉപയോഗിച്ച് രണ്ടാമത്തെ ബ്ലോക്ക് ചേർക്കുന്നത് ഓപ്ഷനുകൾ ചേർക്കാനുള്ള ശരിയായ വഴിയല്ല, wg-quick അവ നിങ്ങൾക്കായി ലയിപ്പിക്കുകയുമില്ല. രേഖപ്പെടുത്തിയിരിക്കുന്ന 25 സെക്കൻഡ് സാധാരണ UDP ടൈംഔട്ടുകൾക്ക് താഴെയായിരിക്കാൻ തിരഞ്ഞെടുത്ത ഒരു ഉദാഹരണമാണ്, പ്രത്യേക അർത്ഥമുള്ള മൂല്യമല്ല.

അതേ നിർദ്ദേശം ക്ലൗഡ് വശത്ത് ഇടുന്നത് ഈ പ്രശ്നത്തിന് സഹായിക്കുന്നില്ല. ആ പിയറിന്റെ പാക്കറ്റുകൾ ഇതിനകം പൊതു വിലാസത്തിൽ നിന്ന് വരുന്നു, അതിനാൽ പ്രധാന ദിശയിൽ സംരക്ഷിക്കാൻ മാപ്പിംഗ് ഇല്ല. ഇത് ട്രാഫിക് കൂട്ടുന്നു, ഒന്നും മാറ്റുന്നില്ല.

ഇടവേള ഊഹിക്കുന്നതിന് പകരം ടൈമറുകൾ വായിക്കുക

keepalive-കൾ പ്രവർത്തിക്കുന്നത് അവസ്ഥ കാലഹരണപ്പെടുന്നതിനേക്കാൾ കൂടുതൽ തവണ വരുന്നതിനാലാണ്. അത് ടൈംഔട്ടിനെ നിങ്ങൾക്ക് യഥാർത്ഥത്തിൽ ആവശ്യമുള്ള സംഖ്യയാക്കുന്നു, Linux-ൽ വിവർത്തനം ചെയ്യുന്ന ഉപകരണത്തിൽ അത് വായിക്കാം:

sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820

ആദ്യ മൂല്യം ഒരു ദിശയിൽ മാത്രം കണ്ട UDP ഫ്ലോയുടെ ടൈംഔട്ടാണ്, രണ്ടാമത്തേത് മറുപടികൾ നിരീക്ഷിച്ചതിന് ശേഷം ബാധകമാകുന്നു. രണ്ടും സാധാരണയായി ചെറുതാണ്, നിശ്ശബ്ദമാകുന്ന മാപ്പിംഗ് നിങ്ങളുടെ ഫ്ലോയ്ക്ക് ബാധകമായത് പിന്തുടരും.

ആ സംഖ്യ നിങ്ങളുടെ ഇടവേളയുമായി താരതമ്യം ചെയ്യുക. 30 സെക്കൻഡ് ടൈംഔട്ടിന് കീഴിൽ 25 സെക്കൻഡ് keepalive പ്രവർത്തിക്കുന്നു; അതേ keepalive 15 സെക്കൻഡ് ടൈംഔട്ടിന് കീഴിൽ പ്രവർത്തിക്കുന്നില്ല. എത്ര തവണ വീണ്ടും ശ്രമിച്ചാലും ആ ഗണിതം മാറുന്നില്ല. ചില ഉപഭോക്തൃ റൗട്ടറുകളും മൊബൈൽ ഓപ്പറേറ്റർമാരും Linux സ്ഥിരസ്ഥിതിയേക്കാൾ വളരെ ചെറിയ മൂല്യങ്ങൾ ഉപയോഗിക്കുന്നു, അതുകൊണ്ടാണ് ഒരു നെറ്റ്വർക്കിൽ പ്രവർത്തിക്കുന്ന കോൺഫിഗറേഷൻ മറ്റൊന്നിൽ പരാജയപ്പെടുന്നത്.

ObservationWhat it meansReasonable response
Works after traffic, dies when idleMapping or firewall state expiringLower the keepalive interval
Never works, even immediatelyNo return route, listener or firewallStop tuning keepalive
Works for hours, then dies onceCarrier-side translation or address changeCheck the endpoint and logs together

ലിസണറും ഫയർവാളും വെവ്വേറെ പരിശോധിക്കുക

ജീവനുള്ള മാപ്പിംഗ് ആവശ്യമാണ്, പര്യാപ്തമല്ല. വീട്ടിലെ ബോക്സിലെ ആപ്പ്ലിക്കേഷൻ ശരിയായ വിലാസത്തിൽ കേൾക്കണം, ഹോസ്റ്റ് ഫയർവാൾ ഡീക്രിപ്റ്റ് ചെയ്തതിന് ശേഷം പാക്കറ്റിന് അനുവാദം നൽകണം.

sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health

സോക്കറ്റ് ടണൽ വിലാസത്തിലല്ലാതെ ഭൗതിക ഇന്റർഫേസ് വിലാസത്തിൽ മാത്രം ബന്ധിച്ചിട്ടുണ്ടെങ്കിൽ, ടണലിൽ വരുന്ന പാക്കറ്റുകൾ ഫയർവാളിനോട് ചോദിക്കുന്നതിന് മുമ്പ് തന്നെ ഉപേക്ഷിക്കപ്പെടുന്നു. ഈ പരാജയം ക്ലൗഡ് വശത്തുനിന്ന് മാപ്പിംഗ് പ്രശ്നം പോലെ തന്നെ കാണപ്പെടുന്നു, ഏത് keepalive ക്രമീകരണത്തെയും അത് അതിജീവിക്കുന്നു.

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

മാറ്റം വിന്യസിച്ച് അതിന്റെ പരിധികൾ അറിയുക

ക്രമീകരണം പ്രയോഗിക്കുക, അതാണ് നിങ്ങളുടെ അപ്ഡേറ്റ് രീതിയെങ്കിൽ ഇന്റർഫേസ് പുനരാരംഭിക്കുക, തുടർന്ന് തൽക്ഷണ പരിശോധനയ്ക്ക് പകരം നിഷ്ക്രിയതാ പരിശോധന ആവർത്തിക്കുക. മുമ്പ് വായിച്ച ടൈംഔട്ടിനേക്കാൾ കൂടുതൽ കാത്തിരിക്കുക, ഒരു റിവേഴ്സ് അഭ്യർത്ഥന നടത്തി രണ്ട് അറ്റങ്ങളിലും കൗണ്ടറുകൾ നീങ്ങിയെന്ന് സ്ഥിരീകരിക്കുക.

ഇടവേളയും അളന്ന ടൈംഔട്ടും അതിന് അടുത്തായി രേഖപ്പെടുത്തുക. ഭാവിയിൽ റൗട്ടർ ഫേംവെയറിൽ മാറ്റമോ മൊബൈൽ കണക്ഷനിലേക്കുള്ള മാറ്റമോ ടൈംഔട്ട് മാറ്റിയേക്കാം. മൂല്യം പകർത്തുന്നതിന് പകരം വീണ്ടും കണ്ടെത്താൻ അനുവദിക്കുന്നത് കുറിപ്പാണ്. ഒരു വരിയിൽ രണ്ട് സംഖ്യകൾ പിന്നീട് ഒരു മുഴുവൻ അന്വേഷണം ലാഭിക്കുന്നു.

സ്ഥിരമായ keepalive-കൾ അവസ്ഥ സംരക്ഷിക്കുന്നു. അവ പോർട്ട് തുറക്കുന്നില്ല, അനുവദിച്ച ലിസ്റ്റിലേക്ക് എൻട്രി ചേർക്കുന്നില്ല, ഒരു ലിസണറെ പ്രത്യക്ഷപ്പെടാൻ അനുവദിക്കുന്നുമില്ല. റിവേഴ്സ് കണക്ഷൻ ഒട്ടും പ്രവർത്തിക്കാത്തപ്പോൾ, കുറ്റം ആ മൂന്നിൽ ഒന്നാണ്, WireGuard ദ്രുത തുടക്കം അതേ ഇടുങ്ങിയ നിബന്ധനകളിൽ keepalive ക്രമീകരണം വിവരിക്കുന്നു.

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