Casi todos los problemas de configuración de WireGuard que sobreviven a un handshake correcto se reducen a un solo campo, y al hecho de que casi nadie lo lee bien. AllowedIPs parece una directiva de enrutamiento. Lo es, y al mismo tiempo es otra cosa.
Lo que dice realmente el manual
El manual de wg lo define en una frase que conviene leer despacio:
a comma-separated list of IP (v4 or v6) addresses with CIDR masks from which incoming traffic for this peer is allowed and to which outgoing traffic for this peer is directed
Dos oraciones, dos trabajos distintos. Saliente: los paquetes cuyo destino cae en esa lista se envían a ese par. Es la mitad de enrutamiento, la que todo el mundo conoce. Entrante: los paquetes que llegan de ese par solo se aceptan si su dirección origen cae en la misma lista. Es una lista de control de acceso, y es la mitad que se ignora.
Esto es lo que WireGuard llama cryptokey routing: la asociación entre una clave pública y un conjunto de direcciones constituye todo el modelo de autorización. No hay ninguna regla de cortafuegos aparte que decida qué par puede reclamar qué dirección.
La consecuencia que nadie prevé
Pon AllowedIPs = 0.0.0.0/0 en un par y no solo has enrutado todo tu tráfico hacia él. También has declarado que ese par puede enviarte un paquete que diga venir de cualquier dirección origen de internet, y tu interfaz lo aceptará.
En un cliente cuyo único par es tu propio servidor, eso es justo lo que quieres y es la configuración normal de túnel completo. En un servidor con varios pares, o en cualquier máquina donde un par no sea de plena confianza, es un agujero abierto sin darte cuenta.

Por qué dos pares nunca pueden compartir un rango
Como la lista decide a qué par se envía un destino, una misma dirección no puede pertenecer a dos pares a la vez: la correspondencia tiene que ser inequívoca. En la práctica, por eso en el lado servidor cada cliente recibe su propio /32 (o /128 en IPv6) en lugar de toda la subred.
La asimetría sorprende. En el cliente, AllowedIPs describe lo que quieres alcanzar por el túnel, a menudo todo. En el servidor, describe quién puede ser ese par concreto, normalmente una sola dirección. El mismo campo, leído desde dos extremos, significa dos cosas distintas.
El problema de excluir la red local, y por qué la resta no existe
La pregunta real más frecuente es "cómo enruto todo menos mi red local". No existe sintaxis de resta. 0.0.0.0/0 menos 192.168.1.0/24 no se puede expresar, porque el campo es una lista de rangos y nada más.
La respuesta es enumerar el complemento: en vez de un comodín, listas los bloques CIDR que juntos cubren todo el espacio de direcciones salvo el rango que quieres mantener local. Es ingrato, produce una línea larga, y es la única forma correcta. Los comodines están documentados sin ambigüedad: 0.0.0.0/0 corresponde a todas las direcciones IPv4 y ::/0 a todas las IPv6.
El síntoma que lleva hasta aquí
Un handshake que se completa, y después nada. wg show muestra un handshake reciente, los pares claramente se encontraron, y no pasa tráfico. Cuando el handshake funciona, las claves y el extremo son correctos por definición: el problema está aguas abajo, y AllowedIPs es el primer sitio donde mirar. O el destino no está en la lista del lado emisor, o el origen no se acepta en el lado receptor.
Si es el handshake el que nunca se completa, el diagnóstico es otro y nuestra guía de solución de problemas del handshake lo cubre. Y si los paquetes circulan pero las páginas se quedan a medias, probablemente estés ante un problema de MTU y no ante este campo.
No confundir con PersistentKeepalive
Se mezclan porque ambos aparecen en la sección del par y ambos parecen tratar de "mantener la conexión". No tienen relación. El manual describe PersistentKeepalive como un intervalo, entre 1 y 65535 segundos, que regula cada cuánto se envía un paquete vacío autenticado al par, para mantener válida una entrada de cortafuegos con estado o de NAT. Está desactivado por defecto, y el manual añade que la mayoría de usuarios no lo necesitará.
AllowedIPs decide qué está permitido. PersistentKeepalive decide con qué frecuencia llamas a la puerta para que una caja NAT no olvide que existes.
Hacerlo bien a la primera
Configura las entradas de par del servidor con una dirección por cliente y nada más. Configura el cliente con los rangos que realmente quieres alcanzar: los comodines para un túnel completo, las subredes concretas para un túnel dividido. Lee cada línea AllowedIPs dos veces: una como ruta, otra como lista de invitados. Nuestras plantillas de configuración listas para usar aplican esa separación.
El campo es pequeño, acepta casi todo lo que escribas y falla en silencio cuando está mal. Esa combinación es la razón por la que merece más atención de la que suele recibir.
★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · 200+ Mbps garantizados
Aloja tu VPN en tu propio VPS → ContaboAcceso root completo · IPv4 pública · elige tu región→


