Configuración del servidor WireGuard en Linux (wg0, NAT, pares)
12 min de lectura - 22 de junio de 2026

Configuración práctica de un servidor WireGuard para Linux: claves, wg0.conf, NAT, gestión de pares con syncconf y los comandos de resolución de problemas que utilizan realmente los administradores de sistemas.
Ejecuta un servidor WireGuard cuando desees acceder de forma privada a la infraestructura alojada sin exponer los puertos de administración a la red pública de Internet. Utiliza autenticación de clave pública, se ejecuta dentro del núcleo de Linux desde la versión 5.6 y, una vez en marcha, pasa desapercibido. Esta entrada explica cuándo utilizar un servidor WireGuard, cómo ponerlo en marcha wg0y cómo mantener los pares en funcionamiento día a día.
Cuándo utilizar un servidor WireGuard
Hay tres patrones que abarcan la mayoría de las configuraciones: acceso remoto, enlaces de servidor a servidor y enrutamiento de sitio a sitio.
Para el acceso remoto, ejecuta el servidor en un VPS o en un servidor dedicado y redirige el tráfico de administración a través del túnel. Configura AllowedIPs en cada nodo la subred privada de gestión (algo así como 10.0.0.0/24) para que solo el tráfico destinado a los sistemas internos utilice el túnel. Todo lo demás permanece en la conexión local del usuario. Si los usuarios se conectan desde casa o desde redes móviles, añade PersistentKeepalive = 25 en el lado del cliente para evitar que se interrumpan las sesiones NAT.
Para enlaces de servidor a servidor, mantenga AllowedIPs estrechos. Normalmente basta con una sola /32 o una pequeña subred de backend. Esto evita que se introduzca tráfico no relacionado en el túnel y mantiene el enrutamiento predecible.
Las conexiones de sitio a sitio son diferentes. El host de WireGuard actúa como puerta de enlace entre subredes, por lo que hay que habilitar el reenvío de IP y las reglas NAT deben enviar el tráfico de retorno a través de la interfaz correcta.
| Patrón | AllowedIPs alcance | Mejor opción | Complejidad de la configuración |
|---|---|---|---|
| Acceso remoto | Subredes privadas, p. ej. 10.0.0.0/24 | Acceso de administradores y desarrolladores | Baja |
| De servidor a servidor | IP específicas o subred de backend | Enlaces de host punto a punto | Bajo a medio |
| De sitio a sitio | Toda la LAN remota, p. ej. /24 | Enrutamiento de puerta de enlace a puerta de enlace | De medio a alto |
| Acceso a servicios privados | Solo subred interna (túnel dividido) | Aislamiento de los servicios de backend | Medio |
Configuración del servidor
El servidor almacena la clave privada, escucha en UDP 51820 por defecto y termina el túnel. La misma configuración básica funciona para los tres patrones anteriores.
Claves y wg0.conf
Genera el par de claves del servidor:
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.keyProtege la clave privada:
sudo chmod 600 /etc/wireguard/server_private.keyLa clave privada permanece en el servidor. La clave pública es la que se facilita a los pares.
Crear /etc/wireguard/wg0.conf:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <PUBLIC_IFACE> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <PUBLIC_IFACE> -j MASQUERADE
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32Busca la interfaz de salida en la que insertar <PUBLIC_IFACE> con:
ip -o -4 route show to default | awk '{print $5}'Reenvío, cortafuegos y NAT
Abre el puerto de escucha:
sudo ufw allow 51820/udpHabilita el reenvío de IP añadiendo esta línea a /etc/sysctl.conf:
net.ipv4.ip_forward = 1Aplicar sin reiniciar:
sudo sysctl -pEl PostUp y PostDown líneas de wg0.conf añaden y eliminan la regla de enmascaramiento NAT cuando la interfaz se activa o se desactiva. Sin ellas, el tráfico de retorno procedente de la LAN nunca llega al nodo homólogo.
Al activar el túnel
wg-quick se encarga de la interfaz, el enrutamiento y los PostUp/PostDown ganchos en un solo comando:
sudo wg-quick up wg0Para el inicio automático tras un reinicio, habilita la unidad de systemd:
sudo systemctl enable --now wg-quick@wg0Comprueba el estado con:
sudo wg showUna latest handshake confirma que el túnel funciona. Si parece obsoleta o vacía, comprueba el cortafuegos, las claves de ambos lados y el AllowedIPs.
Añadir y eliminar pares
Cada par necesita su propio par de claves. Génalo en el cliente y, a continuación, añade la clave pública del par a wg0.conf en un nuevo [Peer] bloque con una AllowedIPs entrada que le asigne su IP de túnel.
Utiliza /32 para un único dispositivo:
AllowedIPs = 10.8.0.3/32Esto evita que un nodo reclame direcciones asignadas a otro. Para el acceso con túnel dividido, enumera únicamente las subredes privadas que deben pasar por el túnel, por ejemplo AllowedIPs = 10.8.0.0/24.
Aplica los cambios de configuración sin interrumpir las sesiones activas:
sudo wg syncconf wg0 <(wg-quick strip wg0)La eliminación de un par funciona de la misma manera. Elimina su [Peer] bloque de wg0.conf y ejecuta syncconf de nuevo.
Solución de problemas
Si un par se conecta pero no puede acceder a nada del otro lado, la causa suele ser una de estas cuatro:
- El reenvío de IP está desactivado
- Falta la regla de enmascaramiento NAT
- La interfaz de salida en la regla NAT es incorrecta
AllowedIPsno incluye el destino
Comprueba el reenvío:
cat /proc/sys/net/ipv4/ip_forwardDebería devolver 1. Si devuelve 0, el cambio en sysctl no se ha aplicado o no se ha guardado.
Comprueba la regla NAT y la interfaz de salida:
sudo iptables -t nat -L POSTROUTING
ip route get 1.1.1.1El segundo comando muestra el nombre real de la interfaz de salida, como ens3, enp1s0, o eth0. Este debe coincidir con la interfaz de la regla MASQUERADE.
Si falta el propio handshake, comprueba que el puerto UDP 51820 esté abierto en el cortafuegos y en cualquier proveedor de nivel superior, y que ambas partes dispongan de la clave pública correcta de la otra.
Para los pares situados detrás de un NAT residencial o móvil que cierre las sesiones UDP inactivas, configura PersistentKeepalive = 25 en el cliente.
Rotación de claves y claves precompartidas
Para los túneles que permanecen activos durante meses, rota las claves una vez al año aproximadamente. Genera un nuevo par de claves, actualiza ambos extremos y aplícalo con wg syncconf. No reutilices una clave privada entre dos pares. Esto genera conflictos de enrutamiento e interrumpe la transmisión entre ellos.
Para añadir una capa adicional a la autenticación de clave pública, añade una clave precompartida por cada nodo:
wg genpskAñade el resultado como PresharedKey = <PSK> en el [Peer] bloque en ambos lados. WireGuard integra la PSK en el protocolo de establecimiento de conexión, por lo que un atacante que, de alguna manera, consiga comprometer una de las claves asimétricas seguirá sin poder descifrar el tráfico sin ella.
Comandos útiles para el día a día:
| Comando | Finalidad |
|---|---|
wg show | Pares, protocolos de establecimiento de conexión, contadores de tráfico |
wg show wg0 transfer | Contadores de bytes para wg0 |
wg show all dump | Salida procesable por máquina para scripts de monitorización |
wg syncconf wg0 <(wg-quick strip wg0) | Aplicar cambios de configuración sin interrumpir las sesiones |
wg genpsk | Generar una clave precompartida |
Si necesitas un servidor estable y accesible públicamente para terminar los túneles de WireGuard y enrutar el tráfico privado hacia tu infraestructura, echa un vistazo a los planes de VPS sin límites de FDC.

Fatiga visual digital: cómo proteger tu vista en un mundo en el que se pasa mucho tiempo frente a la pantalla
¿Pasas todo el día mirando pantallas? Descubre cómo reducir la fatiga visual digital con técnicas y herramientas de eficacia probada. Esta guía es imprescindible para teletrabajadores, desarrolladores y cualquier persona del sector tecnológico.
4 min de lectura - 21 de mayo de 2025
Por qué es importante disponer de un VPS potente y sin límites de tráfico
8 min de lectura - 9 de mayo de 2025