GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Configure su propio servidor VPN WireGuard en Ubuntu 20.04/18.04

Este tutorial le mostrará cómo configurar su propio servidor WireGuard VPN en Ubuntu. WireGuard está hecho específicamente para el kernel de Linux. Se ejecuta dentro del kernel de Linux y le permite crear un túnel VPN rápido, moderno y seguro.

Características de VPN de WireGuard

  • Velocidad ultrarrápida y liviana, saca a OpenVPN del agua.
  • Multiplataforma. WireGuard puede ejecutarse en Linux, BSD, macOS, Windows, Android, iOS y OpenWRT.
  • La autenticación del usuario se realiza mediante el intercambio de claves públicas, similar a las claves SSH.
  • Asigna direcciones IP de túnel estáticas a clientes VPN. Puede que a algunas personas no les guste, pero puede ser muy útil en algunos casos.
  • Los dispositivos móviles pueden cambiar entre Wi-Fi y la red móvil sin problemas y sin perder la conectividad.
  • Su objetivo es reemplazar OpenVPN e IPSec en la mayoría de los casos de uso.

WireGuard es mi protocolo VPN preferido para eliminar la necesidad de configurar el cifrado TLS para mis redes privadas.

Requisitos

Para seguir este tutorial, necesitará un VPS (servidor privado virtual) que pueda acceder libremente a sitios web bloqueados (fuera de su país o sistema de filtrado de Internet). Recomiendo Kamatera VPS, que incluye:

  • Prueba gratuita de 30 días.
  • Desde $4/mes (1 GB de RAM)
  • VPS basado en KVM de alto rendimiento
  • 9 centros de datos en todo el mundo, incluidos Estados Unidos, Canadá, Reino Unido, Alemania, Países Bajos, Hong Kong e Israel.

Siga el tutorial vinculado a continuación para crear su servidor Linux VPS en Kamatera.

  • Cómo crear un servidor VPS Linux en Kamatera

Una vez que tenga un VPS con Ubuntu, siga las instrucciones a continuación.

Este tutorial asume que tanto el servidor VPN como el cliente VPN ejecutan Ubuntu sistema operativo.

Paso 1:Instale WireGuard en Ubuntu Server and Desktop

Inicie sesión en su servidor Ubuntu, luego ejecute los siguientes comandos para instalar WireGuard.

Ubuntu 20.04

Ubuntu 20.04 viene con Linux kernel 5.4, que tiene un módulo de protección de cables integrado.

sudo apt update
sudo apt install wireguard wireguard-tools

Ubuntu 18.04

Ubuntu 18.04 se envía con el kernel de Linux 4.15, por lo que los usuarios deben instalar primero el kernel de habilitación de hardware (HWE), que instalará el kernel 5.4 en su sistema.

sudo apt update
sudo apt install linux-generic-hwe-18.04-edge

Reinicie su servidor Ubuntu 18.04 e instale WireGuard.

sudo shutdown -r now
sudo apt install wireguard wireguard-tools wireguard-dkms

Luego use los mismos comandos para instalar WireGuard en su computadora Ubuntu local (el cliente VPN). Tenga en cuenta que también necesita instalar openresolv paquete en el cliente para configurar el servidor DNS.

sudo apt install openresolv

Paso 2:generar un par de claves pública/privada

Servidor

Ejecute el siguiente comando en el servidor de Ubuntu para crear un par de claves pública/privada, que se guardará en /etc/wireguard/ directorio.

wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

Cliente

Ejecute el siguiente comando para crear un par de claves pública/privada en la computadora Ubuntu local (el cliente VPN).

wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key

Paso 3:Crear archivo de configuración de WireGuard

Servidor

Utilice un editor de texto de línea de comandos como Nano para crear un archivo de configuración de WireGuard en el servidor de Ubuntu. wg0 será el nombre de la interfaz de red.

sudo nano /etc/wireguard/wg0.conf

Copie el siguiente texto y péguelo en su archivo de configuración. Debe usar su propia clave privada del servidor y la clave pública del cliente.

[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc=

[Peer]
PublicKey = AYQJf6HbkQ0X0Xyt+cTMTuJe3RFwbuCMF46LKgTwzz4=
AllowedIPs = 10.10.10.2/32

donde:

  • Dirección :especifique la dirección IP privada del servidor VPN. Aquí estoy usando el rango de red 10.10.10.0/24, por lo que no entrará en conflicto con el rango de su red doméstica. (La mayoría de los enrutadores domésticos usan 192.168.0.0/24 o 192.168.1.0/24). 10.10.10.1 es la dirección IP privada del servidor VPN.
  • Clave privada :La clave privada del servidor VPN, que se puede encontrar en /etc/wireguard/server_private.key archivo en el servidor.
  • Puerto de escucha :El servidor VPN de WireGuard escuchará en el puerto UDP 51820, que es el predeterminado.
  • Clave pública :La clave pública del cliente VPN, que se puede encontrar en /etc/wireguard/client_public.key archivo en la computadora del cliente.
  • IP permitidas :direcciones IP que el cliente VPN puede usar. En este ejemplo, el cliente solo puede usar la dirección IP 10.10.10.2 dentro del túnel VPN.

Guarde y cierre el archivo. (Para guardar un archivo en el editor de texto Nano, presione Ctrl+O , luego presione Entrar para confirmar. Presiona Ctrl+X para salir.)

Cambie el modo de permiso de archivo para que solo el usuario raíz pueda leer los archivos.

sudo chmod 600 /etc/wireguard/ -R

Cliente

Use un editor de texto de línea de comandos como Nano para crear un archivo de configuración de WireGuard en su computadora Ubuntu local. wg-client0 será el nombre de la interfaz de red.

sudo nano /etc/wireguard/wg-client0.conf

Copie el siguiente texto y péguelo en su archivo de configuración. Debe usar su propia clave privada de cliente y clave pública de servidor.

[Interface]
Address = 10.10.10.2/24
DNS = 10.10.10.1
PrivateKey = cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=

[Peer]
PublicKey = RaoAdsIEIwgV9DHNSubxWVG+nZ1GP/c3OU6A/efBJ0I=
AllowedIPs = 0.0.0.0/0
Endpoint = 12.34.56.78:51820
PersistentKeepalive = 25

donde:

  • Dirección :especifique la dirección IP privada del cliente VPN.
  • DNS :especifique 10.10.10.1 (servidor VPN) como servidor DNS. Se configurará a través de resolvconf dominio. También puede especificar múltiples servidores DNS para redundancia como esta:DNS = 10.10.10.1 8.8.8.8
  • Clave privada :La clave privada del cliente, que se puede encontrar en /etc/wireguard/client_private.key archivo en la computadora del cliente.
  • Clave pública :La clave pública del servidor, que se puede encontrar en /etc/wireguard/server_public.key archivo en el servidor.
  • IP permitidas :0.0.0.0/0 representa todo Internet, lo que significa que todo el tráfico a Internet debe enrutarse a través de la VPN.
  • Punto final :la dirección IP pública y el número de puerto del servidor VPN. Reemplace 12.34.56.78 con la dirección IP pública real de su servidor.
  • Keepalive persistente :envíe un paquete vacío autenticado al par cada 25 segundos para mantener viva la conexión. Si PersistentKeepalive no está habilitado, es posible que el servidor VPN no pueda hacer ping al cliente VPN.

Guarde y cierre el archivo.

Cambie el modo de archivo para que solo el usuario root pueda leer los archivos.

sudo chmod 600 /etc/wireguard/ -R

Paso 4:habilite el reenvío de IP en el servidor

Para que el servidor VPN enrute paquetes entre clientes VPN e Internet, debemos habilitar el reenvío de IP. Editar sysctl.conf archivo.

sudo nano /etc/sysctl.conf

Agregue la siguiente línea al final de este archivo.

net.ipv4.ip_forward = 1

Guarde y cierre el archivo. Luego aplique los cambios con el siguiente comando. La -p La opción cargará la configuración de sysctl desde /etc/sysctl.conf expediente. Este comando conservará nuestros cambios en los reinicios del sistema.

sudo sysctl -p

Paso 5:Configure el enmascaramiento de IP en el servidor

Necesitamos configurar el enmascaramiento de IP en el firewall del servidor, de modo que el servidor se convierta en un enrutador virtual para clientes VPN. Usaré UFW, que es una parte frontal del firewall de iptables. Instale UFW en Ubuntu con:

sudo apt install ufw

Primero, debe permitir el tráfico SSH.

sudo ufw allow 22/tcp

A continuación, busque el nombre de la interfaz de red principal de su servidor.

ip -c a

Como puede ver, se llama enp3s0 en mi servidor Ubuntu.

Para configurar el enmascaramiento de IP, debemos agregar el comando iptables en un archivo de configuración de UFW.

sudo nano /etc/ufw/before.rules

Por defecto, hay algunas reglas para el filter mesa. Agregue las siguientes líneas al final de este archivo. Reemplazar enp3s0 con su propio nombre de interfaz de red.

# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.10.10.0/24 -o enp3s0 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

En el editor de texto Nano, puede ir al final del archivo presionando Ctrl+W , luego presionando Ctrl+V .

Las líneas anteriores agregarán (-A ) una regla al final de POSROUTING cadena de la nat mesa. Conectará su red privada virtual con Internet. Y también oculte su red del mundo exterior. Por lo tanto, Internet solo puede ver la IP de su servidor VPN, pero no puede ver la IP de su cliente VPN, al igual que su enrutador doméstico oculta su red doméstica privada.

Asegúrese de que no haya espacios al principio de cada línea.

De forma predeterminada, UFW prohíbe el reenvío de paquetes. Podemos permitir el reenvío para nuestra red privada. Encuentra el ufw-before-forward cadena en este archivo y agregue las siguientes 3 líneas, que aceptarán el reenvío de paquetes si la IP de origen o de destino está en 10.10.10.0/24 rango.

# allow forwarding for trusted network
-A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT

Guarde y cierre el archivo. Luego habilite UFW.

sudo ufw enable

Si ha habilitado UFW anteriormente, puede usar systemctl para reiniciar UFW.

sudo systemctl restart ufw

Ahora, si lista las reglas en la cadena POSTROUTING de la tabla NAT usando el siguiente comando:

sudo iptables -t nat -L POSTROUTING

Puedes ver la regla Masquerade.

UFW puede tardar algún tiempo en procesar las reglas del cortafuegos. Si la regla de enmascaramiento no aparece, reinicie UFW nuevamente (sudo systemctl restart ufw ).

Paso 6:Instale un solucionador de DNS en el servidor

Dado que especificamos el servidor VPN como el servidor DNS para el cliente, necesitamos ejecutar una resolución de DNS en el servidor VPN. Podemos instalar el servidor DNS bind9.

sudo apt install bind9

Una vez que esté instalado, BIND se iniciará automáticamente. Puede comprobar su estado con:

systemctl status bind9

Salida de muestra:

● named.service - BIND Domain Name Server
     Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-05-17 08:11:26 UTC; 37s ago
       Docs: man:named(8)
   Main PID: 13820 (named)
      Tasks: 5 (limit: 1074)
     Memory: 14.3M
     CGroup: /system.slice/named.service
             └─13820 /usr/sbin/named -f -u bind

Si no se está ejecutando, inícielo con:

sudo systemctl start bind9

Edite el archivo de configuración del servidor BIND DNS.

sudo nano /etc/bind/named.conf.options

Agregue la siguiente línea para permitir que los clientes VPN envíen consultas DNS recursivas.

allow-recursion { 127.0.0.1; 10.10.10.0/24; };

Guarde y cierre el archivo. Reinicie BIND9 para que los cambios surtan efecto.

sudo systemctl restart bind9

Luego, debe ejecutar el siguiente comando para permitir que los clientes VPN se conecten al puerto 53.

sudo ufw insert 1 allow in from 10.10.10.0/24

Paso 7:Abra el puerto WireGuard en el cortafuegos

Ejecute el siguiente comando para abrir el puerto UDP 51820 en el servidor.

sudo ufw allow 51820/udp

Paso 8:Inicie WireGuard

servidor

Ejecute el siguiente comando en el servidor para iniciar WireGuard.

sudo systemctl start [email protected]

Habilite el inicio automático en el momento del arranque del sistema.

sudo systemctl enable [email protected]

Verifique su estado con el siguiente comando. Su estado debe ser active (exited) .

systemctl status [email protected]

Ahora el servidor WireGuard está listo para aceptar conexiones de clientes.

Cliente

Inicie WireGuard.

sudo systemctl start [email protected]

Habilite el inicio automático en el momento del arranque del sistema.

sudo systemctl enable [email protected]

Compruebe su estado:

systemctl status [email protected]

Ahora vaya a este sitio web:https://icanhazip.com/ para verificar su dirección IP pública. Si todo salió bien, debería mostrar la dirección IP pública de su servidor VPN en lugar de la dirección IP pública de su computadora cliente.

También puede ejecutar el siguiente comando para obtener la dirección IP pública actual.

curl https://icanhazip.com

Consejos para solucionar problemas

No puedo hacer ping

Puede hacer ping desde el servidor VPN al cliente VPN (ping 10.10.10.2 ) para ver si el túnel funciona. Si ve el siguiente mensaje de error en el ping,

ping: sendmsg: Required key not available

puede ser que las AllowedIPs el parámetro es incorrecto, como un error tipográfico. Después de corregir el error tipográfico, reinicie tanto el servidor VPN como el cliente VPN.

Otra razón podría ser que olvidaste agregar ListenPort = 51820 en el archivo de configuración del servidor.

La IP pública no cambia

Si el túnel VPN se establece con éxito, pero la dirección IP pública del cliente no cambia, eso se debe a que la regla de enmascaramiento o reenvío en su archivo de configuración de UFW no funciona. Una vez tuve un error tipográfico en /etc/ufw/before.rules archivo, lo que hizo que mi computadora no pudiera navegar por Internet.

Tenga en cuenta que no recomiendo usar SaveConfig=true en el [Interface] sección del archivo de configuración de WireGuard. SaveConfig le dice a WireGuard que guarde la configuración de tiempo de ejecución al apagar. Entonces, si agrega [Peer] adicional en el archivo de configuración y luego reinicie WireGuard, sus configuraciones recién agregadas se sobrescribirán.

Habilitar el registro de depuración en el kernel de Linux

Si usa Linux kernel 5.6+, puede habilitar el registro de depuración para WireGuard con el siguiente comando.

sudo su -
echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control

Luego puede ver los registros de depuración con

sudo dmesg -wH

o

sudo journalctl -kf

Reiniciar

Si su VPN aún no funciona, intente reiniciar el servidor VPN.

sudo systemctl restart [email protected]

Luego detenga el cliente VPN.

sudo systemctl stop [email protected]

Y actualice los paquetes de software en el cliente VPN.

sudo apt update; sudo apt upgrade

A continuación, reinicie el cliente VPN.

sudo shutdown -r now

sudo systemctl start [email protected]

Si su WireGuard VPN solo puede funcionar después de un reinicio, considere agregar un trabajo cron para reiniciar automáticamente el servicio.

sudo crontab -e

Agregue la siguiente línea en este archivo.

@daily systemctl restart [email protected]

Comparación de velocidad entre WireGuard y OpenConnect

En uno de mis servidores VPS, instalé el servidor VPN WireGuard y OpenConnect. La prueba de velocidad es la siguiente. Puede que no te parezca rápido, porque la conexión entre mi computadora y el servidor VPN es muy mala. La velocidad a la que puede llegar depende de la latencia y la tasa de pérdida de paquetes entre el cliente VPN y el servidor VPN.

  • WireGuard es el ganador. Es casi 3 veces más rápido que OpenConnect.
  • OpenConnect sobre TCP es más rápido que OpenConnect sobre UDP. ¿Sorpresa?

WireGuard puede alcanzar 52296 Kbps (alrededor de 51 Mbit/s) al reproducir videos de YouTube.

OpenConnect (TLS con algoritmo TCP BBR) puede alcanzar 16504 Kbps (alrededor de 16 Mbit/s) al reproducir videos de YouTube.

OpenConnect (TLS en UDP) puede alcanzar 12997 Kbps (alrededor de 12,7 Mbit/s) al reproducir videos de YouTube.

Adición de clientes VPN adicionales

WireGuard está diseñado para asociar una dirección IP con un cliente VPN. Para agregar más clientes VPN, debe crear un par de claves privadas/públicas únicas para cada cliente, luego agregar la clave pública de cada cliente VPN en el archivo de configuración del servidor (/etc/wireguard/wg0.conf ) así:

[Interface]
Address = 10.10.10.1/24
PrivateKey = UIFH+XXjJ0g0uAZJ6vPqsbb/o68SYVQdmYJpy/FlGFA=
ListenPort = 51820

[Peer]
PublicKey = 75VNV7HqFh+3QIT5OHZkcjWfbjx8tc6Ck62gZJT/KRA=
AllowedIPs = 10.10.10.2/32

[Peer]
PublicKey = YYh4/1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8=
AllowedIPs = 10.10.10.3/32

[Peer]
PublicKey = EVstHZc6QamzPgefDGPLFEjGyedJk6SZbCJttpzcvC8=
AllowedIPs = 10.10.10.4/32

Cada cliente VPN tendrá una dirección IP privada estática (10.10.10.2, 10.10.10.3, 10.10.10.4, etc.). Reinicie el servidor WireGuard para que los cambios surtan efecto.

sudo systemctl restart [email protected]

Luego agregue la configuración de WireGuard en cada cliente VPN como de costumbre.

Reinicio automático cuando se cae la conexión VPN

A veces, la conexión VPN se interrumpía por varios motivos. Puede ejecutar el siguiente comando para verificar si el cliente VPN puede hacer ping a la dirección IP privada del servidor VPN (10.10.10.1). Si el ping no tiene éxito, se ejecutará el comando de la derecha para reiniciar el cliente VPN. || es el operador OR en Bash. Ejecuta el comando de la derecha solo si el comando de la izquierda devolvió un error.

ping -c9 10.10.10.1 > /dev/null || systemctl restart [email protected]

El ping se hará 9 veces, es decir, 9 segundos. Puedes usar un bucle for en el shell Bash para que todo el comando se ejecute 6 veces, es decir, 54 segundos.

for ((i=1; i<=6; i++)) do (ping -c9 10.10.10.1 > /dev/null || systemctl restart [email protected]) done

Ahora podemos crear un trabajo Cron para automatizar esta tarea. Edite el archivo crontab del usuario raíz en el cliente VPN.

sudo crontab -e

Golpe no es el shell predeterminado en Cron. Puede agregar la siguiente línea al principio del archivo Crontab para que sea el predeterminado.

SHELL=/bin/bash

Luego agregue la siguiente línea al final de este archivo.

* * * * * for ((i=1; i<=6; i++)) do (ping -c9 10.10.10.1 > /dev/null || systemctl restart [email protected]) done

Este trabajo de Cron se ejecutará cada minuto y habrá 6 comprobaciones cada minuto. Guarde y cierre el archivo.

Uso avanzado

Ahora le mostraré cómo usar ruteo de políticas , tunelización dividida y interruptor de eliminación de VPN con WireGuard VPN. Nota que no se recomienda usarlos juntos. Si usa el enrutamiento de políticas, entonces no debe habilitar el túnel dividido o el interruptor de eliminación de VPN, y viceversa. Esta sección es para usuarios avanzados. Si es un principiante de WireGuard y no sabe para qué se utilizan, no siga las instrucciones de esta sección.

Enrutamiento de políticas

De forma predeterminada, todo el tráfico en el cliente VPN se enrutará a través del servidor VPN. A veces, es posible que desee enrutar solo un tipo específico de tráfico, según el protocolo de la capa de transporte y el puerto de destino. Esto se conoce como política de enrutamiento.

El enrutamiento de políticas está configurado en la computadora del cliente y primero debemos detener la conexión VPN.

sudo systemctl stop [email protected]

Luego edite el archivo de configuración del cliente.

sudo nano /etc/wireguard/wg-client0.conf

Por ejemplo, si agrega las siguientes 3 líneas en el [interface] WireGuard creará una tabla de enrutamiento llamada "1234" y agregará la regla ip a la tabla de enrutamiento. En este ejemplo, el tráfico se enrutará a través del servidor VPN solo cuando se use TCP como protocolo de capa de transporte y el puerto de destino sea 25, es decir, cuando la computadora cliente envíe correos electrónicos.

Table = 1234
PostUp = ip rule add ipproto tcp dport 25 table 1234
PreDown = ip rule delete ipproto tcp dport 25 table 1234

Nota :El cliente debe ejecutar Ubuntu 20.04 o superior para configurar el enrutamiento de políticas. La ip La utilidad en Ubuntu 18.04 no es compatible con ipproto y dport argumento.

Guarde y cierre el archivo. Luego inicie el cliente WireGuard.

sudo systemctl start [email protected]

Si desea enrutar el tráfico para los puertos TCP 80 y 443, use la siguiente sintaxis.

Table = 1234
PostUp = ip rule add ipproto tcp dport 80 table 1234; ip rule add ipproto tcp dport 443 table 1234
PreDown = ip rule delete ipproto tcp dport 80 table 1234; ip rule delete ipproto tcp dport 443 table 1234

Recuerde que debe detener la conexión VPN de WireGuard antes de cambiar las reglas de enrutamiento de la política.

También puede especificar un rango de puertos como el siguiente (puerto TCP 26 a puerto TCP 10240).

Table = 1234
PostUp = ip rule add ipproto tcp dport 26-10240 table 1234
PreDown = ip rule delete ipproto tcp dport 26-10240 table 1234

Si desea especificar puertos TCP y UDP, elimine ipproto tcp .

Table = 1234
PostUp = ip rule add dport 26-10240 table 1234
PreDown = ip rule delete dport 26-10240 table 1234

Es posible que desee configurar el cliente VPN para usar el túnel VPN solo cuando el tráfico esté destinado a ciertas direcciones IP. Puedes hacerlo con to opción.

Table = 1234
PostUp = ip rule add to 10.0.0.0/24 table 1234
PreDown = ip rule delete to 10.0.0.0/24 table 1234

Tunelización dividida

De forma predeterminada, todo el tráfico en el cliente VPN se enrutará a través del servidor VPN. Aquí se explica cómo habilitar el túnel dividido, de modo que solo se envíe tráfico a 10.10.10.0/24 El rango de IP se canalizará a través de WireGuard VPN. Esto es útil cuando desea construir una red privada para varios servidores en la nube, porque los clientes VPN se ejecutarán en servidores en la nube y si usa un túnel VPN completo, probablemente perderá la conexión con los servidores en la nube.

Edite el archivo de configuración del cliente.

sudo nano /etc/wireguard/wg-client0.conf

Cambiar

AllowedIPs = 0.0.0.0/0

Para

AllowedIPs = 10.10.10.0/24

Por lo tanto, el tráfico se enrutará a través de VPN solo cuando la dirección de destino esté en el rango de IP 10.10.10.0/24. Guarde y cierre el archivo. Luego reinicie el cliente de WireGuard.

sudo systemctl restart [email protected]

También puede permitir múltiples rangos de IP. Digamos que el servidor VPN también administra el 10.10.20.0/24 red, entonces puede configurar AllowedIPs en el cliente VPN así:

AllowedIPs = 10.10.10.0/24, 10.10.20.0/24

Para que el cliente VPN pueda llegar al 10.10.20.0/24 red a través del servidor VPN y viceversa.

Para agregar una sola dirección IP, use la siguiente sintaxis.

AllowedIPs = 10.10.10.0/24, 10.10.20.0/24, 8.8.8.8/32

Esto le dice al cliente que use el servidor VPN cuando se comunique con 8.8.8.8.

Interruptor de eliminación de VPN

De forma predeterminada, su computadora puede acceder a Internet a través de la puerta de enlace normal cuando se interrumpe la conexión VPN. Es posible que desee habilitar la función de interrupción, que evita el flujo de paquetes sin cifrar a través de interfaces que no son WireGuard.

Detenga el proceso del cliente de WireGuard.

sudo systemctl stop [email protected]

Edite el archivo de configuración del cliente.

sudo nano /etc/wireguard/wg-client0.conf

Agregue las siguientes dos líneas en [interface] sección.

PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

Así:

[Interface]
Address = 10.10.10.2/24
DNS = 10.10.10.1
PrivateKey = cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=
PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

[Peer]
PublicKey = RaoAdsIEIwgV9DHNSubxWVG+nZ1GP/c3OU6A/efBJ0I=
AllowedIPs = 0.0.0.0/0
Endpoint = 12.34.56.78:51820
PersistentKeepalive = 25

Guarde y cierre el archivo. Luego inicie el cliente WireGuard.

sudo systemctl start [email protected]

Múltiples direcciones en la interfaz WireGuard

Una interfaz WireGuard puede tener varias direcciones IP. Por ejemplo, puede tener dos direcciones IP en el cliente VPN.

[Interface]
Address = 10.10.10.2/24
Address = 10.10.10.3/24
....

En este caso, debe permitir varias direcciones IP en el servidor VPN para este cliente en particular, o es posible que el cliente VPN no pueda conectarse al servidor VPN.

[Peer]
...
AllowedIPs = 10.10.10.2/32, 10.10.10.3/32

Puede usar el siguiente comando para verificar que las direcciones IP pertenecen a una interfaz de red.

ip -c a

Nota

  • El ifconfig El comando solo puede mostrar la dirección IP para una interfaz de red.
  • Si configura otra interfaz WireGuard en un nuevo .conf archivo, entonces debe vincularse a un puerto que no sea 51820, o verá el error "Dirección ya en uso".

Ubuntu
  1. Configure un servidor VPN en su PC con Linux

  2. Cómo configurar un servidor OpenVPN en Ubuntu 18.04

  3. Cómo configurar WireGuard VPN en Ubuntu 20.04

  4. Cómo configurar WireGuard VPN en Ubuntu (una guía paso a paso)

  5. Cómo configurar WireGuard en Ubuntu 22.04

Instale OpenLiteSpeed, MariaDB, PHP8.0 en el servidor Ubuntu 20.04/18.04

Cómo instalar el escritorio GNOME en el servidor Linux Ubuntu 20.04/18.04

Cómo instalar FileZilla Server en Ubuntu 20.04/18.04 Linux

Cómo instalar Plex Media Server en Ubuntu 20.04/18.04

Cómo crear su propio servidor VPN IPsec en Linux

¿Cómo configurar un Pptp Vpn en el propio servidor Ubuntu?