web-dev-qa-db-ja.com

すべてのトラフィックをStrongSwanVPN経由でルーティングします

私はこれに不慣れです-私の無知を許してください。私は他の多くの同様の質問を調べましたが無駄でした。

クライアントCがホストHに接続し、仮想IPアドレスを割り当て、HのネットワークにアクセスできるようにStrongSwanVPNをセットアップしようとしています。 (セットアップとテスト中の実際的な制限により、CとHは現在同じネットワーク上にあります。実際、これらは同じ物理PC上のVMであり、ネットワークはブリッジモードであるため、独自のIPアドレスを取得します。)

StrongSwan 5.3.0、Ubuntu 14.04(CとHの両方)を使用します。

Cでipsec up homeを実行すると、接続が確立されているように見えます。 HはC(192.168.0.1)に割り当てられた仮想IPアドレスにpingを実行でき、Cはその仮想IPアドレスに送信されるpingを確認できます(tcpdumpを使用して確認)。

ただし、私が理解できる限り、Cのすべてのトラフィックは、トンネルではなく、Cのネットワーク接続を介して直接送信されます。3番目のテスト、サーバー(T)、およびpingでtcpdump ip proto \\icmpを実行した場合Cからの場合、Cの実際のIPアドレスでリクエストが表示されます。 CからTにwgetを実行した場合も、同じことが言えます。

私の設定は次のとおりです。

#/ etc/ipsec.conf on the 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-クライアント上(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

Hの実際のIPアドレスは192.168.196.50です。 Cの実際のIPアドレスは192.168.198.74です。

1
Mark Smith

私は走る必要がありました

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

ホスト上でトラフィックをルーティングします。

クライアントCは、ローカルネットワーク上の他のマシンと、インターネット上の一部(すべてではありませんが、私にはわかりません)を見ることができます。

1
Mark Smith