我が家のサーバのFTP(ProFTPD/Fedora12)に、外部からアクセスできないみたいです。
LANの外部(WAN)からのアクセスには、PASVモードを使ってもらっているのですが、これがうまく機能していないみたいで、PASVモードを使わずにLAN内から接続した場合には繋がります。
FTPクライアント(FFFTP)で繋いでみると、">PASV"と表示されたまま時間が経ち、タイムアウトになっているようなので、実際に21番ポートにTelnetで繋いで調べてみました。
すると、"220 Welcome to yuuAn's server!" と表示され、FTPのコントロールコネクションがちゃんと接続できたことが確認できます。
そこで、USERとPASSを入力し、HELPやXPWDなどのコマンドを打つと、しっかりと応答してくれます。
ただ、PASVコマンドへの応答が変なのです。
LAN内からPASVコマンドを打つと、"227 Entering Passive Mode (118,243,116,195,27,119)." と表示され、データコネクション接続のための情報が表示されます。1
しかし、WAN側から同様にPASVと打つと、応答が無く、タイムアウトになって切断されてしまうのです。
アプリケーション層の問題なのでNATやファイアーウォールなどは関係ないと思うのですが、試しにファイアーウォールを無効にしてみてもダメでした。
ProFTPD固有の問題なのかどうかはわかりませんが、HTTPなどは普通にアクセスできています。
この現象、気付いたのが今日で、結構前からこうだったようです。
僕は外からはSFTPを使っていたので気付きませんでした。
以前繋がっていたときから、confファイルなどは特にいじっていないと思うのですが……。
- ただしここで表示されるのはグローバルIPなので、LAN内からは接続できませんが ↩
どうやら原因はNTT東日本が用意したルータのようでした。
PASVモード対応ルータというのがあって、それだとルータがFTPプロトコルの中身をいじってしまうようです。
参考にしたのは以下の掲示板。
http://sakaguch.com/PastBBS…
これはvsftpdの例ですが、proftpdでも同様に、proftpd.confの"MasqueradeAddress yuuan.net"をコメントアウトしたら繋がりました。
WAN側からPASVで繋がるだけでなく、LAN側からもPASVで繋がるようになったので、やっぱりルータがIPの書き換えなどを行っているんだと思います。