Añades un peer a /etc/wireguard/wg0.conf, ejecutas systemctl restart wg-quick@wg0 y el peer desaparece del archivo cuando vuelves a mirar. Nada corrompió nada. Un reinicio es una parada seguida de un arranque, y el paso de parada puede escribir el estado de ejecución actual encima del archivo que acabas de editar. El ajuste responsable vive en el mismo archivo que estabas editando, y eso es lo que hace que el bucle sea tan confuso la primera vez que te topas con él.

Dos estados, un archivo y un guardado al apagar

El estado de ejecución de WireGuard y un archivo de configuración de wg-quick están relacionados pero son distintos. El archivo es entrada: wg-quick lo lee, crea la interfaz, establece direcciones y rutas y configura los peers. El dispositivo del kernel es el objeto vivo, y los cambios de bajo nivel hechos con wg nunca se escriben de vuelta.

Excepto en una dirección. Cuando SaveConfig = true aparece en la sección de interfaz, wg-quick guarda la configuración viva en el archivo como parte de bajar la interfaz. El manual de wg-quick advierte exactamente de esto: los cambios hechos en el archivo mientras la interfaz está activa pueden sobrescribirse cuando se elimina. Es un guardado al apagar, no un temporizador en segundo plano, así que solo se dispara cuando algo detiene la interfaz.

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

Lee la tabla como una advertencia sobre el orden. Cada pérdida accidental en esta área viene de una edición que ocurrió antes de un guardado en lugar de después.

Primero detén, después edita, por último arranca

Si el archivo es tu fuente de verdad, haz que el archivo sea autoritativo por construcción en lugar de por esperanza. Baja la interfaz, confirma que ha desaparecido, luego edita y luego vuelve a subirla. La regla es simple: no existe ninguna edición mientras un guardado todavía pueda ejecutarse.

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

La línea de copia de seguridad no es ceremonia. Si el túnel es tu forma de llegar a esta máquina, el paso de bajada puede terminar tu sesión, y una copia en disco más una consola o una ruta fuera de banda es la única reversión que funciona. Comprueba esa segunda línea antes de confiar en ella: un nombre de interfaz obsoleto en un script que falla en silencio es como la gente edita un archivo que sigue vivo.

Poner SaveConfig = false antes de una bajada normal es la otra ruta aceptada, y hay que hacerlo en el archivo que wg-quick lee de verdad. Evita ese único guardado automático. No hace que un perfil de NetworkManager aparte, una exportación de router o un punto de entrada de contenedor recarguen tus ediciones, porque esos gestores nunca leen este archivo.

Aplica cambios de peers sin desgarrar la interfaz

No toda edición necesita una caída. Los cambios a nivel de peer pueden aplicarse a una interfaz en ejecución convirtiendo el archivo en una configuración y sincronizándola, lo que evita por completo el paso de bajada y, por tanto, evita el guardado:

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

El paso strip importa. Imprime el archivo con las claves exclusivas de wg-quick eliminadas, de modo que las direcciones, el DNS y las directivas de enrutamiento no llegan a una herramienta que no las entiende. La sincronización aplica después los peers y las claves al dispositivo vivo sin recrear la interfaz, así que las sesiones y rutas existentes sobreviven.

Sé preciso sobre los límites. Sincronizar peers no cambia la dirección de la interfaz, las rutas que añadió wg-quick ni la configuración del resolutor, porque nada de eso pertenece al dispositivo WireGuard. Añadir una subred a AllowedIPs y esperar que el kernel la enrute es la mala lectura clásica; la ruta tiene que añadirla wg-quick al subir o tú mismo.

Comprueba quién es dueño de la interfaz antes de editar nada

En un escritorio o un servidor gestionado por un sistema de configuración, el archivo puede ser una salida en lugar de una entrada. Una conexión de NetworkManager, un perfil generado por un router o un script de arranque de contenedor pueden poseer todos el mismo nombre de interfaz, y en ese caso una secuencia de wg-quick impecable sigue editando el artefacto equivocado.

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

El tercer comando imprime la configuración viva en el mismo formato que el archivo, incluida la clave privada, lo que es útil para comparar y peligroso en un tique. Redáctala antes de pegarla; una clave privada en un hilo de soporte es un compromiso permanente, no una errata.

Si la unidad de servicio está inactiva pero la interfaz existe, algo más la creó y el archivo no es autoritativo. Esa única observación ahorra una hora editando un archivo que nada lee.

Verifica el siguiente reinicio y luego mantén una reversión

La prueba que realmente demuestra la corrección es un segundo reinicio, porque esa es la secuencia que falló la primera vez. Confirma que el peer sobrevive y que la configuración viva sigue coincidiendo con lo que hay en disco:

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

Ejecuta el reinicio dos veces. Una sola pasada limpia puede ser suerte: el primer reinicio puede consumir un cambio de ejecución que aún no se había guardado, así que el segundo es el que te dice que el archivo y la ejecución coincidieron al final del primero.

Mantén la copia de seguridad desde el inicio del proceso hasta que hayas hecho el doble reinicio, luego bórrala o muévela fuera del directorio de configuración. Un wg0.conf.bak perdido junto al archivo real es inofensivo para wg-quick y confuso para la siguiente persona, que acabará editando el equivocado.

Artículos relacionados