FTPで「500 Illegal PORT command」と出た

1つのネットワーク内にサーバを複数設置して、各々のサーバにFTPでアクセスするためにNATで標準以外のポートを割り当ててFTPを立ち上げてみたところ「500 Illegal PORT command」というお返事が。

ログインまでは一応できてるっぽいので、ググってみたところ下記のような記述を発見。

http://www.atmarkit.co.jp/fwin2k/win2ktips/649ftpport/ftpport.html
FTPの標準ポート番号を変更する − @IT

標準的なFTPポートを使用している場合は、アドレス変換部(ルータ)において適切に処理されるが、ポート番号を変更すると、FTPの通信であることが認識できなくなるので、FTPの通信ができなくなる。

ふむ、ようするに標準ポートでは制御用ポートとデータ転送用ポートが決まっているから問題無いけど、ポート番号を変更すると制御用ポートは変更した値に合わせられるけど、データ転送のポートは未指定の状態なので、「ログインはできてもデータ一覧取得などはできませんよー」、という認識でいいんでしょうかね。

それで対処法は

このような設定を利用する場合は、イントラネットや(アドレス変換を伴わない)VPNネットワークなどで使用するか、FTPのパッシブ・モードを利用するファイアウォールのFTP処理に対して、ポート番号を明示的に指示する、などの対処が必要である。

ということらしいです。

そういうわけで、パッシブモード用のポートを空けて接続してみたらちゃんと繋がりました。
多分、上記3つの方法の中ではパッシブが一番楽なのではないでしょうか。

1つのグローバルIP内に複数のFTPサーバがある状況なんて、面倒なシステムを作らない限りそうそう無いとは思いますが、セキュリティ面の都合でFTPのポート番号を変更した人も同じところでつっかかるかも。

大阪の江坂でウェブ制作をしている、インフラもシステムもデザインもディレクションもできるエンジニア。 広く浅く薄っぺらくですが(笑)

Leave a reply:

Your email address will not be published.