
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 home
C 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 \\icmp
un 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 wget
de 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.