BandaAncha.eu

Comunidad de usuarios
de fibra, móvil y ADSL

Sin acceso a internet cuando uso WireGuard en Raspberry Pi

Solospam

Tengo una Raspberry Pi 4 corriendo con una versión de WireGuard, que técnicamente funciona pero no me da salida a internet.

La raspi está en la oficina con la IP 172.16.1.70, y yo estoy en casa con la IP 192.168.1.11

Cuando configuro y conecto mi user WireGuard en PC me da "handshake", envía y recibe datos pero no me deja hacer un ping por ejemplo al Cloudflare.

Ping

En cambio me deja acceder mediante VNC a la raspi y por supuesto la raspi tiene acceso a internet.

Con respecto al router es un Mikrotik 4011 y tiene abierto el puerto por defecto de WireGuard, por eso no entiendo que puede estar pasando para no tener acceso a internet mediante la VPN.

imagen.webp

Quedo a la espera de vuestras impresiones al respecto.

BocaDePez
BocaDePez

La raspberry tiene activado el ip_forward? (sysctl -w net.ipv4.ip_forward=1 o lo metes en /etc/sysctl.conf para que no se pierde al reiniciar).

🗨️ 1
Solospam

Si, está activo

Solospam

La VPN estuvo funcionando hasta hace un par de semanas, ahora me funciona parcialmente ya que tengo acceso a la empresa pero no a internet

pepejil

Si quieres tunelizar el tráfico, debes permitir ip_forwarding, activar NAT con masquerade y configurar el servidor para enrutar todo el tráfico a través de la interface donde tiene salida.

🗨️ 1
Solospam

La VPN llevaba 2 meses funcionando, por una actualización de sistema dejó de funcionar; ahora me permite acceso desde mi casa a la oficina, pero no me da salida a internet

BocaDePez
BocaDePez

Supongo que estará accesible el puerto de wireguard en la RPI desde fuera, no?

🗨️ 1
Solospam

Si no lo estuviera entiendo que no tendría acceso desde casa.

vukits

hay dos cosas que son de perogrullo, pero necesito que te asegures de ellas:

  • el rango LAN de tu casa debería ser diferente del rango LAN de la red remota a la que accedes (que no sea 192.168.1.* en tu casa, y lo mismo en la oficina)
  • que puedas hacer ping al router de salida de internet de la empresa …

y como siempre… 'traceroute' es tu amigo…

🗨️ 3
Solospam

En casa el dchp es 192.168.1.1/24

En la oficina es 172.16.1.1/24

Si puedo hacer ping y tracert a la DDNS de la empresa

En IPTABLES tengo entre otras estas reglas

imagen.webp
🗨️ 2
vukits

En la oficina es 172.16.1.1/24

si el enrutado de la raspberry está bien, deberías poder hacer ping a 172.16.1.1 …

sino, toca revisar las rutas que tiene la raspberry

🗨️ 1
Solospam

La raspi hace ping al router de la oficina, al router de casa y al usuario wireguard

imagen.webp

Lo que no hace es que el usuario wireguard pueda buscar en Google, por ejemplo

apocalypse

Comprueba lo que te dicen. Que la interfaz de salida a internet de la Raspberry sea la única puerta de enlace predeterminada, que tenga activado el NAT Masquerading y que desde la interfaz de WireGuard se permita el tráfico (Forwarding) a la que da salida a internet.

🗨️ 3
Solospam

Que la interfaz de salida a internet de la Raspberry sea la única puerta de enlace predeterminada

La raspi sale en la 192.168.1.70 y tengo el NAT del mikrotik apuntando al puerto de esa dirección para abirlo

que tenga activado el NAT Masquerading

Eso no se como mirarlo; si es poner "net.ipv4.ip_forward=1" en /etc/sysctl.conf si lo tengo

desde la interfaz de WireGuard se permita el tráfico (Forwarding) a la que da salida a internet.

Si puedo conectarme desde casa a la oficina es porque permite tráfico, de todas formas en IPTABLES se contempla Wireguard como dije más arriba

🗨️ 2
apocalypse

La raspi sale en la 192.168.1.70 y tengo el NAT del mikrotik apuntando al puerto de esa dirección para abirlo

Me refiero que no haya ninguna Gateway más configurada que la del Mikrotik.

Eso no se como mirarlo; si es poner "net.ipv4.ip_forward=1" en /etc/sysctl.conf si lo tengo

No basta con eso (suponiendo que la acción por defecto sea reject o drop), tienes que crear una regla iptables que permita la redirección del tráfico de una interfaz a otra:

iptables -A FORWARD -i interfaz_wireguard -o interfaz_internet(mikrotik) -j ACCEPT

Y para activar el masquerade (NAT) en la interfaz de la oficina (salida a internet): iptables -t NAT -A POSTROUTING -o interfaz_internet(mikrotik) -j MASQUERADE

🗨️ 1
Solospam

Tras poner lo que me dijiste me sale esto

imagen.webp

No encuentra la tabla NAT, será ese el problema? iptables -t NAT -L -n arroja:

imagen.webp
Solospam
2

Solucionado. Aplicando el comando netstat -rn veo las puertas de enlace y salidas que tiene la raspi:

Comando netstat

Veo que por alguna razón hay dos puertas de enlace, borro la incorrecta con el comando route delete default gw 192.16.1.1 eth0 y ahora WireGuard funciona como debe.

Gracias a todos los que colaborasteis, vuestra ayuda me ha ayudado a tirar de determinados hilos hasta localizar el problema y solventarlo

Muchas gracias, en especial a @vukits y a @apocalypse