Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

Al levantar wg0 pierdo la conexión VPN de WireGuard

m3nut

Quiero aprender a configurar y usar WireGuard, y uno de mis principales problemas es que me llevo regular con el inglés.

He intentado seguir varias guías y/o videos, pero soy incapaz de ver donde tengo el problema.

Para empezar comentaré que para el "servidor" utilizo un VPS de OVH (no espero gran cosa, simplemente hacerlo funcionar por aprender).

Instalo WireGuard, creo las claves, genero el fichero wg0.conf, pero a la que intento levantar con wg-quick up wg0, pierdo la conexión por SSH y solo puedo loguear a través del KVM.

El fichero wg0.conf lo tengo así:

[Interface]
Address = 192.168.27.1/24
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ListenPort = 51820

PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Y al lanzar el wg-quick up wg0 se me queda así:

wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.27.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820

Y en ese momento ya no puedo conectar por ssh hasta que conecto usando KVM y echar abajo el interface wg0.

Lo que he entendido es que en el wg0.conf la línea Address en el bloque de Interface, es la IP que quiero que tenga el servidor en la VPN.

Como planes de ciego, lo que he probado es crear un interfaz virtual en /etc/networks/interfaces:

auto eth0:1
iface eth0:1 inet static
address 192.168.27.1
netmask 255.255.255.0
broadcast 192.168.27.255

Agradeceré cualquier pista que me ilumine.

vukits
ip -4 route add 0.0.0.0/0 dev wg0 table 51820

Es que con esta instrucción le estás diciendo al servidor que enrute todo por WireGuard,… ya me dirás cómo vas a acceder a él, si los paquetes de salida salen por wg0 :P

la ruta 0.0.0.0/0 significa 'para todos los destinos', básicamente.

Toca aprender un poco derutas internet (yo tuve que aprender en su día)

🗨️ 3
m3nut

Gracias por tu respuesta… revisaré el enlace que me propones sobre las rutas, siempre va bien tener estas cosas a mano.

Aunque entiendo lo que me dices, que está enrutando todo por wg0, no sé porqué hace eso… ya que en elfichero de wg0.conf no soy consciente de añadir ningún tipo de ruta. ¿o es lo que estoy haciendo con las lineas PostUp y PostDown y no me entero?

El fichero wg0.conf lo tengo así:

[Interface]

Address = 192.168.27.1/24

PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ListenPort = 51820

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t NAT -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t NAT -D POSTROUTING -o eth0 -j MASQUERADE

🗨️ 1
vukits

yo suelo usar OpenVPN. nunca he tocado Wireguard.

Me temo de que no puedo decirte por qué añade esta ruta 0.0.0.0.

en todo caso, para pruebas, te recomiendo , en tu ordenador, montarte un pequeño laboratorio de redes con VirtualBox, p.e.

rbetancor
1

IP -4 route add 0.0.0.0/0 dev wg0 table 51820

Es que con esta instrucción le estás diciendo al servidor que enrute todo por WireGuard

Nop, con esa línea no le está diciendo que enrute todo por el WireGuard, le está diciendo al kernel que todo lo que entre en la tabla 51820 se enrute por el wg0. NO ES LO MISMO.

El problema es la siguiente línea:

IP -4 rule add not fwmark 51820 table 51820

Esa es la línea que la está liando parda.

bancho

Tienes un [Peer] con AllowedIPs=0.0.0.0/0?

Si es así es por esto. Por defecto wg-quick añade rutas para las IPs permitidas que especifiques en los peers, al añadir 0.0.0.0/0 intenta enrutar todo internet a través de ese peer que creo que es lo contrario de lo que estás intentando hacer.

Tendrás que poner, en el servidor. sólo la IP que hayas elegido para e cliente ahí (y con /32 para que sea sólo esa IP, en tu caso 192.168.27.x/32), porque si no está intentando hacer la conexión "al revés" por lo que pierdes la red. En el cliente sí que tendrás que poner el peer del servidor con 0.0.0.0/0.

🗨️ 2
m3nut

Mmmm Gracias… lo probaré

🗨️ 1
Magonos

Si te sirve de algo, yo utilicé el maravilloso script pivpn.io, luego ya he ido entendiendo los ficheros de configuración, la verdad que estoy alucinando con el rendimiento vs OpenVPN…facilmente 5 veces mas rápido…

Un saludo,

PD: El script vale para cualquier debian, no solo para rpi