こんにちは。 カーネル2.2.20から2.4.18にアップグレードしたところ、 とあるFTPサーバに接続できなくなってしまいました。 他のFTPサーバには接続可能でした。 WindowsパソコンからはそのサーバへFTP接続できたので、 ファイアウォールのログを調べたところ、接続できない ときは、CWRとECEというフラグが記録されていました。 書籍ではこのフラグについて述べているものが 見当たりませんでしたが、インターネットでいくつか 資料が見つかりました。まとめた結果を投稿します。 御参考になれば幸いですし、おかしなところがあれば 教えてください。 Linuxカーネルのバージョン2.4.0から新しく追加された コンパイルオプションに、 CONFIG_INET_ECN というものがあります。 TCPパケットのCWRフラグとECEフラグを利用して、 ネットワークの混雑状況をルータがクライアントの コンピュータへ伝える機能の設定です。 しかし一部のルータはこの機能に対応しておりません。 またLinuxカーネル(バージョン 2.4.18)の動作にも バグがあるようで、有効になっていると、通信が 不可能になる場合があります。 参考文献の[b]では、CWRとECEフラグ付きのSYNパケットが タイムアウトしたら、それらのフラグをクリアした SYNパケットを再送すると書いてありますが、パケットの ログを見ると、CWRとECEフラグ付きのSYNパケットが 送り続けられていました。そして、サーバからの SYN-ACK返答はこの間 ありませんでした。通信が できなかった原因は、このフラグにあると思われます。 この機能の設定は次の方法で確認できます。 % cat /proc/sys/net/ipv4/tcp_ecn 出力が1ならば有効、0またはファイルが なければ無効になっています。 もし有効ならば、以下の方法で一時的に無効に することができます(rootユーザで実行)。 # echo 0 >/proc/sys/net/ipv4/tcp_ecn また、永久に無効にしたい場合は、rootユーザになり、 次の行を /etc/sysctl.confファイルに追加してください。 net.ipv4.tcp_ecn = 0 そして、次のコマンドをrootユーザで実行してください。 # sysctl -p /etc/sysctl.conf</tt> この操作の後は、問題のサーバとFTPで通信することが 可能になりました。 参考 [a] http://www.linux.or.jp/JF/JFdocs/Configure.help/ CONFIG-Configure.help-2.4.17/CONFIG_INET_ECN [b] http://www.icir.org/floyd/papers/ECN.Oct2000.txt "Negotiating ECN-Capability in a TCP connection" 以上です。 ------------------------------------------------------------ SUZUKI Yasuhiro living in Edogawa-ku, Tokyo, Japan ysuzuki _at_ bb.mbn.or.jp yasu _at_ ysuzuki.net http://plaza8.mbn.or.jp/~yswww/myself/ (only in Japanese)
Follow-Ups:
- [linux-users:91973] Re: カーネルのECNサポート(TCP)SUZUKI Yasuhiro
- Prev by Subject: [linux-users:91940] Re: NFSでディレクトリをrwxrwxrwxwでマウントするには?
- Next by Subject: [linux-users:91942] LILOの起動
- Previous by thread: [linux-users:91959] Re: qmailで'-'を含むユーザ名
- Next by thread: [linux-users:91973] Re: カーネルのECNサポート(TCP)
- Indexes:[Main][Thread]