Tengo dos lugares distantes cada uno con una IP pública y quiero hacer la red LAN de estos lugares como si fueran uno solo. Es decir, las máquinas del lugar A pueden comunicarse con las máquinas del lugar B y las del lugar B con las del lugar A.
En el lugar A (10.0.2.1) tengo un ASUS AC 1200g+ y una Raspberry pi (10.0.2.60) con OpenVPN Server. Los nuevos clientes permanecen en la interfaz tun0 (10.8.0.1). En este momento, el Cliente (Lugar B) puede comunicarse con la LAN del Lugar A, solo el tráfico con destino 10.0.1.0/24 se redirige al lado del servidor.
Ahora quiero que las máquinas en el Lugar A (Servidor) puedan comunicarse con la LAN del Lugar B. Coloco una ruta en mi enrutador en la que todas las solicitudes de destino con 10.0.1.0/24 se redirigen al servidor VPN Raspberry Pi, pero el servidor no sabe qué hacer con ese tráfico.
En el Lugar B (10.0.1.1) tengo un ASUS AC86U con firmware ASUS Merlin y activo el cliente OpenVPN con la opción de habilitar "Inbound Firewall".
Respuesta1
Tengo una configuración similar en la que Raspberry Pi es el cliente, pero eso no debería importar demasiado. Descargo de responsabilidad: no es lo más fácil de configurar.
Estoy usando este /etc/iptables/iptables.rules
archivo para el tráfico NAT desde conexiones OpenVPN (generalmente tun0
, pero tun+
cubre todas) hacia las redes locales:
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i eth+ -o tun+ -j ACCEPT
-A FORWARD -i tun+ -o eth+ -j ACCEPT
COMMIT
La configuración de OpenVPN requiere el llamadoconfiguración de cliente a cliente. Estas dos líneas en los servidores OpenVPN-config habilitan la función:
# use ccd-folder (per host configs)
client-to-client
# routing to office lan:
client-config-dir ccd
Debe client-config-dir
crearse manualmente debajo de la /etc/openvpn/...
ruta donde está su configuración. Dentro de esa carpeta, puede crear archivos de texto por host. El nombre del archivo es importante: verifique cómo OpenVPN llama a su cliente en el registro del sistema (por ejemplo, con journalctl -xef --unit openvpn-server@somehost
o en el openvpn-status.txt
archivo). El contenido del archivo es simple:
ifconfig-push 10.10.99.18 255.255.255.255
iroute 192.168.0.0 255.255.0.0
Lo configuraría para obtener la misma IP cada vez que se conecte ( 10.10.99.18
) y configuraría el servidor VPN para enrutar internamente el tráfico 192.168.0.0/16
al cliente con el nombre de este archivo y la dirección IP. Eso hace comprensible por qué todavía no tenemos una conexión de red válida: es decir, porque el sistema host del servidor VPN no sabe que el túnel VPN se puede utilizar para enrutar el tráfico para esa red ( netstat -rn4
). Entonces tenemos que configurar el servidor VPN nuevamente y agregar:
route 192.168.0.0 255.255.0.0
push "route 192.168.0.0 255.255.0.0"
para decirle al servidor que debe enrutar el tráfico 192.168.0.0/16
y todos los clientes conectados al servidor también deben ser informados sobre la ruta: la ruta se envía a los clientes.
Para mi configuración utilicé el enlace de arriba, pero mientras escribía esta respuesta encontré dos enlaces interesantes sobre el tema:
- https://community.openvpn.net/openvpn/wiki/RoutedLans
- https://forums.openvpn.net/viewtopic.php?t=26839
buena suerte :)