Linuxでは、通常、「filter」テーブルを使用して一般的なフィルタリングを行います。
iptables --table filter --append INPUT --source 1.2.3.4 --jump DROP
iptables --table filter --append INPUT --in-interface lo --jump ACCEPT
以下のnetfilterのフローチャートによると、パケットは最初に「生の」テーブルを通過します。
だから私たちは書くことができます:
iptables --table raw --append PREROUTING --source 1.2.3.4 --jump DROP
iptables --table raw --append PREROUTING --in-interface lo --jump ACCEPT
- パケットはconntrack + mangle + nat + routingを経由する必要なく、より早く処理されます。使用されるCPU /メモリがわずかに少ない(そしてiptable_rawモジュールをロードしなければならないという事実によってわずかに補正される)
- フィルター/転送に同じルールを追加する必要がないため、ボックスがルーターでもある場合のルールは1つだけです(すべてのルールで問題ないことは明らかです)
私は迅速なテストのみを行いましたが、これは完璧に機能します。
私が見つけたドキュメントでは、厳密な場合に使用される生のテーブルについて常に説明しています。しかし、最小の正当化さえも与えません。
質問:独断的なものとは別に、生のテーブルを使用しない理由はありますか?