我试图使用iptables标记传入的数据包基于这些数据包到达的设备(而不是它们的原始IP地址或端口等),但还没有find一个方法来获得这个工作。
具体来说,我可以设置一个筛选器来统计每个传入数据包(并且工作正常):
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的数据包的filter似乎从来没有被触发过(即使这正是所有stream量来自的地方):
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
从在线howtos等看来,这种行为似乎是iptables工作方式的逻辑结果:为了解决这个问题,人们尝试使用IMQ(在IMQ被放弃之前):然后转而使用IFB。 但是那里的文档线索似乎变得冰冷。
所以我的问题是:如果使用IFB是解决这个问题的正确方法,那么通过设备标记传入stream量的等效IFB方式是什么样的?
或者 ,有没有一种方法可以将通过给定接口进入的stream量分类为一组不同的领域之一? 例如eth0 – > realm_10,eth1 – > realm_11等。这种方法似乎也应该工作,但我(再次)还没有find任何实际的文件。