【CentOS 7+Firewalld】FTPサーバへパッシブモードだと繋がらない時

CentOS 7 に FTP (vsftpd) をインストールして特定のIPからのみアクセスを許可したいなぁということで Firewalld のリッチルールでポリシー追加をしてみたのですが、いざクライアントPCからFTP接続しようとしても「ディレクトリの取得に失敗」とか言われて繋がりませんでした。

いろいろと確認したところ、どうやらパッシブモードだとつながらない感じ。

というわけで対応してみましたのでその流れをメモしておきたいとおもいます。

最初に追加したポリシー

FTP(ポート21)を追加しとけばOKやろ、と思って下記コマンドでFirewalldに追加したのですが。

# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="[許可したいIP]" port protocol="tcp" port="21" accept"

パッシブモードだと繋がりませんでした。

原因と対策

原因はパッシブモードで利用するポートを開けていなかったから。

というわけでまず vsftpd.conf にパッシブモードで利用するポートの制限を追加します。

# vim /etc/vsftpd/vsftpd.conf

下記を追記

pasv_min_port=4000
pasv_max_port=4029

これでパッシブモードの際にはポート4000~4029を利用することになります。

続いてFirewalldで該当のポートを開けます。

# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="[許可したいIP]" port protocol="tcp" port="4000-4029" accept"
# firewall-cmd --reload

これで無事に接続できるようになりました。

コメントを残す

メールアドレスが公開されることはありません。