Cómo instalar y configurar WireGuard VPN en Debian 10

22 mar 2021 7 min di lettura
Cómo instalar y configurar WireGuard VPN en Debian 10
Indice dei contenuti

Introducción

WireGuard es una red privada virtual (VPN) genérica que utiliza un cifrado de última generación. En comparación con otras soluciones VPN populares, como IPsec y OpenVPN, WireGuard es generalmente más rápido, más fácil de configurar y ocupa menos espacio. Es multiplataforma y puede ejecutarse en casi cualquier lugar, incluidos Linux, Windows, Android y macOS.

Wireguard es una VPN de igual a igual; no utiliza el modelo cliente-servidor. Dependiendo de la configuración, un par puede actuar como un servidor o cliente tradicional. Funciona mediante la creación de una interfaz de red en cada dispositivo del mismo nivel que actúa como un túnel. Los pares se autentican entre sí intercambiando y validando claves públicas, imitando el modelo SSH. Las claves públicas se asignan a una lista de direcciones IP permitidas en el túnel. El tráfico de VPN está encapsulado en UDP.

Este artículo explica cómo instalar y configurar WireGuard en Debian 10, que actuará como un servidor VPN. También le mostraremos cómo configurar WireGuard como cliente en Linux, Windows y macOS. El tráfico del cliente se enrutará a través del servidor Debian 10.

Esta configuración se puede utilizar para protegerse contra los ataques de Man in the Middle, navegar por la web de forma anónima, eludir el contenido restringido geográficamente o permitir que los colegas que trabajan desde casa se conecten de forma segura a la red corporativa.

Prerrequisitos

Para seguir esta guía, necesitará una máquina con Debian 10 instalado. También necesita el usuario root o un usuario con privilegios de sudo.

Configurar el servidor WireGuard

Comenzaremos instalando el paquete WireGuard en la máquina Debian y configurándolo para que actúe como servidor. También configuraremos el sistema para enrutar el tráfico del cliente a través de él.

Instale WireGuard en Debian 10

WireGuard está disponible en los repositorios de backports de Debian. Para agregar el repositorio a su sistema, ejecute:

echo 'deb http://ftp.debian.org/debian buster-backports main' | sudo tee /etc/apt/sources.list.d/buster-backports.list

Una vez que el repositorio esté habilitado, actualice el caché de apt e instale el módulo y las herramientas de WireGuard:

sudo apt update
sudo apt install wireguard

WireGuard se ejecuta como un módulo del kernel.

Configurar WireGuard

Las interfaces WireGuard se pueden configurar y administrar con herramientas de línea de comandos wg y wg-quick.

Cada dispositivo de la red WireGuard VPN debe tener una clave pública y una privada. Ejecute el siguiente comando para generar el par de claves:

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

Los archivos se generan en el directorio /etc/wireguard. Utilice los comandos cato lesspara ver el contenido de los archivos. La clave privada nunca debe compartirse con nadie y siempre debe mantenerse a salvo.

Wireguard también admite una clave previamente compartida, que agrega una capa adicional de cifrado de clave simétrica. Esta clave es opcional y debe ser única para cada par de pares.

El siguiente paso es configurar el dispositivo de túnel que enrutará el tráfico VPN.

El dispositivo se puede configurar desde la línea de comandos usando los comandos ipy wg, o creando manualmente el archivo de configuración. Crearemos la configuración con un editor de texto.

Abra su editor y cree un nuevo archivo wg0.confcon el siguiente contenido:

sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
/etc/wireguard/wg0.conf

Puede nombrar la interfaz como desee. Sin embargo, se recomienda utilizar algo como wg0o wgvpn0.

Los ajustes en la sección de interfaz tienen el siguiente significado:

  • Dirección: una lista separada por comas de direcciones IP v4 o v6 para la interfaz wg0. Puede ingresar una dirección IP de un rango reservado para redes privadas (10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16).
  • ListenPort: el puerto de escucha.
  • PrivateKey: una clave privada generada por el comando wg genkey. (Para ver el contenido del tipo de archivo: sudo cat /etc/wireguard/privatekey)
  • SaveConfig: si se establece en verdadero, el estado actual de la interfaz se guarda en el archivo de configuración al apagar.
  • PostUp: comando o script eseguito prima di attivare l'interfaccia. In questo esempio, stiamo usando iptables per abilitare il masquerading. Ciò consente al traffico di lasciare il server, fornendo ai client VPN l'accesso a Internet.

Asegúrese de reemplazar ens3después -A POSTROUTINGpara que coincida con el nombre de su interfaz de red pública. Puede encontrar fácilmente la interfaz con:

ip -o -4 route show to default | awk '{print $5}'
  • PostDown: comando o script que se ejecuta antes de deshabilitar la interfaz. Las reglas de iptables se eliminarán una vez que se desactive la interfaz.

Los archivos wg0.confy privatekeyno deben ser legibles por usuarios normales. Úselo chmodpara establecer permisos de archivo en 600:

sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}

Una vez hecho esto, abra la interfaz wg0usando los atributos especificados en el archivo de configuración:

sudo wg-quick up wg0

La salida se verá así:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Para verificar el estado y la configuración de la interfaz, ejecute:

sudo wg show wg0
interface: wg0
  public key: +Vpyku+gjVJuXGR/OXXt6cmBKPdc06Qnm3hpRhMBtxs=
  private key: (hidden)
  listening port: 51820

También puede verificar el estado de la interfaz con ip a show wg0:

ip a show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

WireGuard se puede administrar con Systemd. Para que la interfaz WireGuard se inicie, ejecute el siguiente comando:

sudo systemctl enable wg-quick@wg0

Configuración de firewall y redes de servidores

El reenvío de IP debe estar habilitado para que NAT funcione. Abra el archivo /etc/sysctl.conf y agregue o descomente la siguiente línea:

sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
/etc/sysctl.conf

Guarde el archivo y aplique el cambio:

sudo sysctl -p
net.ipv4.ip_forward = 1

Si está utilizando UFW para administrar su firewall, debe abrir el tráfico UDP en el puerto 51820:

sudo ufw allow 51820/udp

Eso es todo. Se ha configurado el par Debian que actuará como servidor.

Configurar el cliente de Linux y macOS

Las instrucciones de instalación para todas las plataformas compatibles están disponibles en WireGuard . En sistemas Linux, puede instalar el paquete utilizando el administrador de paquetes de distribución y en macOS con brew.

Una vez instalado, siga los pasos a continuación para configurar el dispositivo cliente.

El proceso para configurar un cliente de Linux y macOS es prácticamente el mismo que hizo para el servidor. Primero, genere las claves públicas y privadas:

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

Cree el archivo wg0.conf y agregue el siguiente contenido:

sudo nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0
/etc/wireguard/wg0.conf

La configuración en la sección de interfaz tiene el mismo significado que la configuración del servidor:

  • Dirección: una lista separada por comas de direcciones IP v4 o v6 para la interfaz wg0.
  • PrivateKey: para ver el contenido del archivo en la máquina cliente, ejecute: sudo cat /etc/wireguard/privatekey

La sección de pares contiene los siguientes campos:

  • PublicKey: una clave pública del par al que desea conectarse. (El contenido del archivo /etc/wireguard/publickeydel servidor).
  • Punto final: una IP o nombre de host del par al que desea conectarse, seguido de dos puntos y luego un número de puerto en el que escucha el par remoto.
  • AllowIPs: una lista separada por comas de direcciones IP v4 o v6 desde las que se permite el tráfico entrante para este par y a las que se dirige el tráfico saliente para este par. Usamos 0.0.0.0/0 porque enrutamos el tráfico y queremos que el servidor del mismo nivel envíe paquetes con cualquier IP de origen.

Si necesita configurar clientes adicionales, simplemente repita los mismos pasos utilizando una dirección IP privada diferente.

Instale el cliente de Windows

Descargue e instale el paquete msi de Windows desde el sitio web de WireGuard .

Una vez instalado, abra la aplicación WireGuard y haga clic en "Add Tumnel" -> "Add empty tunnel ...".

Se crea automáticamente un par de claves públicas y se muestra en la pantalla.

Ingrese un nombre para el túnel y cambie la configuración de la siguiente manera:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

En la sección de interfaz, agregue una nueva línea para definir la dirección del túnel del cliente.

En la sección de pares, agregue los siguientes campos:

  • PublicKey: la clave pública (archivo /etc/wireguard/publickey) del servidor Debian .
  • Punto final: la dirección IP del servidor Debian seguida de dos puntos y el puerto WireGuard (51820).
  • IP permitida - 0.0.0.0/0

Cuando termine, haga clic en el botón "Guardar".

Agregue el cliente par al servidor

El último paso es agregar la clave pública y la dirección IP del cliente al servidor. Para hacer esto, ejecute el siguiente comando en el servidor Debian:

sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2

Asegúrese de cambiar CLIENT_PUBLIC_KEY a la clave pública que generó en la máquina cliente (sudo cat /etc/wireguard/publickey) y ajuste la dirección IP del cliente si es diferente. Los usuarios de Windows pueden copiar la clave pública de la aplicación WireGuard.

Una vez hecho esto, regrese a la máquina cliente y abra la interfaz de tunelización.

Clientes Linux y macOS

Ejecute el siguiente comando para abrir la interfaz:

sudo wg-quick up wg0

Ahora debería estar conectado al servidor Debian y el tráfico de su máquina cliente debería enrutarse a través de él. Puedes comprobar la conexión con:

sudo wg
interface: wg0
  public key: gFeK6A16ncnT1FG6fJhOCMPMeY4hZa97cZCNWis7cSo=
  private key: (hidden)
  listening port: 53527
  fwmark: 0xca6c

peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
  endpoint: XXX.XXX.XXX.XXX:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 53 seconds ago
  transfer: 3.23 KiB received, 3.50 KiB sent

También puede abrir su navegador, escribir "what is my ip" y debería ver la dirección IP de su servidor Debian.

Para detener el túnel, baje la interfaz wg0:

sudo wg-quick down wg0

Clientes de Windows

Si ha instalado WireGuard en Windows, haga clic en el botón "Activar". Una vez que los pares están conectados, el estado del túnel cambiará a Activo.

Conclusión

Le mostramos cómo instalar WireGuard en Debian 10 y configurarlo como un servidor VPN. Esta configuración le permite navegar por la web de forma anónima mientras mantiene la privacidad de sus datos de tráfico.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.