
我對此很陌生-請原諒我的無知。我瀏覽了許多其他類似的問題但無濟於事。
嘗試設定 StrongSwan VPN,以便用戶端 C 可以連接到主機 H、分配虛擬 IP 位址並存取 H 的網路。 (由於我設定和測試時的實際限制,C和H目前位於同一網路上 - 事實上它們是同一台實體PC上的虛擬機,網路處於橋接模式,因此它們擁有自己的IP位址。)
使用 StrongSwan 5.3.0、Ubuntu 14.04(C 和 H 上)。
我ipsec up home
在 C 上運行並且連接似乎已建立。 H 可以 ping 指派給 C 的虛擬 IP 位址 (192.168.0.1),而 C 可以看到 ping 到其虛擬 IP 位址(使用 tcpdump 確認)。
然而,據我所知,C 上的所有流量仍然直接通過 C 的網路連接而不是通過隧道 - 如果我tcpdump ip proto \\icmp
在第三個測試伺服器 (T) 上運行,並從 C ping 它,我查看帶有C真實IP位址的請求。如果我wget
從 C 到 T也是如此。
我的配置如下:
# 主機上的 /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 現在可以看到本地網路上的其他機器,以及網路上的一些(但不是全部,我不明白)機器。