ゆらろぐ

ひびのめもだよ!

FTPでログインは成功するがコマンドがタイムアウトする

事象

EC2上にftpサーバを構築すべく、vsftpdをインストールした。 ログインは成功するが、外部のftpクライアントからコマンドを実行したらタイムアウトする

$ ftp 192.168.1.10
Connected to 192.168.1.10 (192.168.1.10).
220 (vsFTPd 2.2.2)
Name (192.168.1.10:ec2-user): ec2-user
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,1,10,235,43).
ftp: connect: Connection timed out

原因

logに出力している通り、本環境はPassive Modeで稼働している このときは制御portには21が使われていたが、データ転送はサーバに指定してあるポート(60000-65000)で接続していた。

  • /etc/vsftpd/vsftpd.conf
pasv_min_port=60000
pasv_max_port=65000

今回は21番ポートは開いていたが、60000-65000番ポートをVPCのセキュリティグループでアクセス権限していたためコマンド実行に失敗していた。 (iptablesや別ACLで制限している可能性もあった。)

おまけ: PASV レスポンスについて

60000-65000のポートで接続されていたことを確認する

227 Entering Passive Mode (192,168,1,10,235,43).

[192,168,1,10]の箇所は IPアドレスの第1-第4オクテットを10進表記したもの。 [235, 43]の箇所は ポートの第1,第2オクテットを10進表記したもの。

ポート番号を確認すると 10進数:235 -> 2進数:11101011 10進数:43 -> 2進数:00101011

結合すると 11101011 00101011 10進表記に直すと「60203」

  • ポート:60203で接続されたことがわかった

ftp動作概要 アクティブモードとパッシブモード