Chapter 10. iptablesのマッチ

Table of Contents
10.1. 汎用的なマッチ
10.2. 暗黙的なマッチ
10.2.1. TCPマッチ
10.2.2. UDPマッチ
10.2.3. ICMPマッチ
10.2.4. SCTPマッチ
10.3. 明示的なマッチ
10.3.1. Addrtypeマッチ
10.3.2. AH/ESPマッチ
10.3.3. Commentマッチ
10.3.4. Connmarkマッチ
10.3.5. Conntrackマッチ
10.3.6. DSCPマッチ
10.3.7. ECNマッチ
10.3.8. Hashlimitマッチ
10.3.9. Helperマッチ
10.3.10. IP rangeマッチ
10.3.11. Lengthマッチ
10.3.12. Limitマッチ
10.3.13. MACマッチ
10.3.14. Markマッチ
10.3.15. Multiportマッチ
10.3.16. Ownerマッチ
10.3.17. Packet type マッチ
10.3.18. Realmマッチ
10.3.19. Recentマッチ
10.3.20. Stateマッチ
10.3.21. TCPMSSマッチ
10.3.22. TOSマッチ
10.3.23. TTLマッチ
10.3.24. Uncleanマッチ
10.4. まとめ

このチャプターでは、マッチについて掘り下げる。僕はマッチを 5 つのサブカテゴリーに分類することにした。最初に扱うのが 汎用的なマッチ (generic matches) で、これはあらゆるルールに使用できる。次は、 TCP パケットにだけ用いる TCPマッチUDP パケットにだけ用いる UDPマッチ 、それに、 ICMP パケットにだけ使用できる ICMPマッチ。そして最後に、 state, owner, limit マッチなどの特殊なマッチを扱う。最後のグループに含まれるマッチは、必ずしも互いに区別されるべきものではないのだが、さらに数個のサブカテゴリーに細分化することにした。これが理にかなった分類であり、皆さんの理解の助けになることを願うばかりだ。

前のチャプターを読んだ人ならもうお分かりだと思うが、マッチとは、パケット内に見られる真 (あるいは偽) であるべき某かの条件を指定するものだ。ひとつのルールは複数のマッチを持つことができる。例を示そう。実際にありそうなケースとして、身内のローカルエリアネットワーク内の特定のホストの出したパケットで、なお且つ、そのホスト上の特定のポートから発したパケットをマッチさせたい場合を考える。この場合、特定の送信元アドレスを持ち、 LAN とつながっているインターフェイスを通じて届き、なお且つ、指定したポート群のうちのいずれかに一致するパケットだった時にだけ、ターゲット (つまりジャンプ定義) を適用せよ、という指示を行うマッチを使用する。もしも、このルールの中のマッチがひとつでも一致し損なえば (例えば、他の全ての条件は満たしているが送信元アドレスだけが違っていた場合)、このルールそのものが不一致ということになり、パケットは次のルールの試験へ引き渡される。かたや、マッチが全て満たさされる場合には、ルール中で指定したターゲットが適用される。