Conseguir que el cliente openvpn reenvíe todo el tráfico a través del servidor

Conseguir que el cliente openvpn reenvíe todo el tráfico a través del servidor

Estoy intentando configurar un servidor y un cliente openvpn, con todo el tráfico del cliente enrutado a través del servidor. Actualmente puedo acceder al servidor a través del cliente, pero cuando habilito 'push "redirect-gateway def1"' en el servidor, el cliente pierde toda capacidad de conectarse a Internet, VPN o de otro modo. Además, ya no puede conectarse al servidor, aunque la conectividad LAN sigue siendo buena. El archivo de configuración de mi servidor es:

local ***.***

port 1194

proto tcp

dev tun

ca ca.crt
cert server.crt
key server.key

dh dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway local def1"

keepalive 10 120

comp-lzo

persist-key
persist-tun

status openvpn-status.log

verb 3

y aquí está el cliente:

client

dev tun

proto tcp

remote ***.*** 1194

resolv-retry infinite

nobind

persist-key
persist-tun

ca ca.crt
cert laptop.crt
key laptop.key

ns-cert-type server

comp-lzo

verb 3

En el servidor, habilité el reenvío de IP y habilité el enrutamiento a través de iptables:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

pero el cliente todavía no puede conectarse a nada en la VPN o en Internet.

Respuesta1

Como referencia, la sección correspondiente del CÓMO esaquí, aunque sospecho que lo has seguido.

Lo primero que intentaría es eliminar el 'local', es decir, el comando debería ser

push "redirect-gateway def1"

y no

push "redirect-gateway local def1"

La bandera local sólo funciona si todos sus clientes están en la misma subred.

Un par de cosas más a tener en cuenta son que el tráfico DNS se enruta a través de la VPN, por lo que no podrás resolver direcciones a menos que hayas solucionado eso. DHCP también se puede reenviar, aunque no parece que eso deba suceder en su caso, ya que está utilizando una VPN enrutada, no un puente, pero de todos modos podría valer la pena verificarlo.

Respuesta2

Si está "enviando" una nueva puerta de enlace al cliente, entonces también necesitará enviar algunas rutas, en particular la ruta a la subred donde reside esa puerta de enlace. Eso le dará acceso a Internet a través de la VPN. Si la red donde reside la puerta de enlace es diferente de aquella donde reside el servidor VPN, entonces también necesitará rutas adicionales para que el cliente pueda acceder a estas otras redes. Además, es posible que también desee enviar servidores DNS al cliente, porque de lo contrario el cliente no podrá resolver los nombres de ninguno de los objetivos en la red a la que ahora está conectado.

Aquí hay un extracto de nuestro archivo de configuración del servidor OpenVPN:

# Empujar la ruta al cliente para vincularlo a nuestro local
# punto final virtual.
#
presione "ruta 10.180.0.1 255.255.255.255"

# Empujar cualquier ruta que el cliente necesite para ingresar
# a la red local.
#
presione "ruta 10.171.0.0 255.255.0.0"
presione "ruta 10.172.0.0 255.255.0.0"
presione "ruta 10.173.0.0 255.255.0.0"
presione "ruta 10.174.0.0 255.255.0.0"
presione "ruta 10.175.0.0 255.255.0.0"
presione "ruta 10.176.0.0 255.255.0.0"
presione "ruta 10.177.0.0 255.255.0.0"
presione "ruta 10.181.0.0 255.255.0.0"
presione "ruta 10.182.0.0 255.255.0.0"
presione "ruta 192.168.61.0 255.255.255.0"

# Enviar opciones de DHCP a clientes de Windows.
#
presione "opción-dhcp DOMINIO nuestro-dominio-interno.com"
presione "opción dhcp DNS 10.abc"
presione "opción dhcp WINS 10.bcd"

Todas estas son redes internas y ni siquiera implementamos una nueva puerta de enlace (como la mayoría de nuestros usuarios se conectan desde lejos, es mejor que accedan a Internet a través de su puerta de enlace predeterminada y nosotros no somos fanáticos del control).

Respuesta3

En realidad, el problema fue que NAT no estaba configurado correctamente. Se solucionó y la VPN está funcionando ahora.

información relacionada