
私はこの分野は初心者なので、無知な点をお許しください。他の同様の質問をたくさん調べましたが、役に立ちませんでした。
StrongSwan VPN を設定して、クライアント C がホスト H に接続し、仮想 IP アドレスを割り当てられ、H のネットワークにアクセスできるようにしようとしています。(設定とテスト中の実際的な制限により、C と H は現在同じネットワーク上にあります。実際、これらは同じ物理 PC 上の VM であり、ネットワークはブリッジ モードになっているため、独自の IP アドレスを取得します。)
StrongSwan 5.3.0、Ubuntu 14.04 (C と H の両方) を使用しています。
C 上で実行しipsec up home
、接続が確立されているように見えます。H は C に割り当てられた仮想 IP アドレス (192.168.0.1) に ping を実行でき、C は仮想 IP アドレスに送信される ping を確認できます (tcpdump を使用して確認済み)。
しかし、私が理解する限り、C 上のすべてのトラフィックは、トンネルを経由せず、C のネットワーク接続を介して直接送信されます。3 番目のテスト サーバー (T) で実行し、C から ping を実行すると、C の実際の IP アドレスを持つ要求が表示されます。Cから T にtcpdump ip proto \\icmp
ping を実行した場合も同じです。wget
私の設定は次のとおりです:
# ホスト上の /etc/ipsec.conf (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
走らなければならなかった
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 は、ローカル ネットワーク上の他のマシンと、インターネット上の一部のマシン (すべてではないが、その理由は私にはわからない) を表示できるようになりました。