私はパケットにタグを付けるために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にのみ使用でき、他のターゲットには使用できません。確認するこれ。