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".