我正在尝试让我的主机通过 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 真的很棒,非常容易学习,功能非常强大。