Leiten Sie den gesamten Datenverkehr über StrongSwan VPN weiter

Leiten Sie den gesamten Datenverkehr über StrongSwan VPN weiter

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 homeauf 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 \\icmpeinen 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 wgetvon 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.

verwandte Informationen