通过 KVM Guest 路由主机流量

通过 KVM Guest 路由主机流量

我正在尝试让我的主机通过 KVM 客户机(Untangle)路由其流量,但我对基本 IP 表规则没有任何运气。

现在,我已将所有流量由主机在 eth2 上接收,并将所有流量转发到 eth1。Eth1 桥接到 br1,Untangle 将其视为 WAN。Untangle 桥接到 br0。

一切运行正常。我创建的任何新客户都将通过 Untangle 进行路由,并且插入 eth0 的路由器也将通过 Untangle 进行路由。

如何让主机通过 br0/eth0 进行路由?

以下是我的当前路由输出,流量通过主机上的 eth2:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         76.xx.xx.x      0.0.0.0         UG    0      0        0 eth2
10.10.10.0      *               255.255.255.0   U     0      0        0 br1
76.xxx.xx.x     *               255.255.248.0   U     0      0        0 eth2
link-local      *               255.255.0.0     U     1000   0        0 br0
192.168.2.0     *               255.255.255.0   U     0      0        0 br0
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0

答案1

我知道这已经很老套了,但我以前用不同的方法完成过。

首先,我会在网桥上设置 eth2(称为 br_wan),而不是在主机上配置它(这样主机就不会看到任何到达该端口或网桥的流量)。与客户机共享 br_wan 并将其配置为 wan 端口。无需让流量流向主机,只需将其转发给客户机即可。此外,如果您通过主机路由 wan,您可能会损失很多,Untangle 将不知道公共 IP 地址,因为 DHCP 客户端将在主机上运行,​​这可能是您不想要的。而且它的安全性稍差一些。

创建另一个桥接器,您可以将其命名为 br_net,这是 Untangle 上的接口,所有其他来宾和主机都将连接到该接口。它不需要连接到物理接口,但如果您愿意也可以这样做。

配置主机从 br_net 接口获取其 IP,并在该接口上配置网关,以便主机将具有通过 br_net 接口的默认路由。

我必须说,我一开始的解决方案就是这样的,但最终选择在 Shorewall 的帮助下处理主机上的所有防火墙。就防火墙而言,我现在的规则是,如果设置不会转发数据包,则使用 UFW;如果设置会转发数据包,则使用 Shorewall。Shorewall 真的很棒,非常容易学习,功能非常强大。

相关内容