强制来自同一网桥上的服务器的所有流量通过路由器接口

强制来自同一网桥上的服务器的所有流量通过路由器接口

我有一座桥,192.168.5.0/24 网络中的所有主机都连接到它。它们都通过辅助接口 eth1 连接到此桥。
我有一个路由器,它通过 192.168.5.1 将此桥连接到我网络上的其他路由器。
在我的路由器上,我能够使用 iptables 过滤往返于此网络和其他网络的所有流量,但我无法过滤同一网络 (192.168.5.0) 上主机之间的任何流量。
我相信这是因为,例如,如果 192.168.5.2 ping 192.168.5.3,流量将直接进入桥接器,而不会通过我的路由器网关 192.168.5.1。
是否可以强制同一子网的所有流量首先进入路由器?
以下是我的静态路由的摘录:

default         192.168.3.1     0.0.0.0         UG    0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
192.168.3.0     *               255.255.255.0   U     0      0        0 eth0
192.168.5.0     *               255.255.255.0   U     0      0        0 eth1

以下是从我的 ifcfg-ethx 文件 (CentOS) 摘录的内容:

DEVICE="eth0"
BOOTPROTO="static"
BROADCAST="192.168.3.255"
GATEWAY="192.168.3.1"
IPADDR="192.168.3.2"
NETMASK="255.255.255.0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"

DEVICE="eth1"
BOOTPROTO="static"
BROADCAST="192.168.5.255"
IPADDR="192.168.5.2"
NETMASK="255.255.255.0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"

如果我没记错的话,应该编辑我的静态路由,特别是上面代码片段的最后一行,为 192.168.5.0/24 网络指定网关 192.168.5.1。
我尝试将 GATEWAY="192.168.5.1" 添加到 ifcfg-eth1,这会创建一个以该接口为默认接口的路由表。我如何才能将 3.1 保留为主网关,同时强制所有来自 192.168.5.0/24 地址空间的流量通过 192.168.5.1?

答案1

在桥接主机上设置一些 iptables 规则。这比尝试将流量路由到不该去的地方要好得多。请记住,尝试访问同一网络上的对等方的主机并不关心路由器。源将发出 ARP 请求,找出目标礼物的以太网地址并直接向其发送数据包。这里的直接意味着桥接主机,然后使用其 ARP 表将数据包转发到目标。所以这里没有路由的概念。

也许您可以删除内核在配置 eth1 时在主机上添加的自然路由,然后在 eth1 上向您的网关添加特定路由,然后向 eth1 网络(192.168.5.0/24)添加另一条路由,指定您的路由器作为网关...但只有这个描述才能让您明白它是多么糟糕。

确实,你应该更喜欢在网桥上使用 iptables

相关内容