11.19. REJECTターゲット

REJECT ターゲットは、基本的には DROP ターゲットと同じ動作をする。ただし、パケットのブロックされたホストに対してエラーメッセージを送り返す点が異なる。 REJECT ターゲットは現在のところ、 INPUTFORWARDOUTPUT チェーンおよびそれらのサブチェーンでしか有効でない。とはいえ、そもそもこれらのチェーンでしか、このターゲットは意味を成さない。 REJECT ターゲットを使用しているチェーンは、 INPUTFORWARDOUTPUT チェーンからのみ呼ぶことができ、その他のチェーンからでは機能しない点に注意していただきたい。このターゲットの振る舞いを制御するオプションは、今のところ ひとつだけ。とはいえ、このオプションが採れる引数は膨大な種類に上る。 TCP/IP の基本的知識さえあれば、大方すぐに察しがつくものばかりだ。

Table 11-14. REJECTターゲットオプション

オプション--reject-with
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
説明このオプションは REJECT ターゲットに対して、こちらが拒絶 (reject) するパケットの送り主ホストにどのような返答を送るかを指示する。このターゲットを指定しているルールにパケットがマッチすると、こちらのホストはまず設定された返答を送り、それから、 DROP ターゲットが破棄するのとまったく同様にパケットを黙殺する。利用可能な拒否のタイプには、現在のところ以下のものがある: icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited, icmp-host-prohibited。ホストに送られるメッセージのデフォルトは port-unreachable だ。上記はすべて ICMP エラーメッセージであり、お好み次第で指定できる。これらタイプの様々な役割については、付録 ICMPタイプ で詳しく知ることができる。さらに echo-reply オプションもあるが、これは ICMPping パケットをマッチさせるルールとの組み合わせでしか利用できない。そして最後の残りが、 TCP プロトコルとの組み合わせでのみ使える tcp-reset オプションだ。 tcp-reset オプションは、パケットを送ってきたホストへの返答として TCPRST パケットを送れと REJECT ターゲットに指示をする。 TCP RST パケットは、開いている TCP コネクションを礼儀正しく (gracefully) 閉じるためのもの。 TCP RST についてもっと詳しく知りたいのなら、 RFC 793 - Transmission Control Protocol を読んでいただきたい。 iptables の man ページで述べられている通り、主に、挙動のおかしいメールホストにメールを送信する時に起こる身元情報探り (ident probe) をブロックしたい時に役に立つターゲットだ。そうしたホストはこうでもしないとメールを受け入れてくれない。

Note

Linux カーネル 2.3, 2.4, 2.5, 2.6 で機能する。