iptables: フィルターとマングルの違いは何ですか

iptables: フィルターとマングルの違いは何ですか

私はパケットにタグを付けるためにiptablesを使用しており、タグに基づいてルーティングしたいと思います。

まず、IPルールを追加しました。

sudo ip rule add fwmark 1 prohibit

(「Disabled」は単なるテスト用なので、後でいくつかのルーティングテーブルに変更します。)

その後、パッケージの表示を開始します。

sudo iptables -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1

ただし、コンピュータはまだ192.168.1.0/24ネットワークにアクセスできます。

長い時間のインターネット検索と難しさの最後に、以下を試しました。

sudo iptables -t mangle -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1

動作しますが、接続がブロックされました。

最初のケースでは、フィルタの基本テーブルが使用されます。だから私の質問は、マングルテーブルとフィルタテーブルの違いは何ですか?どのような状況でどのようなものを使うべきですか?私が理解したように、これらのテーブルはすべてルーティングポリシーの前に参照されていますが、フィルタテーブルが正しく機能しないのはなぜですか?

答え1

mangleパケットを破壊(修正)してフィルタリングfilterするためにのみ使用されます。

その結果、LOCAL_OUTテーブルを繰り返してフィルタリング決定を取得した後、mangleパケットを破棄または制御する代わりに、フィルタリング決定が単に呼び出しによって返されると仮定して、ルーティング決定を再実行しようとすることができip_route_me_harderますfilter

詳細については、およびnet/ipv4/netfilter/iptable_mangle.cを参照してくださいnet/ipv4/netfilter/iptable_filter.c

答え2

たぶん、MARKターゲットはMangle Tableにのみ使用でき、他のターゲットには使用できません。確認するこれ

関連情報