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 の方法はどのようになるでしょうか。
あるいは特定のインターフェースを介して入ってくるトラフィックを、一連の異なるレルムの 1 つとして分類する方法はありますか? たとえば、eth0 --> realm_10、eth1 --> realm_11 などです。このアプローチも機能するはずですが、これに関する実用的なドキュメントも (再び) まだ見つけていません。