4. チェインの作成と応用

チェインは最初からある inputoutputforward 以外にも自分で自由に作ることができます。

Example 5.

  ipchains -N ppp-in

これは ppp-in というチェインを作成します。

Example 6.

  ipchains -A ppp-in -p tcp -s 0/0 -d 192.168.0.1 smtp -j DENY

これは ppp-in というチェインに,「全ての smtp ポートへの接続を DENY する」というルールを追加します。

先程も書きましたが -p はプロトコルの指定(tcp),-s はソースアドレスの指定(0/0 = 全て) -j はターゲット (DENY)です。

-d は自ホストの IP アドレス smtp/etc/services に書かれたポートです。ポートは数字表記でも 構いません。

このように作成したチェインには,自由にルールを追加 (-A) したり 削除 (-D) したり,また閲覧 (-L) したりできま す。

しかしこのままでは何の役にも立ちません。チェインは連結することに よって効果を発揮します。

Example 7.

  ipchains -A input -i ppp0 -j ppp-in

これは「パケットが入力されたインターフェイスが ppp0 のとき ppp-in というチェインを選択する」というルールを input チェインに追加しています。

ppp0 から入ってきたパケットはターゲットが ppp-in と指定されてい ますので,チェイン ppp-in に移ります。

ppp-in チェインには 例6 によって設定したルールがありますので,こ のルールのチェックを受けます。このルールにマッチしなければ, ppp-in チェインを抜け,再び input チェインに戻ってきて 次のチェックを受けます。

このように -j は DENY,REJECT といったシンボルだけでなく, チェインも指定することができます。

Example 8.

  ipchains -F ppp-in

これは ppp-in チェインの内容を消去します。消去されるのは内容だけ でチェイン自体は消去されません。消去するには -X を使います。

Example 9.

  ipchains -X ppp-in

ppp-in チェインを消去します。ただし ppp-in チェインの内容が空の 場合にしか消去できません。まず -F で空にしてから -X で消去します。