如何使用 iptables 或 IFB 标记设备传入流量?

如何使用 iptables 或 IFB 标记设备传入流量?

我正在尝试使用 iptables 根据数据包到达的设备(而不是其原始 IP 地址或端口等)来标记传入的数据包,但还没有找到让其工作的方法。

具体来说,我可以设置一个过滤器来计算每个传入的数据包(并且运行正常):

iptables -F -t mangle
iptables -A PREROUTING -t mangle -j MARK --set-mark 1
iptables -nvL

Chain PREROUTING (policy ACCEPT 185 packets, 41507 bytes)
 pkts bytes target     prot opt in     out     source               destination
  185 41507 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            MARK set 0x1

但是,仅捕获来自 eth2 的数据包的过滤器似乎从未被触发(尽管所有流量都来自那里):

iptables -F -t mangle
iptables -A PREROUTING -t mangle -i eth2 -j MARK --set-mark 1
iptables -nvL

Chain PREROUTING (policy ACCEPT 101 packets, 19288 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MARK       all  --  eth2   *       0.0.0.0/0            0.0.0.0/0            MARK set 0x1

从在线指南等来看,这种行为很可能是 iptables 工作方式的逻辑结果:为了解决这个问题,人们尝试使用 IMQ(在 IMQ 被放弃之前):然后转而使用 IFB。但文档线索似乎毫无进展。

所以我的问题是:如果使用 IFB 是解决这个问题的正确方法,那么通过设备标记传入流量的等效 IFB 方式会是什么样的?

或者,有没有办法将通过给定接口进入的流量分类为一组不同的领域之一?例如 eth0 --> realm_10、eth1 --> realm_11 等。这种方法似乎也应该有效,但我(再次)还没有找到任何实用的文档。

相关内容