Tengo un problema muy específico, construir un punto final VPN de Linux (con una puerta de enlace VPN externa), que debería enrutar ciertas redes a través del túnel, otras a través de la puerta de enlace predeterminada.
La VPN de Linux debe hacer un NAT en las conexiones salientes para los pares VPN.

La configuración es la siguiente:
Internet gateway LAN 192.168.25.1/24
VPN Gateway LAN 10.45.99.2/24 
(Túnel VPN 10.45.99.1 a la red 87.115.17.40/29, conexión separada a Internet)

Linux VPN Router
   eth0 192.168.25.71/24
   eth0: 503 10.45.99.1/24
     Predeterminado 192.168.25.1
     ruta a 87.115.17.40/29 a través de 10.45.99.2
     (send_redirects deshabilitado, ip_forward habilitado)
Clientes Linux (múltiples):
   eth0 192.168.25.x / 24
   Predeterminado 192.168.25.1
   ruta a 87.115.17.40/29 a través de 192.168.25.71

Hacer ping a las máquinas a través del túnel desde el enrutador VPN está funcionando.

¡Ahora quiero establecer una ruta de mis clientes a través de la puerta de enlace VPN y el paquete del cliente se enruta a 192.168.25.1! La salida de traceroute muestra que los paquetes se enrutan a 192.168.25.71, pero luego a 192.168.25.1.

¡Entonces la ruta no se respeta en adelante!

IPTables y enrutamiento:

ip route show
87.115.17.40/29 a través de 10.45.99.2 dev eth0 
10.45.99.0/24 dev eth0 proto kernel scope link src 10.45.99.1 
192.168.25.0/24 dev eth0 proto kernel scope link src 192.168.25.71 
predeterminado a través de 192.168.25.1 dev eth0 

iptables -A ENTRADA -i eth0: 503 -j RECHAZAR
iptables -t nat -A POSTROUTING -o eth0: 503 -j MASQUERADE
iptables -A ADELANTE -i eth0: 503 -m estado - estado RELACIONADO, ESTABLECIDO -j ACEPTAR
iptables -A ADELANTE -s 192.168.25.0/24 -o eth0: 503 -j ACEPTAR


Entonces, ¿qué hay de malo en mi configuración? La ruta se elige correctamente desde localhost, pero todos los clientes se reenvían a Internet GW.

gracias por ayudar, Marcus

20121025: Al menos encontró un problema: MASQUERADE siempre se enmascarará como la IP principal de la interfaz. Cuando uso SNAT, puedo asignar la dirección para NAT (que puede ser la dirección de alias). El problema con los paquetes no se enruta persiste. Estoy trabajando con Debian 6.

Probé la misma configuración con SNAT en un Ubuntu 12.04 virtual y finalmente lo enrute. ¡Entonces parece haber un problema con Debian, o alguna configuración que me perdí!

La configuración de trabajo es (en el servidor Ubuntu 12.04):

iptables -t nat -A POSTROUTING -d 87.115.17.40/29 -j SNAT --to-source = 10.45.99.1

Así que tenemos que reinstalar nuestros servidores, ¡no esperábamos que esto pudiera ser un problema de Debian!
Tal vez en algún lugar entre el kernel (2.6.32 -> 3.2.0) y iptables (1.4.8 -> 1.4.12).

MRHaarmann
fuente