Servers
4年ほど自社運用に使用していたLinuxサーバーのWAN入口ファイヤーウォールを変更した為、vsFTPへのクライアントからアクセスできないようになりました。FTPクライアントから通常モードで接続を試みると「Listenソケットが取得できません」というエラー表示、PASVモードで接続を試みると「ファイルリストが取得できません」というエラー表示です。このような場合の原因としては、サーバーとファイアーウォールのポート間での通信が遮断されている事が原因。FTPクライアントは21番ポートでサーバーへ接続し20番ポートで情報を受信しますが、ファイアーウォールで返答を遮断してしまっています。ファイアーウォールの内側でサーバーを設置した場合は、「PASVモード」に設定変更します。PASVモードは21番ポートで通信を受信し、サーバー内部でその他のポートで処理し21番ポートでクライアントに応答します。2つ目にPASVモードでファイルリストが表示されないのは、このサーバーが内部処理の為のポートを通過させないからです。では内部処理のポートを4020~4060として、その設定方法を解説します。(redhat EL4 及び Fedora6 辺り以前バージョン)
◇iptablesの新ルールをREJECT行の上段に追加 vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 4020:4060 -j ACCEPT
◇vsftpd.conf のルールを末行に追加 vi /etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_min_port=4020
pasv_max_port=4060
※vsFtpが起動しなくなるので、空白、空行がないよう注意。後は、FTPクライアントソフトの「PASVモード」を有効に設定を変えれば完了です。(最近のLinuxサーバではこのような設定をしなくても、デフォルト設定で付属スクリプトでPASVモード環境が出来てます。)