La configuración es correcta, las claves coinciden y wg-quick up wg0 se detiene con:
/usr/bin/wg-quick: line 32: resolvconf: command not found
El mensaje nombra el problema real con exactitud, y casi nadie lo lee así. No está diciendo que tu ajuste DNS sea incorrecto. Está diciendo que un programa llamado resolvconf debía aplicarlo y no existe en esta máquina.
Qué hace realmente wg-quick con una línea DNS
wg-quick es un script de shell que envuelve el comando wg. Cuando tu configuración contiene:
[Interface]
DNS = 10.10.0.1
no escribe /etc/resolv.conf por sí mismo. Ejecuta el binario externo resolvconf y deja que ese programa arbitre, porque en un sistema Linux varias cosas pueden querer controlar el resolver a la vez, y sobrescribir el archivo directamente es la forma en que se pelean.
En una distribución de escritorio ese programa está presente. En una imagen de servidor mínima, una instancia cloud o un contenedor, normalmente no, y el script falla exactamente en esa línea.

Solución 1: instalar una implementación de resolvconf
La respuesta directa, cuando nada más gestiona tu resolver:
apt install openresolv # Debian, Ubuntu
pacman -S openresolv # Arch
Después, wg-quick up wg0 funciona sin cambios.
⛔ No lo hagas si systemd-resolved está en ejecución. Tendrías entonces dos programas reclamando la autoridad sobre un mismo archivo, y el síntoma es peor que el error de partida: un DNS que funciona hasta que algo se reinicia y luego deja de funcionar. Compruébalo primero:
systemctl is-active systemd-resolved
Solución 2: usar systemd-resolved, que quizá ya tienes
Si ese comando responde active, la máquina ya tiene un gestor de resolver y wg-quick puede hablar con él mediante una capa de compatibilidad. En Debian y Ubuntu:
apt install systemd-resolvconf
Esto proporciona un comando resolvconf que reenvía a systemd-resolved en lugar de una segunda implementación independiente. Confirma después que el archivo se gestiona como esperas:
ls -l /etc/resolv.conf
Un enlace simbólico hacia /run/systemd/resolve/ significa que systemd-resolved es su dueño. Un archivo normal significa que lo gestiona otra cosa, y conviene aclararlo antes de añadir un túnel a la ecuación.
Solución 3: configurar el DNS tú mismo con PostUp
Si prefieres no instalar nada, sustituye la línea DNS por comandos que hagan el trabajo directamente:
[Interface]
PostUp = printf 'nameserver 10.10.0.1\n' > /etc/resolv.conf
PostDown = printf 'nameserver 1.1.1.1\n' > /etc/resolv.conf
Es tosco y funciona, y hay que dejar claros sus dos límites. Sobrescribe lo que hubiera en el archivo, así que cualquier otra cosa que gestione el resolver no estará de acuerdo contigo. Y la línea PostDown tiene que restaurar algo razonable, porque un túnel que cae dejando un resolv.conf vacío se lleva el DNS con él.
Para un contenedor o un VPS de propósito único donde nada más toca el resolver, es una opción perfectamente razonable.
Solución 4: decidir que no lo necesitas
Borra la línea DNS y el túnel se levanta de inmediato.
Es la respuesta correcta exactamente en un caso: cuando el túnel existe para llegar a una red, no para ocultar tus resoluciones. Un enlace site-to-site entre dos servidores no tiene ningún motivo para cambiar el resolver de ninguna de las dos máquinas.
⛔ Es la respuesta equivocada cuando el túnel es para privacidad. Sin DNS por el túnel, cada nombre que resuelves sigue yendo a tu resolver anterior en claro, y que el tráfico vaya cifrado después no lo deshace. La mecánica de esa fuga está en prevención de fugas DNS.
¿Te aparece este error en un portátil Linux con un .conf descargado de una VPN comercial? No tienes por qué pelearte con wg-quick. La app oficial de Proton VPN para Linux (Debian, Ubuntu, Fedora, Arch) gestiona el túnel a través de NetworkManager en lugar de wg-quick, así que no interviene ningún resolvconf, y envía el DNS a sus propios resolvers, con kill switch en todos los planes, incluido el gratuito (enlace de afiliado). Quédate con las soluciones anteriores cuando el servidor es tuyo: la app solo sustituye el lado cliente de un servicio comercial.
Cómo elegir entre ellas
systemd-resolved ya activo -> systemd-resolvconf (solución 2) nada gestiona el resolver -> openresolv (solución 1) contenedor, VPS de uso único -> PostUp (solución 3) túnel entre dos servidores -> quitar la línea DNS (solución 4)
Si solo quieres que tus dominios internos se resuelvan por el túnel y el resto se quede como está, es otra configuración distinta: split DNS en WireGuard.
Y si el túnel ya se levanta pero no carga nada, el problema no era el DNS: consulta MTU para páginas que se quedan colgadas, y solución de problemas de handshake si wg show no muestra ningún handshake.
★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · puerto de 200 Mbit/s
Aloja tu VPN en tu propio VPS → ContaboAcceso root completo · IPv4 pública · elige tu región→


