Engades un peer a /etc/wireguard/wg0.conf, executas systemctl restart wg-quick@wg0, e o peer desaparece do ficheiro cando volves mirar. Nada corrompeu nada. Un reinicio é unha parada seguida dun arranque, e o paso de parada pode escribir o estado de execución actual por riba do ficheiro que acabas de editar. O axuste responsable vive no mesmo ficheiro que estabas a editar, e iso é o que fai que o bucle sexa tan confuso a primeira vez que te atopas con el.

Dous estados, un ficheiro e un gardado ao apagar

O estado de execución de WireGuard e un ficheiro de configuración de wg-quick están relacionados pero son distintos. O ficheiro é entrada: wg-quick léelle, crea a interface, establece enderezos e rutas e configura os peers. O dispositivo do núcleo é o obxecto vivo, e os cambios de baixo nivel feitos con wg nunca se escriben de volta.

Excepto nunha dirección. Cando SaveConfig = true aparece na sección da interface, wg-quick garda a configuración viva no ficheiro como parte de baixar a interface. O manual de wg-quick advirte exactamente disto: os cambios feitos no ficheiro mentres a interface está activa poden sobrescribirse cando se elimina. É un gardado ao apagar, non un temporizador en segundo plano, así que só se dispara cando algo detén a interface.

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

Le a táboa como unha advertencia sobre a orde. Cada perda accidental nesta área vén dunha edición que ocorreu antes dun gardado en lugar de despois.

Primeiro detén, despois edita, por último arranca

Se o ficheiro é a túa fonte de verdade, fai que o ficheiro sexa autoritativo por construción en lugar de por esperanza. Baixa a interface, confirma que desapareceu, logo edita e logo vólvea subir. A regra é simple: non existe ningunha edición mentres un gardado aínda poida executarse.

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

A liña de copia de seguridade non é cerimonia. Se o túnel é a túa forma de chegar a esta máquina, o paso de baixada pode rematar a túa sesión, e unha copia no disco máis unha consola ou unha ruta fóra de banda é a única reversión que funciona. Comproba esa segunda liña antes de confiar nela: un nome de interface obsoleto nun script que falla en silencio é como a xente edita un ficheiro que segue vivo.

Pór SaveConfig = false antes dunha baixada normal é a outra ruta aceptada, e hai que facelo no ficheiro que wg-quick le de verdade. Evita ese único gardado automático. Non fai que un perfil de NetworkManager aparte, unha exportación de router ou un punto de entrada de contedor recarguen as túas edicións, porque eses xestores nunca len este ficheiro.

Aplica cambios de peers sen desgarrar a interface

Non toda edición precisa unha caída. Os cambios a nivel de peer poden aplicarse a unha interface en execución convertendo o ficheiro nunha configuración e sincronizándoa, o que evita por completo o paso de baixada e, por tanto, evita o gardado:

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

O paso strip importa. Imprime o ficheiro coas claves exclusivas de wg-quick eliminadas, de xeito que os enderezos, o DNS e as directivas de encamiñamento non chegan a unha ferramenta que non as entende. A sincronización aplica despois os peers e as claves ao dispositivo vivo sen recrear a interface, así que as sesións e rutas existentes sobreviven.

Sé preciso sobre os límites. Sincronizar peers non cambia o enderezo da interface, as rutas que engadiu wg-quick nin a configuración do resolutor, porque nada diso pertence ao dispositivo WireGuard. Engadir unha subrede a AllowedIPs e esperar que o núcleo a encamiñe é a mala lectura clásica; a ruta ten que engadila wg-quick ao subir ou ti mesmo.

Comproba quen é dono da interface antes de editar nada

Nun escritorio ou nun servidor xestionado por un sistema de configuración, o ficheiro pode ser unha saída en lugar dunha entrada. Unha conexión de NetworkManager, un perfil xerado por un router ou un script de arranque de contedor poden posuír todos o mesmo nome de interface, e nese caso unha secuencia de wg-quick impecable segue editando o artefacto equivocado.

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

O terceiro comando imprime a configuración viva no mesmo formato que o ficheiro, incluída a clave privada, o que é útil para comparar e perigoso nun ticket. Redáctaa antes de pegala; unha clave privada nun fío de soporte é un compromiso permanente, non unha errata.

Se a unidade de servizo está inactiva pero a interface existe, algo máis a creou e o ficheiro non é autoritativo. Esa única observación aforra unha hora editando un ficheiro que nada le.

Verifica o seguinte reinicio e despois mantén unha reversión

A proba que realmente demostra a corrección é un segundo reinicio, porque esa é a secuencia que fallou a primeira vez. Confirma que o peer sobrevive e que a configuración viva segue coincidindo co que hai no disco:

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

Executa o reinicio dúas veces. Unha soa pasada limpa pode ser sorte: o primeiro reinicio pode consumir un cambio de execución que aínda non se gardara, así que o segundo é o que che di que o ficheiro e a execución coincidiron ao final do primeiro.

Mantén a copia de seguridade desde o inicio do proceso ata que fixeses o dobre reinicio, logo bórraa ou móvea fóra do directorio de configuración. Un wg0.conf.bak perdido xunto ao ficheiro real é inofensivo para wg-quick e confuso para a seguinte persoa, que acabará editando o equivocado.

Artigos relacionados