VM 子网的路由 IPsec VPN

VM 子网的路由 IPsec VPN

我的物理计算机能够建立一个到我的可访问互联网的 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

相关内容