VPNSmith
VPS Contabo
self-host-vpnINFO

Dos dispositivos, una clave WireGuard: qué se rompe de verdad y por qué parece aleatorio

Copiar una misma config de cliente en un móvil y un portátil funciona hasta que los dos están conectados. Entonces el tráfico va al que hizo el último handshake, el servidor no puede distinguirlos y no puedes revocar uno sin cortar el otro. Qué hace el protocolo y la solución en tres comandos.

Por Eric Gerard · Fundador · VPNSmith - Especialista en VPN self-host y VPS GDPR4 min de lecturaPhoto via Pexels

Configuras WireGuard en un portátil, funciona, y copiar esa misma config a un móvil lleva diez segundos. Los dos se conectan. Durante un tiempo nada parece ir mal.

Luego los dos están conectados a la vez, y uno de ellos deja de recibir tráfico. Sin error, sin regularidad, y normalmente mientras intentas hacer otra cosa.

La solución es un par de claves por dispositivo. Nuestro generador de configuración WireGuard gratuito crea un par de claves, una dirección y una config independientes para cada peer en tu navegador, y si todavía tienes que alquilar el servidor, un Contabo Cloud VPS 4 a 5,50 €/mes (enlace de afiliado) viene con su propia IPv4 pública. Si prefieres un proveedor estadounidense con garantía de devolución de 30 días, Ultahost VPS Basic cuesta 5,52 $ al mes con un compromiso de 24 meses (1 GB de RAM, IPv4 dedicada, consultado el 21 de octubre de 2026), suficiente para un servidor WireGuard de unos pocos dispositivos. El generador es gratuito hasta 10 dispositivos; a partir de ahí, WireGuard Pro (nuestro propio producto, 9 EUR en un único pago, sin suscripción) sube el límite a 250 y añade un ZIP con cada .conf de cliente y su código QR en PNG, práctico para configurar toda una oficina o una familia de una sola vez.

Lo que ve el servidor

WireGuard identifica a un peer por su clave pública. No por IP, no por dispositivo, no por nombre. Dos dispositivos con la misma clave privada son, para el servidor, un único peer que no para de moverse.

Cada handshake actualiza el endpoint registrado para ese peer, la dirección y el puerto a los que el servidor envía las respuestas. El móvil hace handshake, las respuestas van al móvil. El portátil hace handshake, las respuestas van al portátil. El que no hizo el handshake más reciente sigue enviando paquetes que llegan bien, y deja de recibir nada de vuelta.

Ese es todo el mecanismo, y explica el síntoma exactamente: una conectividad que salta entre dos dispositivos a intervalos que nadie controla, porque el intervalo de handshake no es algo que tú programes.

Las tres consecuencias, por orden de lo que te van a costar

No puedes distinguirlos. wg show lista un peer, un tiempo de handshake, un contador de transferencia. El tráfico del móvil y del portátil se suma. Si algún día necesitas saber qué dispositivo hizo algo, esa información no existe.

No puedes revocar uno solo. Quitar la clave del servidor elimina el acceso de todos los dispositivos que la tienen. Un móvil perdido significa cortar también el portátil y volver a emitir claves para los dos.

AllowedIPs se vuelve ambiguo. En el servidor, AllowedIPs es lo que asocia un paquete a un peer. Dos dispositivos detrás de una única entrada de peer comparten una dirección de túnel, así que cualquier cosa enrutada a esa dirección llega al dispositivo que tenga el endpoint en ese momento.

Un cerrajero trabajando en un banco de taller, cortando una llave en una máquina, con cientos de llaves en bruto colgadas en un panel perforado detrás de él
Un cerrajero trabajando en un banco de taller, cortando una llave en una máquina, con cientos de llaves en bruto colgadas en un panel perforado detrás de él

La solución: una clave y una dirección por dispositivo

En el cliente, o en el servidor si generas para otra persona:

wg genkey | tee phone.key | wg pubkey > phone.pub

En el servidor, añade un bloque de peer por dispositivo, cada uno con su propia dirección:

[Peer]
# laptop
PublicKey = <laptop.pub>
AllowedIPs = 10.10.0.2/32

[Peer]
# phone
PublicKey = <phone.pub>
AllowedIPs = 10.10.0.3/32

Añádelo en caliente, sin desconectar a nadie:

wg set wg0 peer <phone.pub> allowed-ips 10.10.0.3/32

⛔ Después escríbelo también en el archivo de configuración. wg set cambia la interfaz en ejecución y nada en disco; un reinicio lo pierde. Esa trampa, y el resto del ciclo de vida de un peer, se tratan en añadir un peer en WireGuard.

Eliminar un dispositivo más adelante es entonces un único comando, y no toca nada más:

wg set wg0 peer <phone.pub> remove

La línea de comentario no es decoración

Nada en el protocolo lleva un nombre de dispositivo, así que una lista de doce claves públicas es ilegible seis meses después. Un comentario # phone encima de cada bloque es la única etiqueta que va a existir nunca, y el día que necesites revocar uno con prisa será el día que la eches de menos.

Dos casos cercanos que no son esto

Una clave precompartida se comparte a propósito. PresharedKey es simétrica y debe ser idéntica en los dos extremos de un mismo par de peers. Eso no es reutilizar una clave entre dispositivos, y es fácil confundir ambas cosas: consulta la guía de la clave precompartida.

Un dispositivo, varios túneles también está bien. Un portátil puede tener claves distintas para servidores distintos sin conflicto, porque la identidad es por túnel y no por máquina.

Si emites configs para dispositivos con regularidad, generar el código QR es la parte rápida, y merece la misma disciplina: el código QR de WireGuard contiene la clave privada completa, así que un código por dispositivo y nunca uno compartido.

★ 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→

Preguntas frecuentes

¿Pueden dos dispositivos usar la misma clave WireGuard?
Pueden conectarse, y eso es lo que confunde. El servidor identifica a un peer por su clave pública, así que dos dispositivos que comparten una clave son, para él, un único peer. Solo el handshake más reciente fija el endpoint, de modo que el tráfico de vuelta va a un único dispositivo cada vez.
¿Qué se rompe exactamente cuando reutilizo una clave?
El tráfico de vuelta sigue al dispositivo que hizo el último handshake, así que el otro parece perder la conectividad al azar. El servidor no puede distinguirlos ni en wg show ni en ningún log. Y revocar el acceso de un dispositivo lo revoca para los dos, porque solo hay una clave que eliminar.
¿Compartir una clave es un problema de seguridad o solo de enrutamiento?
Ambas cosas, y el lado de seguridad dura más que la molestia. Una clave en un móvil que luego se pierde es la misma clave que sigue instalada en el portátil, así que el único remedio es revocarla en todas partes y volver a emitirla. Una clave por dispositivo convierte eso en un cambio de una línea.
¿Cuántos peers puede tener un servidor WireGuard?
En la práctica no hay un límite fijo pequeño; la lista de peers se mantiene en memoria y miles de ellos son viables en hardware corriente. Añadir un peer por dispositivo no cuesta nada, lo que elimina el último argumento para compartir uno.
¿Pueden dos peers compartir la misma dirección AllowedIPs?
No. En el servidor, AllowedIPs es lo que decide a qué peer pertenece un paquete, así que dos peers que reclaman 10.10.0.2/32 crean una ambigüedad que el kernel resuelve usando uno de ellos. Cada dispositivo necesita su propia dirección de túnel.