
Ich bin neu hier – bitte entschuldigen Sie meine Unwissenheit. Ich habe viele andere ähnliche Fragen durchgesehen, aber ohne Erfolg.
Ich versuche, ein StrongSwan-VPN so einzurichten, dass Client C eine Verbindung zu Host H herstellen kann, eine virtuelle IP-Adresse zugewiesen bekommt und auf das Netzwerk von H zugreifen kann. (Aufgrund praktischer Einschränkungen während der Einrichtung und des Tests befinden sich C und H derzeit im selben Netzwerk – tatsächlich sind sie VMs auf demselben physischen PC, wobei sich das Netzwerk im Bridged-Modus befindet, sodass sie ihre eigenen IP-Adressen erhalten.)
Verwende StrongSwan 5.3.0, Ubuntu 14.04 (sowohl auf C als auch auf H).
Ich führe es ipsec up home
auf C aus und die Verbindung scheint hergestellt zu sein. H kann die C zugewiesene virtuelle IP-Adresse (192.168.0.1) anpingen und C kann die Pings sehen, die an seine virtuelle IP-Adresse gehen (bestätigt mit tcpdump).
Soweit ich das jedoch erkennen kann, läuft der gesamte Datenverkehr auf C immer noch direkt über die Netzwerkverbindung von C und nicht durch den Tunnel. Wenn ich tcpdump ip proto \\icmp
einen dritten Testserver (T) ausführe und ihn von C aus anpinge, sehe ich die Anfragen mit der echten IP-Adresse von C. Dasselbe gilt, wenn ich einen wget
von C zu T mache.
Meine Konfiguration lautet wie folgt:
# /etc/ipsec.conf auf dem 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 - auf dem Client (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
Die tatsächliche IP-Adresse von H ist 192.168.196.50. Die tatsächliche IP-Adresse von C ist 192.168.198.74.
Antwort1
Ich musste rennen
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
auf dem Host, um ihn zu veranlassen, den Datenverkehr weiterzuleiten.
Mein Client C kann jetzt andere Maschinen im lokalen Netzwerk und EINIGE (aber nicht alle, was ich nicht verstehe) im Internet sehen.