我的物理计算机能够建立一个到我的可访问互联网的 VPS 的 IPsec 隧道(使用 Strongswan),以便我的物理计算机的互联网流量通过我的 VPS。
我还尝试在物理机上运行的虚拟机中设置 Strongswan,并取得成功。正如预期的那样,我的虚拟机可以通过 VPS 访问互联网。
我想做的是让 Strongswan 在我的物理计算机上运行,这样我的所有 VM(在 192.168.122.0/24 中)的流量都会通过我的 VPS。我认为这应该可以通过站点到站点配置来实现(示例如下:https://www.strongswan.org/testing/testresults/ikev2/net2net-cert/),但我无法让它工作。我不确定我的问题出在 Strongswan 配置上,还是我的 VM 网络配置上,或者两者兼而有之……
我的物理机上的 ipsec.conf:
config setup
charondebug="ike 2, cfg 2"
conn kvm-test
rightsubnet=0.0.0.0/0
keyexchange=ikev2
ike=aes256gcm128-sha512-modp8192!
esp=aes256gcm128-sha512-modp8192!
leftcert=client.pem
auto=add
right=123.123.123.123 # not my VPS's actual IP
rightcert=vpn_server.pem
leftsubnet=192.168.122.0/24
left=192.168.1.2
我的 VPS 上的 ipsec.conf:
config setup
# strictcrlpolicy=yes
# uniqueids = no
conn %default
keyexchange=ikev2
leftfirewall=yes
auto=add
leftsubnet=0.0.0.0/0
left=123.123.123.123 # not my VPS's actual IP
ike=aes256gcm128-sha512-modp8192!
esp=aes256gcm128-sha512-modp8192!
conn kvm-test
leftcert=vpn_server.pem
rightcert=client.pem
rightsubnet=192.168.122.0/24
使用此配置,连接已成功建立,但我的虚拟机的流量不会通过它。我应该注意,它ip route show table 220
没有显示任何内容,这与上面链接的示例不同,我不确定我应该在那里放什么……ip route add table 220 default via 123.123.123.123 proto static
不起作用。有什么想法吗?
答案1
如果您的虚拟化解决方案将来自 192.168.122.0/24 的流量通过 NAT 转至主机的物理 IP (192.168.1.2),则您需要避免这种情况并添加一条规则以接受与 IPsec 策略匹配的流量。例如(更多细节):
iptables -t nat -I POSTROUTING -s 192.168.122.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT