wg-quick ഇന്റർഫേസ് നിർത്തുമ്പോൾ wg0.conf വീണ്ടും എഴുതുന്നത് എന്തുകൊണ്ട്
SaveConfig ഓഫ് ചെയ്യുമ്പോഴുള്ള സേവ് ആണ്, പശ്ചാത്തല സമന്വയമല്ല. ടണൽ സജീവമായിരിക്കുമ്പോൾ ഫയൽ എഡിറ്റ് ചെയ്യുക, പുനരാരംഭം പഴയ അവസ്ഥ അതിനു മുകളിൽ എഴുതിയേക്കാം.
നിങ്ങൾ /etc/wireguard/wg0.conf-ലേക്ക് ഒരു peer ചേർക്കുന്നു, systemctl restart wg-quick@wg0 പ്രവർത്തിപ്പിക്കുന്നു, വീണ്ടും നോക്കുമ്പോൾ peer ഫയലിൽ നിന്ന് അപ്രത്യക്ഷമായിരിക്കുന്നു. ഒന്നും ഒന്നിനെയും നശിപ്പിച്ചില്ല. പുനരാരംഭം എന്നത് നിർത്തലിനെ തുടർന്നുള്ള തുടക്കമാണ്, നിർത്തൽ ഘട്ടം നിലവിലെ റൺടൈം അവസ്ഥ നിങ്ങൾ ഇപ്പോൾ എഡിറ്റ് ചെയ്ത ഫയലിനു മുകളിൽ എഴുതിയേക്കാം. ഉത്തരവാദിയായ ക്രമീകരണം നിങ്ങൾ എഡിറ്റ് ചെയ്ത അതേ ഫയലിൽ തന്നെയുണ്ട്, അതാണ് ഈ ലൂപ്പ് ആദ്യമായി നേരിടുമ്പോൾ ഇത്ര ആശയക്കുഴപ്പമാക്കുന്നത്.
രണ്ട് അവസ്ഥകൾ, ഒരു ഫയൽ, ഓഫ് ചെയ്യുമ്പോഴുള്ള സേവ്
WireGuard-ന്റെ റൺടൈം അവസ്ഥയും wg-quick കോൺഫിഗറേഷൻ ഫയലും ബന്ധപ്പെട്ടവയാണ്, പക്ഷേ വ്യത്യസ്തമാണ്. ഫയൽ ഇൻപുട്ട് ആണ്: wg-quick അത് വായിക്കുന്നു, ഇന്റർഫേസ് സൃഷ്ടിക്കുന്നു, വിലാസങ്ങളും റൂട്ടുകളും സജ്ജീകരിക്കുന്നു, peer-കൾ കോൺഫിഗർ ചെയ്യുന്നു. കെർണൽ ഉപകരണം ജീവനുള്ള വസ്തുവാണ്, wg ഉപയോഗിച്ച് ചെയ്ത താഴ്ന്ന നിലയിലുള്ള മാറ്റങ്ങൾ ഒരിക്കലും സ്വയം തിരികെ എഴുതുന്നില്ല.
ഒരു ദിശ ഒഴികെ. ഇന്റർഫേസ് വിഭാഗത്തിൽ SaveConfig = true ഉണ്ടെങ്കിൽ, ഇന്റർഫേസ് താഴ്ത്തുന്നതിന്റെ ഭാഗമായി wg-quick ജീവനുള്ള കോൺഫിഗറേഷൻ ഫയലിൽ സേവ് ചെയ്യുന്നു. wg-quick കൈപ്പുസ്തകം കൃത്യമായി ഇതിനെക്കുറിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു: ഇന്റർഫേസ് സജീവമായിരിക്കുമ്പോൾ ഫയലിൽ വരുത്തുന്ന മാറ്റങ്ങൾ അത് നീക്കം ചെയ്യുമ്പോൾ മുകളിൽ എഴുതപ്പെടാം. ഇത് ഓഫ് ചെയ്യുമ്പോഴുള്ള സേവ് ആണ്, പശ്ചാത്തല ടൈമർ അല്ല, അതിനാൽ എന്തെങ്കിലും ഇന്റർഫേസ് നിർത്തുമ്പോൾ മാത്രമേ ഇത് പ്രവർത്തിക്കൂ.
| Action | What it writes | When it surprises you |
|---|---|---|
wg set on a live interface | Kernel state only | After reboot, when the file was never updated |
wg-quick down with SaveConfig | Live state into the file | Right after you edited the file |
wg syncconf | Kernel state only | Never; it does not touch the file |
wg-quick up | Kernel state from the file | If the file is stale, you get the old tunnel |
ക്രമത്തെക്കുറിച്ചുള്ള മുന്നറിയിപ്പായി പട്ടിക വായിക്കുക. ഈ മേഖലയിലെ ഓരോ ആകസ്മിക നഷ്ടവും സേവിന് ശേഷമല്ല, അതിന് മുമ്പ് സംഭവിച്ച എഡിറ്റിൽ നിന്നാണ് വരുന്നത്.
ആദ്യം നിർത്തുക, രണ്ടാമത് എഡിറ്റ് ചെയ്യുക, അവസാനം ആരംഭിക്കുക
ഫയൽ നിങ്ങളുടെ സത്യത്തിന്റെ ഉറവിടമാണെങ്കിൽ, പ്രതീക്ഷകൊണ്ടല്ല, ഘടനകൊണ്ട് ഫയലിനെ അധികാരമുള്ളതാക്കുക. ഇന്റർഫേസ് താഴ്ത്തുക, അത് പോയെന്ന് ഉറപ്പാക്കുക, പിന്നീട് എഡിറ്റ് ചെയ്യുക, പിന്നീട് അത് വീണ്ടും ഉയർത്തുക. നിയമം ലളിതമാണ്: സേവ് ഇപ്പോഴും പ്രവർത്തിക്കാവുന്നിടത്തോളം ഒരു എഡിറ്റും ഉണ്ടാകരുത്.
sudo cp -a /etc/wireguard/wg0.conf /root/wg0.conf.$(date +%F-%H%M)
sudo wg-quick down wg0
ls /sys/class/net/wg0 2>/dev/null || echo "interface is gone"
sudoedit /etc/wireguard/wg0.conf
sudo wg-quick up wg0
ബാക്കപ്പ് വരി കേവലം ആചാരമല്ല. ടണൽ ഈ യന്ത്രത്തിലേക്കുള്ള നിങ്ങളുടെ വഴിയാണെങ്കിൽ, താഴ്ത്തൽ ഘട്ടം നിങ്ങളുടെ സെഷൻ അവസാനിപ്പിച്ചേക്കാം, ഡിസ്കിലെ പകർപ്പും ഒരു കൺസോളും അല്ലെങ്കിൽ ബാൻഡിന് പുറത്തുള്ള വഴിയും മാത്രമാണ് പ്രവർത്തിക്കുന്ന റോൾബാക്ക്. ആ രണ്ടാം വരി വിശ്വസിക്കുന്നതിന് മുമ്പ് പരിശോധിക്കുക: നിശബ്ദമായി പരാജയപ്പെടുന്ന സ്ക്രിപ്റ്റിലെ പഴയ ഇന്റർഫേസ് പേരാണ് ആളുകൾ ഇപ്പോഴും ജീവനുള്ള ഫയൽ എഡിറ്റ് ചെയ്യുന്ന രീതി.
സാധാരണ താഴ്ത്തലിന് മുമ്പ് SaveConfig = false സജ്ജീകരിക്കുന്നതാണ് മറ്റൊരു സ്വീകാര്യമായ വഴി, അത് wg-quick യഥാർത്ഥത്തിൽ വായിക്കുന്ന ഫയലിൽ തന്നെ ചെയ്യണം. അത് ആ ഒരു സ്വയമേവയുള്ള സേവ് തടയുന്നു. അത് പ്രത്യേക NetworkManager പ്രൊഫൈലോ റൗട്ടർ എക്സ്പോർട്ടോ കണ്ടെയ്നർ എൻട്രിപോയിന്റോ നിങ്ങളുടെ എഡിറ്റുകൾ വീണ്ടും ലോഡ് ചെയ്യാൻ പ്രേരിപ്പിക്കുന്നില്ല, കാരണം ആ മാനേജർമാർ ഈ ഫയൽ ഒട്ടും വായിക്കുന്നില്ല.
ഇന്റർഫേസ് കീറാതെ peer മാറ്റങ്ങൾ പ്രയോഗിക്കുക
ഓരോ എഡിറ്റിനും തടസ്സം ആവശ്യമില്ല. ഫയൽ ഒരു കോൺഫിഗറേഷനാക്കി സമന്വയിപ്പിക്കുന്നതിലൂടെ പ്രവർത്തിക്കുന്ന ഇന്റർഫേസിൽ peer-തല മാറ്റങ്ങൾ പ്രയോഗിക്കാം, ഇത് താഴ്ത്തൽ ഘട്ടം പൂർണ്ണമായും ഒഴിവാക്കുകയും അതിനാൽ സേവും ഒഴിവാക്കുകയും ചെയ്യുന്നു:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes
strip ഘട്ടം പ്രധാനമാണ്. wg-quick-ന് മാത്രമുള്ള കീകൾ നീക്കം ചെയ്ത് അത് ഫയൽ പ്രിന്റ് ചെയ്യുന്നു, അതിനാൽ വിലാസങ്ങളും DNS-ഉം റൗട്ടിംഗ് നിർദ്ദേശങ്ങളും അവ മനസ്സിലാക്കാത്ത ഒരു ഉപകരണത്തിലേക്ക് പോകുന്നില്ല. തുടർന്ന് സമന്വയം ഇന്റർഫേസ് വീണ്ടും സൃഷ്ടിക്കാതെ peer-കളും കീകളും ജീവനുള്ള ഉപകരണത്തിൽ പ്രയോഗിക്കുന്നു, അതിനാൽ നിലവിലുള്ള സെഷനുകളും റൂട്ടുകളും അതിജീവിക്കുന്നു.
പരിധികളെക്കുറിച്ച് കൃത്യമായിരിക്കുക. peer സമന്വയം ഇന്റർഫേസ് വിലാസമോ wg-quick ചേർത്ത റൂട്ടുകളോ റിസോൾവർ കോൺഫിഗറേഷനോ മാറ്റുന്നില്ല, കാരണം അവയൊന്നും WireGuard ഉപകരണത്തിന്റേതല്ല. AllowedIPs-ലേക്ക് ഒരു സബ്നെറ്റ് ചേർത്ത് കെർണൽ അത് റൂട്ട് ചെയ്യുമെന്ന് പ്രതീക്ഷിക്കുന്നത് ക്ലാസിക് തെറ്റായ വായനയാണ്; റൂട്ട് ഉയർത്തുമ്പോൾ wg-quick ഓ നിങ്ങൾ തന്നെയോ ചേർക്കണം.
എന്തെങ്കിലും എഡിറ്റ് ചെയ്യുന്നതിന് മുമ്പ് ഇന്റർഫേസ് ആരുടേതെന്ന് പരിശോധിക്കുക
കോൺഫിഗറേഷൻ സിസ്റ്റം നിയന്ത്രിക്കുന്ന ഡെസ്ക്ടോപ്പിലോ സെർവറിലോ ഫയൽ ഇൻപുട്ടിന് പകരം ഔട്ട്പുട്ട് ആകാം. NetworkManager കണക്ഷൻ, റൗട്ടർ സൃഷ്ടിച്ച പ്രൊഫൈൽ അല്ലെങ്കിൽ കണ്ടെയ്നർ സ്റ്റാർട്ടപ്പ് സ്ക്രിപ്റ്റ് എല്ലാം ഒരേ ഇന്റർഫേസ് പേരിന്റെ ഉടമകളാകാം, ആ സാഹചര്യത്തിൽ കുറ്റമറ്റ wg-quick ക്രമവും തെറ്റായ വസ്തുവിനെയാണ് എഡിറ്റ് ചെയ്യുന്നത്.
systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5
മൂന്നാമത്തെ കമാൻഡ് ജീവനുള്ള കോൺഫിഗറേഷൻ ഫയലിന്റെ അതേ ഫോർമാറ്റിൽ, സ്വകാര്യ കീ ഉൾപ്പെടെ പ്രിന്റ് ചെയ്യുന്നു, ഇത് താരതമ്യത്തിന് ഉപകാരപ്രദവും ടിക്കറ്റിൽ അപകടകരവുമാണ്. ഒട്ടിക്കുന്നതിന് മുമ്പ് അത് മറയ്ക്കുക; പിന്തുണാ ത്രെഡിലെ സ്വകാര്യ കീ ശാശ്വതമായ വിട്ടുവീഴ്ചയാണ്, ടൈപ്പോ അല്ല.
സേവന യൂണിറ്റ് നിഷ്ക്രിയമാണെങ്കിലും ഇന്റർഫേസ് നിലവിലുണ്ടെങ്കിൽ, മറ്റെന്തോ അത് സൃഷ്ടിച്ചു, ഫയൽ അധികാരമുള്ളതല്ല. ആ ഒരു നിരീക്ഷണം ഒന്നും വായിക്കാത്ത ഫയൽ എഡിറ്റ് ചെയ്യുന്നതിൽ നിന്ന് ഒരു മണിക്കൂർ ലാഭിക്കുന്നു.
അടുത്ത പുനരാരംഭം പരിശോധിക്കുക, തുടർന്ന് റോൾബാക്ക് സൂക്ഷിക്കുക
തിരുത്തൽ യഥാർത്ഥത്തിൽ തെളിയിക്കുന്ന പരീക്ഷണം രണ്ടാമത്തെ പുനരാരംഭമാണ്, കാരണം ആദ്യം പരാജയപ്പെട്ടത് ആ ക്രമമാണ്. peer അതിൽ നിന്ന് അതിജീവിക്കുന്നുവെന്നും ജീവനുള്ള കോൺഫിഗറേഷൻ ഇപ്പോഴും ഡിസ്കിലുള്ളതുമായി പൊരുത്തപ്പെടുന്നുവെന്നും ഉറപ്പാക്കുക:
sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf
പുനരാരംഭം രണ്ട് തവണ പ്രവർത്തിപ്പിക്കുക. ഒരു തവണ വൃത്തിയായി കടന്നുപോകുന്നത് ഭാഗ്യമാകാം: ആദ്യ പുനരാരംഭം ഇതുവരെ സേവ് ചെയ്യാത്ത ഒരു റൺടൈം മാറ്റം ഉപയോഗിച്ചേക്കാം, അതിനാൽ രണ്ടാമത്തേതാണ് ആദ്യത്തിന്റെ അവസാനത്തിൽ ഫയലും റൺടൈമും യോജിച്ചിരുന്നുവെന്ന് നിങ്ങളോട് പറയുന്നത്.
പ്രക്രിയയുടെ തുടക്കം മുതൽ ഇരട്ടി പുനരാരംഭം പൂർത്തിയാകുന്നതുവരെ ബാക്കപ്പ് സൂക്ഷിക്കുക, തുടർന്ന് അത് ഇല്ലാതാക്കുകയോ കോൺഫിഗറേഷൻ ഡയറക്ടറിയിൽ നിന്ന് പുറത്തേക്ക് മാറ്റുകയോ ചെയ്യുക. യഥാർത്ഥ ഫയലിന് അടുത്ത് അവശേഷിക്കുന്ന wg0.conf.bak wg-quick-ന് ഹാനികരമല്ല, അടുത്ത വ്യക്തിക്ക് ആശയക്കുഴപ്പമുണ്ടാക്കും, അവർ ഒടുവിൽ തെറ്റായത് എഡിറ്റ് ചെയ്യും.