Tutoriales

Cómo configurar WireGuard VPN de alta velocidad en Debian 13

WireGuard es un protocolo VPN moderno integrado directamente en el núcleo de Linux desde la versión 5.6. Esta guía cubre la configuración completa del servidor y del cliente en Debian 13 (Trixie) utilizando sólo el administrador de paquetes estándar y algunos archivos de configuración..

La mayoría de los administradores de sistemas todavía buscan OpenVPN Es una costumbre, pero hoy en día esto generalmente significa aceptar túneles más lentos, administrar unidades de autoridad de credenciales y tratar con perfiles que pueden llegar a 50 líneas antes de hacer algo significativo.

apoyador Sólo dos perfiles, un par de claves a cada lado y un túnel que aparece en un segundo harán el mismo trabajo. La compensación es apoyador Sólo atropella protocolo UDPpor lo que si su red bloquea activamente protocolo UDP tráfico o necesitas disfrazarlo como HTTPSEntonces OpenVPN Superar tcp puerto Capítulo 443 Sigue siendo la mejor opción.

por todo lo demás, apoyador es la configuración que desea hoy porque es más simple, rápida y fácil de instalar, configurar y mantener.

Cada comando a continuación se prueba Debian 13 (Trish) y Guardia de línea 1.0.0 y Núcleo de Linux 6.12. El servidor utiliza un 10.0.0.0/24VPN subredes y una única interfaz de red pública, pero puede ajustar ambas para adaptarlas a su entorno.

Si necesita un servidor en la nube para mantenerse al día, DigitalOcean ofrece planes VPS confiables desde $4/mes (exponer: Este es un enlace de afiliado, lo que significa que podemos ganar una comisión sin costo adicional para usted.).

Instale WireGuard en Debian 13

Publicaciones relacionadas

existir Debian 13, apoyador Disponible en el repositorio principal, por lo que no es necesario agregar fuentes adicionales, simplemente actualice el manifiesto del paquete e instálelo en el servidor.

sudo apt update && sudo apt install wireguard -y

este sudo El prefijo utiliza privilegios de root para ejecutar comandos, lo cual es necesario para cualquier operación que involucre archivos del sistema, instalación de paquetes o cambio de servicios. si ves Permission deniedte olvidaste sudo prefijo o su usuario no está en el grupo sudo.

Instale WireGuard en Debian 13

Una vez completada la instalación, confirme la instalación y verifique si el módulo principal está cargado correctamente:

sudo modprobe wireguard
lsmod | grep wireguard
Consulte el módulo principal de WireGuard
Consulte el módulo principal de WireGuard

si modprobe Devolver un error, por ejemplo. Module wireguard not foundes posible que falten los archivos de encabezado principales, así que instálelos primero y vuelva a intentarlo:

sudo apt install linux-headers-$(uname -r)

Generar par de claves del servidor WireGuard

apoyador usar gente/privado Pares de claves utilizados para la autenticación en lugar de credenciales. Cada par, ya sea servidor o cliente, genera su propio par de claves y los pares solo intercambian sus claves públicas. La clave privada nunca sale de la máquina que la generó.

Genere el par de claves del servidor y guárdelo en apoyador Directorio de configuración:

sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard
wg genkey | sudo tee /etc/wireguard/server_private.key > /dev/null
sudo sh -c 'wg pubkey < /etc/wireguard/server_private.key' | sudo tee /etc/wireguard/server_public.key > /dev/null

Estos dos comandos están separados porque clave privada El propietario del archivo es raíz atrás sudo tee Lo escribí y luego un simple bash. < Redirect no puede leer 600 archivos propiedad de root como usuario normal.

Envuelva la segunda directiva en sudo sh -c Ejecute la redirección completa como raízlo que resuelve el problema. este > /dev/null Las pulsaciones de teclas en cada fila desactivan la impresión en el terminal.

A continuación, verifique que ambos archivos se hayan escrito correctamente:

sudo cat /etc/wireguard/server_private.key
sudo cat /etc/wireguard/server_public.key
Verifique el par de claves pública/privada de WireGuard
Verifique el par de claves pública/privada de WireGuard

Ambos deberían devolver un base de 64 bits La cadena está en una línea. Si alguno de los archivos está vacío, vuelva a ejecutar ese comando en particular antes de continuar.

cierre clave privada Entonces solo el root puede leerlo:

sudo chmod 600 /etc/wireguard/server_private.key

advertir: Nunca comparta ni exponga server_private.key. Si se filtra, cualquiera puede hacerse pasar por su servidor. este clave pública Siéntase libre de compartir de forma segura con cualquier compañero que necesite una conexión.

Lea el valor de la clave privada para poder pegarlo en el perfil en el siguiente paso:

sudo cat /etc/wireguard/server_private.key

producción:

wOF5RcqK3qCYqqEKZif+4tQyNpZzNCBUAiplO3guSlU=
¿Cuáles son sus configuraciones VPN actuales en su entorno de producción? OpenVPN ¿O algo más? ponlo en comentarios Y cuéntenos qué le hizo elegir WireGuard.

Configuración del servidor WireGuard en Debian 13

Crear perfil de servidor /etc/wireguard/wg0.confque define el nombre de la interfaz de red virtual apoyador Creará.

sudo nano /etc/wireguard/wg0.conf

Agregue lo siguiente, reemplazando server-private-key El valor real proviene de server_private.key y eth0 El nombre real de la interfaz de red pública de su servidor, que puede encontrar a través de:

ip a

Ahora agregue las siguientes líneas a wg0.conf documento.

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = server-private-key
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Esto es lo que hace cada directiva:

  • Address = 10.0.0.1/24 Asigne la IP del servidor dentro de la subred VPN. Cada cliente obtendrá una dirección en la misma subred. 10.0.0.0/24 alcance.
  • ListenPort = 51820 es el puerto UDP en el que escucha WireGuard; este es el valor predeterminado estándar.
  • PrivateKey Es la clave privada del servidor, que se utiliza para autenticarse ante los pares conectados.
  • PostUp Ejecute estos comandos de iptables cuando aparezca la interfaz para habilitar el reenvío de paquetes y el enmascaramiento NAT para que los clientes VPN puedan acceder a Internet a través del servidor.
  • PostDown Cuando falla una interfaz, las mismas reglas se pueden descartar limpiamente.

Guarde y cierre el archivo, luego bloquéelo:

sudo chmod 600 /etc/wireguard/wg0.conf

Habilite el reenvío de IP para WireGuard

Para que el servidor enrute el tráfico del cliente a Internet, el kernel de Linux debe habilitar el reenvío de IP. Sin él, los paquetes del cliente VPN llegarán al servidor wg0 interfaz y permanece allí.

sudo nano /etc/sysctl.conf

Busque y descomente esta línea:

net.ipv4.ip_forward=1

Aplicar inmediatamente sin reiniciar:

sudo sysctl -p

producción:

net.ipv4.ip_forward = 1

Descomente si también desea el reenvío de IPv6 net.ipv6.conf.all.forwarding=1 en el mismo archivo.

Si esto le evita tener que luchar contra una regla de iptables que parece ser correcta pero que no enruta nada, compártala con un colega que todavía esté solucionando problemas de un túnel VPN roto.

Iniciar el servidor WireGuard

proponer apoyador interfaz y hacer que se inicie automáticamente al arrancar:

sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0

Comprueba que sale limpio:

sudo systemctl status wg-quick@wg0

producción:

● [email protected] - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/usr/lib/systemd/system/[email protected]; enabled; preset: enabled)
     Active: active (exited) since Tue 2026-04-28 07:13:32 EDT; 1min 2s ago
 Invocation: 202a03eee5b7429a90bd3644a3af127e
       Docs: man:wg-quick(8)
             man:wg(8)
             
             quickstart/
             
             
    Process: 5805 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 5805 (code=exited, status=0/SUCCESS)
   Mem peak: 3.7M
        CPU: 56ms

visualización de estado active (exited) en lugar de active (running) porque wg-quick Es un servicio único que se utiliza para configurar la interfaz y salir. La interfaz en sí permanece abierta.

Confirmar vía:

sudo wg show

producción:

interface: wg0
  public key: zsgn/mICRf3WE5aG/BdsUPjKyWqX767j6oIEd/totTw=
  private key: (hidden)
  listening port: 51820

si wg show No se devuelve nada y la interfaz no aparece, por lo que debe verificar los registros usando el siguiente comando para encontrar el error exacto.

sudo journalctl -u wg-quick@wg0 -n 30 --no-pager

La causa más común es el nombre de interfaz incorrecto. PostUpdesaparecido private key valor o error de sintaxis wg0.conf.

Configurar el cliente WireGuard y generar claves

En la máquina cliente (estoy usando Ubuntu26.04), Instalar apoyador De la misma manera:

sudo apt update && sudo apt install wireguard -y

Utilice los mismos dos patrones de comando para generar un par de claves de cliente:

sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard
wg genkey | sudo tee /etc/wireguard/client_private.key > /dev/null
sudo sh -c 'wg pubkey < /etc/wireguard/client_private.key' | sudo tee /etc/wireguard/client_public.key > /dev/null
sudo chmod 600 /etc/wireguard/client_private.key

Verifique que ambos archivos se escribieron correctamente:

sudo cat /etc/wireguard/client_private.key
sudo cat /etc/wireguard/client_public.key

Ambos deberían devolver una única cadena base64 en una línea. Si alguno de los archivos está vacío, vuelva a ejecutar ese comando en particular antes de continuar.

Generar clave de cliente WireGuard
Generar clave de cliente WireGuard

leer Valor de la clave privada del cliente Entonces puedes pegar esto en el perfil:

sudo cat /etc/wireguard/client_private.key

producción:

+BIFRJG5sa38Qiejstv1L97z7xNTR0pVuRUXHqzrI3k=

Crear un perfil de cliente:

sudo nano /etc/wireguard/wg0.conf

Agregue lo siguiente, reemplazando los valores del marcador de posición con su clave real y la IP del servidor. reemplazar client-private-key valor para los clientes client_private.key, server-public-key con valor del servidor server_public.keyy server-ip Utilice la dirección IP pública del servidor, que puede encontrar en el servidor de la siguiente manera:

curl -s ifconfig.me

Añade las siguientes líneas a wg0.conf documento.

[Interface]
Address = 10.0.0.2/24
PrivateKey = client-private-key
DNS = 8.8.8.8

[Peer]
PublicKey = server-public-key
Endpoint = server-ip:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Esto es lo que hace cada directiva:

  • Address = 10.0.0.2/24 Proporcione al cliente una IP dentro de la subred VPN y cada cliente adicional obtendrá la siguiente dirección, p. 10.0.0.3, 10.0.0.4etc.
  • DNS = 8.8.8.8 Le indica al cliente que utilice el solucionador de DNS de Google mientras el túnel está activo para evitar fugas de DNS.
  • PublicKey under [Peer] es la clave pública del servidor, así es como el cliente verifica que se está comunicando con el servidor correcto.
  • Endpoint es la IP pública del servidor y el puerto WireGuard.
  • AllowedIPs = 0.0.0.0/0 Enrute todo el tráfico a través del túnel, o para túneles divididos en los que solo subredes específicas pasen por la VPN, reemplácelo con esos rangos de subred.
  • PersistentKeepalive = 25 Los paquetes Keep-Alive se envían cada 25 segundos para mantener el túnel activo a través de enrutadores NAT y firewalls que interrumpen las conexiones UDP inactivas.

Bloquear la configuración del cliente:

sudo chmod 600 /etc/wireguard/wg0.conf

pista: Para cada nuevo cliente que agregue, genere un nuevo par de claves en la computadora cliente y agregue un nuevo par de claves [Peer] Configuración del servidor de bloques. Nunca reutilice pares de claves entre clientes, ya que las claves individuales le permiten revocar el acceso de un cliente sin tocar a otros clientes.

Si desea una gestión más profunda del acceso al servidor Linux y la seguridad de un extremo a otro, Curso de Certificación RHCSA Cubre redes, control de acceso y refuerzo del sistema. sombrero rojo 10.

Agregue el cliente como par en el servidor

Volver arriba servidoragregue la clave pública del cliente a la configuración del servidor.

sudo nano /etc/wireguard/wg0.conf

Adjuntar un [Peer] bloque inferior y asegúrese de reemplazarlo client-public-key valor para los clientes client_public.key.

[Peer]
PublicKey = client-public-key
AllowedIPs = 10.0.0.2/32

Aplique el nuevo par sin reiniciar la interfaz, lo que eliminará todas las conexiones activas:

sudo wg addconf wg0 <(sudo wg-quick strip wg0)

O recargar limpiamente usando:

sudo systemctl restart wg-quick@wg0

Confirmar el registro de pares:

sudo wg show

producción:

interface: wg0
  public key: zsgn/mICRf3WE5aG/BdsUPjKyWqX767j6oIEd/totTw=
  private key: (hidden)
  listening port: 51820

peer: BlNNCOPNwUOYq6y5tInMw4voCrh5f9aZ7ZkUNuWK3Gc=
  allowed ips: 10.0.0.2/32

Las entradas de pares aparecen en wg show Confirme que el servidor conoce al cliente. Todavía no muestra el protocolo de enlace porque el cliente aún no está conectado.

Conecte el cliente y verifique el túnel.

En la computadora cliente, abra la interfaz WireGuard:

sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0

Verificar el estado de la conexión:

sudo wg show

producción:

interface: wg0
  public key: BlNNCOPNwUOYq6y5tInMw4voCrh5f9aZ7ZkUNuWK3Gc=
  private key: (hidden)
  listening port: 47438
  fwmark: 0xca6c

peer: zsgn/mICRf3WE5aG/BdsUPjKyWqX767j6oIEd/totTw=
  endpoint: 192.168.122.211:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 32 seconds ago
  transfer: 1.81 KiB received, 1.86 KiB sent
  persistent keepalive: every 25 seconds

este latest handshake La línea es el indicador clave. Si se muestra un valor de tiempo, el túnel se ha iniciado y ambas partes han verificado las claves de la otra parte. Si no se muestra nada, el protocolo de enlace aún no se ha completado.

Verifique la conectividad de un extremo a otro haciendo ping a la IP VPN del servidor desde el cliente:

ping 10.0.0.1

producción:

PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.958 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.75 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=2.85 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.796 ms
^C
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.796/1.588/2.854/0.814 ms

Confirma que tu tráfico realmente está llegando vpn Comprobando tu IP pública desde el cliente:

curl -s ifconfig.me

La IP devuelta debe coincidir con la IP pública de su servidor VPN, no con la dirección ISP local de su cliente. Si su IP local aún se muestra, verifique AllowedIPs = 0.0.0.0/0 Establecido en la configuración del cliente, el reenvío de IP y el enmascaramiento NAT están activos en el servidor:

sudo wg show
sudo iptables -t nat -L -n -v

notas: Si el protocolo de enlace nunca se completa, la causa más común es un bloqueo del firewall protocolo UDP puerto 51820 En el servidor, la clave pública del servidor en la configuración del cliente es incorrecta o la clave pública del cliente en la configuración del cliente del servidor es incorrecta. [Peer] obstruido. Antes de profundizar más, observe más de cerca estas tres secciones.

Si esto permite que su túnel WireGuard se inicie en una sola sesión, compártalo con su equipo y ahórreles horas de tiempo de depuración.

Agregar más clientes para WireGuard

Para cada cliente adicional, el proceso consta de los mismos tres pasos.

  • Genere un par de claves en el nuevo cliente.
  • Crear un wg0.conf Tener una dirección única para ese cliente, p.e. 10.0.0.3/24.
  • Añadir uno nuevo [Peer] Bloquear configuraciones de servidor que apunten a la clave pública de este cliente AllowedIPs = 10.0.0.3/32.

Cada cliente tiene su propio par de claves y su propia IP. Eliminar un cliente más tarde es tan simple como eliminar su cliente [Peer] Bloquear y recargar desde la configuración del servidor:

sudo systemctl restart wg-quick@wg0

No es necesario revocar ningún certificado ni mantener ninguna CA.

Para obtener una comprensión más profunda de las redes, los firewalls y el enrutamiento de Linux, visite Más de 100 comandos básicos de Linux El curso cubre los comandos de red que utiliza todos los días.
en conclusión

tienes un trabajo ahora WireGuard VPN Se inicia el servidor Debian 13 Cliente Linux con conexiones por cable, reenvío de IP, enmascaramiento NAT y administración persistente de systemd.

en comparación con OpenVPNtoda la configuración requiere dos archivos de configuración y algunos comandos, y una vez que ambas partes tienen las claves públicas de la otra parte, el túnel se inicia en un segundo.

Ahora, para ir un paso más allá, agregue un segundo cliente con un nuevo par de claves y una IP única, p. 10.0.0.3confirme su conexión independiente y luego elimínelo eliminándolo [Peer] Bloquear y recargar la configuración del servidor.

¿Ha migrado recientemente de OpenVPN a WireGuard o es la primera vez que configura una VPN? ¿Cómo es la topología de su red? Cuéntanos en los comentarios la siguiente.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba