DNS 検索を受け付けないのでしょう。結局はタイムアウトになってしまいます。 ipchains に対して `-n' (数値)フラグを使ってみましょう。 `-n' は、ネームでの検索を行いません。
`!'オプションの両側にスペースをおいて、`!' オプションを単独で使わなければいけません。 (4.1.4.1 で注意しました)典型的な間違いです。
# ipchains -A input -i !eth0 -j DENY
#
`!eth0' と呼ばれるインターフェースは存在しませんが、 ipchains はそれがわからないのです。
(訳注: `!' の使い方に関する注意は、 4章を参照。 `!' オプションの前後のスペースを忘れないで下さい。)
パケットの forwarding が可能になっているのかどうかを確認して下さい(最近のカーネルでは、デフォルトで `使用しない'になっています。パケットは `forward' chain を越えることすらないということです)。 root 権限で次のように入力すれば変更できます。
# echo 1 > /proc/sys/net/ipv4/ip_forward
#
これでうまくいくなら、毎回、可能になるように、お使いの起動スクリプトのどこかにこの行を書いておくことができます。 このコマンドが動く前にファイアウォールを設定したいはずです。 そうしないと、(破棄すべき)パケットを通過させてしまう機会を与えてしまいます。
リダイレクトを動かすためにはパケットの forwarding (上述を見て下さい)を許可しなければいけません。 そうしないと、ルーティングのコードはパケットを落します。 そこで、リダイレクトのみを使っていてフォワーディングは全然使っていないならば、このことに注意して下さい。
REDIRECT (input チェインにある)は、ローカルプロセスからの接続には効果がないことに注意して下さい。
(訳注: ipchains のオプションについては、man ipchains で確認して下さい。)
カーネルの 2.1.102 と 2.1.103 版(そして私が作ったいくつかの古いパッチ)にはバグがありました。 それらのカーネルでは、(-i ppp+ のような)ワイルドカードインターフェースがうまくいかないエラーを明示する ipchains コマンドを生成しました。
この件は、最新のカーネルと web サイトにある 2.0.34 のパッチでは修正されています。 カーネルソースを手で修正するなら、 include/linux/ip_fw.h ファイルの 63行あたりを次のように変更します:
#define IP_FW_F_MASK 0x002F /* All possible flag bits mask */
これは ``0x003F'' を読むべきです。これを修正し、カーネルを再構築します。
これは私の間違いでした。 Service field のタイプを設定は、 2.1.102 から 2.1.111 版のカーネルでは実際には Service のタイプを設定できないのです。 この問題は、2.1.112 では修正されました。
2.0.x では動きません。 ipchains とipautofw あるいは ipportfw に対する大きなパッチを作成し、維持する時間がありません。
2.1.x に対しては、次のところから Juan Ciarlante の ipmasqadm をダウンロードして下さい。
http://juanjox.linuxhq.com/
そして、ipautofw
やipportfw
を使うとき、 ipportfw
のかわりに ipmasqadm portfw
を入力し、そして、 ipautofw
のかわりにipmasqadm autofw
を入力して、きちんと使って下さい。
1.6.0 版か、それ以降のものにして下さい。それらの版では、カーネル 2.1.x に対してどのような firewall rule も要求しません。 これは 1.6.1 でまだ壊れていると思われるなら、その場合は著者にバグ報告をして下さい(それは、私の失敗ではありません)。
これは ipchains 1.3.3 版のバグですので、新しい版にアップグレードして下さい。
(カーネル 2.1.x において) 2.1.123 以降では動きません。
2.1.124 で設定してみると、 masquerading timeouts はカーネルをロックしてしまいます (net/ipv4/ip_fw.c ファイルの 1328 行にある return
を ret =
に変更して下さい)。
2.1.125 では、ちゃんと動きます。
注: 4.1.1 も見て下さい。
他にも同じようなご希望があると思います。 残念ながら、私のコードは IP をすべて網羅しているだけですが、幸いなことに、IPXをファイアウオールするのに必要な機能はすべてそろっています。 それを利用してあなたご自身でコードを書く必要がありますが、可能な範囲で私は喜んでお手伝いしましょう。
訳注: IPX というのは、Novell による MS-DOS 上のネットワークプロトコルです。 IPX については、IPX-HOWTOを参照して下さい。 http://www.linux.or.jp/JF/JFdocs/IPX-HOWTO.html