Cómo configurar una VPN WireGuard de punto a sitio en Debian 12

Escenario ilustrativo: Maya utiliza un VPS con Debian 12 como punto final de VPN personal cuando trabaja desde una cafetería. Su portátil debe conectarse al VPS mediante un túnel WireGuard cifrado y enviar su tráfico de internet IPv4 a través de ese servidor. Este ejemplo no es un informe de una prueba real; las direcciones IP públicas, las claves y la salida de la terminal que se muestran a continuación son marcadores de posición o simulaciones representativas.

Esta configuración es una VPN de punto a sitio: un cliente se conecta a un servidor. Utiliza las herramientas WireGuard incluidas en Debian, un único par, reenvío de IPv4 y NAT de IPv4. Se presupone que el VPS tiene una dirección IPv4 pública o con reenvío de puertos, que se puede administrar con sudo y que el puerto UDP 51820 es accesible. Este tutorial no configura IPv6 enrutado ni una red privada detrás del VPS.

Planifique primero las direcciones y el acceso.

El ejemplo utiliza 10.8.0.0/24VPN, con 10.8.0.1en el servidor y 10.8.0.2en el primer cliente de Maya. Utilice una subred que no se superponga con las redes Wi-Fi, de oficina o en la nube del cliente. Una colisión puede enviar el tráfico por la ruta incorrecta incluso cuando el protocolo de enlace se establece correctamente.

WireGuard utiliza autenticación de clave pública. El servidor necesita la clave pública del cliente, y el cliente necesita la clave pública del servidor; cada clave privada permanece en el dispositivo al que pertenece. La documentación de WireGuard de Debian describe la configuración del paquete y del par, mientras que la guía de inicio rápido de WireGuard documenta la generación de claves y el comportamiento de keepalive. Consulte la documentación de WireGuard de Debian y la guía de inicio rápido de WireGuard .

Configurar el servidor Debian 12

1. Instale las herramientas

Actualiza el índice de paquetes e instala WireGuard y nftables, que proporcionará la regla de enmascaramiento IPv4 de ejemplo. Ejecuta estos comandos en el VPS:

sudo apt update
sudo apt install wireguard nftables

Debian distribuye WireGuard mediante el wireguardmetapackage y sus herramientas. Si el servidor ya utiliza un gestor de cortafuegos como UFW, firewalld o reglas gestionadas por el proveedor, identifique su conjunto de reglas activo antes de añadir nada. No reemplace una configuración de cortafuegos existente con este ejemplo.

Una terminal Debian muestra la actualización de apt y la instalación de los paquetes WireGuard y nftables.
En la terminal se muestra el paso de instalación del paquete; la salida del paquete puede variar según el estado del servidor espejo y del sistema.

2. Localiza la interfaz pública y habilita el reenvío.

Consulta la tabla de enrutamiento para saber qué interfaz utiliza Debian para alcanzar una dirección IPv4 externa:

ip route get 1.1.1.1

En el ejemplo, la ruta utiliza eth0. Su VPS puede mostrar un nombre diferente, como ens3o enp1s0; utilice el nombre de su propia salida en la regla NAT más adelante. Anote también la dirección IPv4 pública o el nombre DNS del servidor. Si el servidor se encuentra detrás de un enrutador, reenvíe el UDP 51820 desde ese enrutador al host Debian.

El reenvío de IPv4 es necesario para un túnel completo. Habilítelo ahora y manténgalo activado tras los reinicios:

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sysctl net.ipv4.ip_forward

El último comando debería informar net.ipv4.ip_forward = 1. Esta configuración permite el reenvío de paquetes; por sí sola no abre el firewall ni proporciona NAT.

Una terminal Debian muestra la ruta a través de eth0 y el reenvío de IPv4 habilitado.
La búsqueda de ruta identifica la interfaz utilizada para el tráfico IPv4 saliente, mientras que sysctl confirma que el reenvío está activado.

3. Cree un par de claves: una clave de servidor y una clave de cliente.

Cree la clave del servidor en el host Debian con permisos de archivo restrictivos:

sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'

Genere el par de claves del cliente en el dispositivo del cliente cuando sea posible. En un cliente Linux con wireguard-toolsinstalado:

umask 077
wg genkey | tee client.key | wg pubkey > client.pub

Para un teléfono, crea un nuevo túnel en la aplicación oficial de WireGuard y deja que genere las claves de perfil. Copia solo la clave pública del cliente al servidor. Mantenla client.keyprivada; nunca la pegues en la configuración del servidor ni la envíes por chat. El manual de Debian Bookwormwg(8) documenta los comandos clave y los campos de la interfaz.

4. Cree la interfaz del servidor y agregue el par.

Cree /etc/wireguard/wg0.confcon la siguiente estructura. Reemplace cada marcador de posición en mayúsculas con la clave real correspondiente. Lea la clave privada del servidor localmente con sudo cat /etc/wireguard/server.key; coloque la clave pública del cliente en la sección peer.

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Proteja el archivo porque contiene una clave privada:

sudo chown root:root /etc/wireguard/wg0.conf
sudo chmod 600 /etc/wireguard/wg0.conf

AllowedIPs = 10.8.0.2/32Asigna a este par una dirección VPN e impide que otro par la reclame. A cada dispositivo adicional se le asigna un par de claves propio y una dirección distinta, como 10.8.0.3/32. No reutilice un perfil de cliente en varios dispositivos si necesita revocación o identidad por separado.

Una terminal Debian muestra la generación de claves de WireGuard y la interfaz wg0 con un cliente par.
La interfaz del servidor muestra un único par con su dirección de túnel dedicada; el material de clave que se muestra es solo a título ilustrativo.

5. Agregue NAT IPv4 y permita el puerto WireGuard.

Para el ejemplo de túnel IPv4 completo, los paquetes salientes 10.8.0.0/24deben salir a través de la interfaz pública con NAT de origen. Agregue una regla equivalente a la configuración nftables existente del servidor o al administrador de firewall. Esta tabla nftables independiente ilustra la regla; reemplácela eth0con la interfaz descubierta en el paso 2:

table ip wg_nat {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    ip saddr 10.8.0.0/24 oifname "eth0" masquerade
  }
}

Si utiliza Debian nftables.service, combine la tabla con la configuración que el servicio carga al arrancar y valide el archivo completo sudo nft -c -f /etc/nftables.confantes de recargarlo. Compruebe si su configuración actual borra o reemplaza las reglas existentes antes de aplicarla. NAT por sí solo no anula una política de reenvío que descarta el tráfico: permita el reenvío desde la interfaz WAN y el tráfico de retorno en su firewall activo. El manualwg0 de Debian documenta la carga de reglas de nftables y las declaraciones NAT.nft(8)

Tanto en el firewall del proveedor de VPS como en el firewall del host, permita el tráfico UDP entrante en el puerto 51820. No abra el puerto TCP 51820 para este túnel WireGuard. Mantenga su regla de acceso SSH mientras modifica la política del firewall y utilice la consola del proveedor u otra vía de recuperación si una recarga del firewall pudiera desconectarlo.

Una vista de configuración de nftables muestra el enmascaramiento de IPv4 para la subred VPN 10.8.0.0/24 a través de eth0.
La regla coincide con el tráfico VPN IPv4 que sale a través de la interfaz WAN seleccionada y aplica el enmascaramiento.

Configurar y conectar el cliente

6. Elaborar el perfil del cliente.

Crea un nuevo túnel en la aplicación cliente de WireGuard o guarda una configuración similar en un cliente Linux. Reemplaza la clave privada, la clave pública del servidor y el punto final con valores reales. La dirección TEST-NET que se muestra a continuación es solo un ejemplo y no conectará con un servidor real.

[Interface]
Address = 10.8.0.2/32
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0Enruta los destinos IPv4 a través del túnel, por lo que es la opción de túnel IPv4 completo. Para un túnel dividido estrecho que solo llegue a la dirección del servidor WireGuard, utilice 10.8.0.0/24en su lugar. Para llegar a una LAN detrás del servidor, incluya la subred real de esa LAN en el cliente AllowedIPs, agregue una ruta de retorno o NAT adecuada y permita el tráfico a través del firewall del servidor; estos pasos dependen del enrutador LAN y están fuera de este ejemplo.

PersistentKeepalive = 25Puede ayudar a que un cliente detrás de NAT permanezca accesible después de períodos de inactividad. Es opcional; la documentación de WireGuard indica que la mayoría de los usuarios no lo necesitan, pero sugiere 25 segundos como un intervalo generalmente útil cuando una asignación NAT debe permanecer abierta. Este DNScampo es compatible con algunos clientes y clientes basados ​​en wg-quick; si su aplicación lo ignora, configure el DNS a través de los controles propios de esa aplicación.

Un editor de configuración del cliente muestra la dirección de WireGuard, el punto final, la ruta IPv4 completa y el campo keepalive.
Un perfil de cliente enruta el tráfico IPv4 a través del servidor; el punto final TEST-NET es un marcador de posición, no una dirección de trabajo.

7. Inicie el túnel y compruebe el protocolo de enlace.

En Debian, active la interfaz al arrancar con:

sudo systemctl enable --now wg-quick@wg0
sudo wg show

Importe o active el perfil del cliente una vez que el puerto UDP 51820 sea accesible. En wg show, compruebe que el par esperado aparezca y que latest handshakese actualice después de que el cliente envíe tráfico. El wg-quick(8)manual de Debian Bookworm describe el asistente de configuración de interfaz utilizado por la unidad systemd.

La ausencia de un protocolo de enlace indica, en primer lugar, problemas de accesibilidad o discrepancias en las claves: verifique la dirección y el puerto del punto final, las reglas del firewall UDP, la clave pública del servidor en el perfil del cliente, la clave pública del cliente wg0.confy la hora correcta del sistema. Un protocolo de enlace sin tráfico funcional suele indicar problemas de reenvío, NAT, superposición de rutas o una regla de cadena de reenvío del firewall.

Una terminal de Debian muestra el servicio wg-quick habilitado y un protocolo de enlace entre pares con contadores de tráfico.
El servicio está habilitado y la visualización entre pares incluye campos de protocolo de enlace y transferencia; los valores son ilustrativos.

8. Verifique el tráfico y comprenda el límite de IPv6.

Una vez conectado el cliente, primero pruebe la dirección del túnel del servidor y, a continuación, compruebe la dirección IPv4 pública que ve un servicio externo de comprobación de direcciones IPv4:

ping -c 3 10.8.0.1
curl -4 https://ifconfig.me

El ping debería llegar al servidor si se permite ICMP. La comprobación de IPv4 externa debería mostrar la dirección de salida pública del VPS para esta configuración de túnel completo. Si la dirección pública no cambia, revise AllowedIPsel reenvío, el nombre de la interfaz NAT y la política de reenvío del firewall.

Este ejemplo solo admite IPv4. AllowedIPs = 0.0.0.0/0No enruta IPv6, por lo que un cliente con conectividad IPv6 aún podría enviar tráfico IPv6 fuera del túnel. No describa esta configuración como un túnel de privacidad de doble pila completo. Para transmitir IPv6 a través de WireGuard, asigne y enrute direcciones IPv6 para el túnel, habilite el reenvío de IPv6, configure las reglas de firewall y enrutamiento adecuadas y agregue ::/0el cliente solo después de que esa ruta funcione de extremo a extremo. La compatibilidad con proveedores varía. De lo contrario, elija una política de túnel dividido con conocimiento de causa y verifique el comportamiento de IPv6 del cliente.

Una pantalla genérica de VPN para teléfono muestra un perfil de VPN para portátil activo con detalles del servidor y la dirección del túnel.
Un perfil genérico de cliente VPN está activo y muestra un punto final del servidor y una IP del túnel; los controles varían según la aplicación.
Una terminal Debian muestra una comprobación de dirección IPv4 y un ping exitoso al servidor WireGuard.
El terminal comprueba una dirección de salida IPv4 y realiza un ping a la dirección WireGuard del servidor; la salida es ilustrativa.

Problemas comunes y una revisión final rápida

  • Sin protocolo de enlace: confirme el tráfico UDP entrante 51820 en los firewalls del proveedor y del host, la IP pública o el DNS del punto final y la clave pública del par de cada lado.
  • El protocolo de enlace funciona, pero los sitios web no se cargan: confirme net.ipv4.ip_forward=1que la regla NAT utiliza la interfaz de salida real y que el firewall permite el tráfico reenviado.
  • Solo fallan algunas redes: compruebe si 10.8.0.0/24se superpone con una red local o remota. Si es necesario, cambie el número del túnel, actualizando simultáneamente ambos pares y la regla del cortafuegos.
  • Funciona hasta el reinicio: confirme wg-quick@wg0que está habilitado y que la configuración del firewall y de sysctl se mantiene a través de la configuración normal del sistema.
  • IPv6 sigue utilizando la conexión local: esto es lo esperado en este ejemplo que solo usa IPv4. Configure y pruebe una ruta de túnel IPv6 antes de confiar en una declaración de privacidad de túnel completo.

Antes de dar por finalizada la configuración, verifique que el servicio del servidor esté activo, wg showque se haya producido un reciente intercambio de claves y que los contadores de transferencia aumenten, que el cliente pueda acceder a 10.8.0.1la dirección IP y que una comprobación de salida IPv4 muestre la dirección pública del servidor. Reinicie el sistema solo después de que se hayan configurado correctamente el firewall y el reenvío de claves, y repita dichas comprobaciones. Para los pares adicionales, genere pares de claves independientes e IP de túnel únicas, y luego elimine el dispositivo borrando su entrada de par y reiniciando la interfaz.

Dejar un comentario

Cómo configurar una VPN WireGuard de punto a sitio en Debian 12

Cómo configurar una VPN WireGuard de punto a sitio en Debian 12

Configura un servidor VPN WireGuard en Debian 12 para un cliente remoto. Configura las claves, el reenvío de IPv4, la traducción de direcciones de red (NAT) con nftables, el acceso al firewall y las comprobaciones de conexión.

Step-by-Step Debian 12 Hardening Guide for CIS Compliance

Step-by-Step Debian 12 Hardening Guide for CIS Compliance

Harden a Debian 12 workstation with a careful CIS Benchmark workflow: select the right profile, patch safely, review services and access, configure nftables, and document evidence.

Debian 12 en un VPS con poca RAM: Cómo reducir los fallos por falta de memoria de MySQL

Debian 12 en un VPS con poca RAM: Cómo reducir los fallos por falta de memoria de MySQL

Diagnosticar errores de memoria insuficiente (OOM kills) en MySQL en Debian 12, comprobar los límites de memoria del VPS, configurar el espacio de intercambio y ajustar la memoria y la concurrencia de la base de datos sin prometer una solución universal.

Cómo construir un escritorio Debian como un sistema inmutable basado en OSTree.

Cómo construir un escritorio Debian como un sistema inmutable basado en OSTree.

Aprende a crear y probar un escritorio OSTree derivado de Debian en una máquina virtual, incluyendo la preparación del árbol del sistema, la integración del arranque, las comprobaciones de implementación y la reversión.

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

Configure an SSHFS boot mount in Debian with SSH keys, fstab, and systemd automount. Includes reboot checks, permissions, timeouts, and troubleshooting.

Checklist de mantenimiento del hogar en Madrid para octubre de 2026: lluvia, calefacción, desagües y ventanas

Checklist de mantenimiento del hogar en Madrid para octubre de 2026: lluvia, calefacción, desagües y ventanas

Guía práctica para preparar una vivienda en Madrid en octubre de 2026: lluvia otoñal, noches más frescas, calefacción, canalones, desagües, juntas de ventanas y responsabilidades de inquilinos y propietarios.

Qué plantar en Madrid en octubre de 2026: siembras, trasplantes y calendario semanal del huerto

Qué plantar en Madrid en octubre de 2026: siembras, trasplantes y calendario semanal del huerto

Guía práctica para el huerto en Madrid en octubre de 2026: qué sembrar, trasplantar y proteger, con normales climáticas de AEMET, previsión actual y checklist semanal.

Tendencias del podcasting que debes conocer en 2026: Una guía para principiantes.

Tendencias del podcasting que debes conocer en 2026: Una guía para principiantes.

¿Eres nuevo en el mundo del podcasting? Descubre las tendencias de 2026 que darán forma al vídeo, la búsqueda de contenido, las transcripciones, la IA, el análisis de datos, la monetización y un plan de lanzamiento práctico.

Curso magistral de UGC: Crea contenido generado por el usuario que genere confianza e impulse la acción.

Curso magistral de UGC: Crea contenido generado por el usuario que genere confianza e impulse la acción.

Una clase magistral práctica sobre contenido generado por el usuario (UGC) para obtener, autorizar, informar, publicar y medir el contenido de clientes y creadores sin perder autenticidad.

Por qué la creación de comunidades es el nuevo marketing — y cuándo no lo es

Por qué la creación de comunidades es el nuevo marketing — y cuándo no lo es

La creación de comunidad puede fortalecer la confianza, la retención, la retroalimentación y la promoción, pero no reemplaza todos los canales de marketing. Compare las ventajas y desventajas y elija el modelo adecuado.