通过 IPSec 隧道转发 virbr0(VM)流量

通过 IPSec 隧道转发 virbr0(VM)流量

我有一个virbr0由 libvirt 创建的界面

inet 10.1.2.1  netmask 255.255.255.0  broadcast 10.1.2.255

有一个活动的 IPSec 隧道,

leftsubnet=10.1.2.0/24
rightsubnet=192.168.160.0/20

虚拟机能够到达 192.168.160.0/20,但现在我想将虚拟机的所有流量重定向到 192.168.168.254,而不是使用机器的默认网关。

我想我可以使用这样的东西:

iptables -t nat -A PREROUTING -i virbr0 -d 0.0.0.0/0 -j DNAT --to-destination 192.168.168.254

但那不起作用。我是否遗漏了什么,或者我使用了错误的方法?

谢谢!

答案1

我在这里假设您的虚拟机在10.1.2.0/24子网内有 IP,否则它不起作用的原因就很明显了。

假设您的虚拟机想要打开与网站 example.org 的连接。通过上述语句,您将此连接尝试重定向到子网内的路由器192.168.160.0/20,而该路由器显然不知道网站 example.org。

首先,您需要为此进行路由,而不是 DNAT(以保留必须到达的 IP!)。其次,您显然误解了 IPsec 隧道的工作原理:只有约定的子网才允许通过 IPsec 隧道。这意味着:尝试打开网站 example.org 的 VM 打开与其解析的 IP 的连接,假设这是 IP 1.2.3.4。连接来自左侧,因此该 IP 必须位于右侧子网之一内。由于不在,因此它无法通过 IPsec 隧道。

如果您想通过隧道路由所有流量,则需要不同类型的 VPN!

相关内容