Enrute todo el tráfico a través de StrongSwan VPN

Enrute todo el tráfico a través de StrongSwan VPN

Soy nuevo en esto, disculpen mi ignorancia. He revisado muchas otras preguntas similares sin éxito.

Intentando configurar una VPN StrongSwan de modo que el cliente C pueda conectarse al host H, se le asigne una dirección IP virtual y acceder a la red de H. (Debido a limitaciones prácticas mientras configuro y pruebo, C y H están actualmente en la misma red; de hecho, son máquinas virtuales en la misma PC física, con la red en modo puente, por lo que obtienen sus propias direcciones IP).

Usando StrongSwan 5.3.0, Ubuntu 14.04 (tanto en C como en H).

Ejecuto ipsec up homeC y la conexión parece estar establecida. H puede hacer ping a la dirección IP virtual asignada a C (192.168.0.1) y C puede ver los pings que van a su dirección IP virtual (confirmada usando tcpdump).

Sin embargo, hasta donde puedo entender, todo el tráfico en C todavía sale directamente a través de la conexión de red de C, no a través del túnel; si ejecuto tcpdump ip proto \\icmpun tercer servidor de prueba (T) y hago ping desde C, vea las solicitudes con la dirección IP real de C. Lo mismo ocurre si hago un wgetde C a T.

Mi configuración es la siguiente:

# /etc/ipsec.conf en el host (H)

config setup

conn %default
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyingtries=1
    keyexchange=ikev2

conn rw
    left=192.168.196.50
    leftcert=moonCert.pem
    [email protected]
    leftfirewall=yes
    right=%any
    rightsourceip=192.168.0.0/16
    auto=add

-

# /etc/ipsec.conf - en el cliente (C)

 config setup

 conn %default
     ikelifetime=60m
    keylife=20m
     rekeymargin=3m
     keyingtries=1
     keyexchange=ikev2

 conn home
     left=192.168.198.74
     leftsourceip=%config
     leftcert=carolCert.pem
     [email protected]
     leftfirewall=yes
     right=192.168.196.50
     [email protected]
     auto=add

La dirección IP real de H es 192.168.196.50. La dirección IP real de C es 192.168.198.74.

Respuesta1

necesitaba correr

sudo sysctl net.ipv6.conf.all.forwarding=1
sudo sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -j MASQUERADE

en el host para hacer que enrute el tráfico.

Mi cliente C ahora puede ver otras máquinas en la red local y ALGUNAS (pero no todas, lo cual no entiendo) en Internet.

información relacionada