我是新手,请原谅我的无知。我查看过许多其他类似的问题,但无济于事。
尝试设置 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执行 ping 操作,情况也是如此。
我的配置如下:
# 主机 (H) 上的 /etc/ipsec.conf
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 现在可以看到本地网络上的其他机器,以及互联网上的部分机器(但不是全部,我不明白)。