FTPサーバへのログインが遅い

C#でNAS(LinkStation)のFTPにアクセスしまくるソフトを作るのにTKFP.DLLを使ってみることにした。接続が切れたのを検知できないので、毎回ログインする方法を取ったのだけど、ログインするごとに10秒間待たされる。毎回一定時間待たされるので、多分何らかのタイムアウトが発生しているのだろうと考えた。

  1. IPアドレスで指定するとDNS逆引きが発生してタイムアウト。: バグ。ありえないことじゃない。[FIX] WebRequest クラスを使用して Web 要求を行う際の接続の問題
  2. LinkStationはProFTPdを使っていて、こいつのオプションUseReverseDNS off, IdentLookups offが設定されていないのかもしれない。: 不明。分かったところでどうしようもない。多分ログに名前を記録するためにデフォルトではONになっていると思われる。
  3. WindowsXPのファイアウォールのせい。: よくあること。なんかよく分からないネットワークがらみのことはこれを無効にすればたいてい解決。

Wiresharkでディスプレイフィルタ「tcp.port eq 21 or ftp」かけて見ていると、「220 server ready」が返って来るのが10秒かかっていた。「ftp 220 server ready slow」でぐぐってみると、てがかりとなる議論が。

ftp login very slow [Archive] - HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials

どうやらファイアウォールに引っかかっているためのようだ。ためしにファイアウォールを無効にすると待たされなくなった。しかし、無効にしとくわけにもいかないので、開くポートを限定したい。Wiresharkのフィルタを外してよく見てみると、ident 113ポートへのアクセスが3回記録されていた。どうやらこれのようだ。

「ftp 113」でぐぐってみると答えにたどり着いた。

LunaTear: XP SP2でFTPが遅くなる

参考:

DisplayFilters - The Wireshark Wiki

コメントを残す