Adaugi un peer în /etc/wireguard/wg0.conf, rulezi systemctl restart wg-quick@wg0, iar peer-ul dispare din fișier când te uiți din nou. Nimic nu a corupt nimic. O repornire este o oprire urmată de o pornire, iar pasul de oprire poate scrie starea de execuție curentă peste fișierul pe care tocmai l-ai editat. Setarea responsabilă se află în același fișier pe care îl editai, și exact asta face bucla atât de confuză prima dată când o întâlnești.

Două stări, un fișier și o salvare la oprire

Starea de execuție a WireGuard și un fișier de configurare wg-quick sunt legate, dar distincte. Fișierul este intrare: wg-quick îl citește, creează interfața, setează adrese și rute și configurează peer-ii. Dispozitivul kernel este obiectul viu, iar modificările de nivel jos făcute cu wg nu se scriu niciodată înapoi.

Cu excepția unei direcții. Când SaveConfig = true apare în secțiunea interfeței, wg-quick salvează configurația vie în fișier ca parte din coborârea interfeței. Manualul wg-quick avertizează exact despre asta: modificările făcute în fișier cât timp interfața este activă pot fi suprascrise când aceasta este eliminată. Este o salvare la oprire, nu un temporizator de fundal, așa că se declanșează doar când ceva oprește interfața.

ActionWhat it writesWhen it surprises you
wg set on a live interfaceKernel state onlyAfter reboot, when the file was never updated
wg-quick down with SaveConfigLive state into the fileRight after you edited the file
wg syncconfKernel state onlyNever; it does not touch the file
wg-quick upKernel state from the fileIf the file is stale, you get the old tunnel

Citește tabelul ca un avertisment despre ordine. Fiecare pierdere accidentală din acest domeniu provine dintr-o editare care a avut loc înainte de o salvare, nu după.

Oprește mai întâi, editează al doilea, pornește la final

Dacă fișierul este sursa ta de adevăr, fă fișierul autoritar prin construcție, nu prin speranță. Coboară interfața, confirmă că a dispărut, apoi editează, apoi ridic-o din nou. Regula este simplă: nicio editare nu există cât timp o salvare mai poate rula.

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

Linia de backup nu este ceremonie. Dacă tunelul este modul în care ajungi la această mașină, pasul de coborâre îți poate încheia sesiunea, iar o copie pe disc plus o consolă sau o cale în afara benzii este singura revenire care funcționează. Verifică acea a doua linie înainte să te bazezi pe ea: un nume de interfață învechit într-un script care eșuează silențios este felul în care oamenii editează un fișier care este încă viu.

Setarea SaveConfig = false înainte de o coborâre normală este cealaltă rută acceptată și trebuie făcută în fișierul pe care wg-quick îl citește de fapt. Asta împiedică acea singură salvare automată. Nu face un profil separat NetworkManager, un export de router sau un entrypoint de container să-ți reîncarce editările, pentru că acei manageri nu citesc deloc acest fișier.

Aplică modificările de peer fără a rupe interfața

Nu orice editare necesită o întrerupere. Modificările la nivel de peer pot fi aplicate unei interfețe în execuție convertind fișierul într-o configurație și sincronizând-o, ceea ce evită complet pasul de coborâre și, prin urmare, evită salvarea:

sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes

Pasul strip contează. El tipărește fișierul cu cheile exclusiv wg-quick eliminate, astfel încât adresele, DNS-ul și directivele de rutare să nu ajungă într-un instrument care nu le înțelege. Sincronizarea aplică apoi peer-ii și cheile pe dispozitivul viu fără a recrea interfața, așa că sesiunile și rutele existente supraviețuiesc.

Fii precis despre limite. Sincronizarea peer-ilor nu schimbă adresa interfeței, rutele adăugate de wg-quick sau configurația resolverului, pentru că niciuna dintre acestea nu aparține dispozitivului WireGuard. Adăugarea unei subrețele la AllowedIPs și așteptarea ca kernelul să o ruteze este citirea greșită clasică; ruta trebuie adăugată de wg-quick la ridicare sau de tine.

Verifică cine deține interfața înainte de a edita ceva

Pe un desktop sau un server administrat de un sistem de configurare, fișierul poate fi o ieșire în loc de o intrare. O conexiune NetworkManager, un profil generat de router sau un script de pornire de container pot deține toate același nume de interfață, iar în acest caz o secvență wg-quick impecabilă editează totuși artefactul greșit.

systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5

A treia comandă tipărește configurația vie în același format ca fișierul, inclusiv cheia privată, ceea ce este util pentru comparație și periculos într-un tichet. Redacteaz-o înainte de a o lipi; o cheie privată într-un fir de suport este un compromis permanent, nu o greșeală de tipar.

Dacă unitatea de serviciu este inactivă, dar interfața există, altceva a creat-o și fișierul nu este autoritar. Acea singură observație economisește o oră de editare a unui fișier pe care nimic nu îl citește.

Verifică următoarea repornire, apoi păstrează o revenire

Testul care demonstrează cu adevărat corectarea este o a doua repornire, pentru că aceea este secvența care a eșuat prima dată. Confirmă că peer-ul supraviețuiește și că configurația vie încă corespunde cu ce este pe disc:

sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf

Rulează repornirea de două ori. O singură trecere curată poate fi noroc: prima repornire poate consuma o modificare de execuție care nu fusese încă salvată, așa că a doua este cea care îți spune că fișierul și execuția au fost de acord la finalul primei.

Păstrează backupul de la începutul procesului până ai făcut repornirea dublă, apoi șterge-l sau mută-l în afara directorului de configurare. Un wg0.conf.bak rătăcit lângă fișierul real este inofensiv pentru wg-quick și confuz pentru următoarea persoană, care va edita în cele din urmă fișierul greșit.

Articole similare