これはえらい人からの指示で調べた。
まずは、vsftpsにポート設定を書き足す。
$ sudo vi /etc/vsftpd.conf
listen_port=制御用ポート番号
pasv_enable=YES
pasv_min_port=データ通信用ポート番号(下限)
pasv_max_port=データ通信用ポート番号(上限)
まぁ、この設定を書き込むには、FTPの仕組みを理解しなければいけないわけで。
FTPは制御用ポートとデータ用ポートの2つを使用します。
デフォルトでは制御用ポートが20、データ用ポートが21です。
なので、iptablesの設定も、両方のポートを開ける必要がありました。
FTPのポート番号を変える場合はパッシブモードにする必要があります。
パッシブモードにした場合、データ用ポートはサーバ側でランダムに決定されます。
でも、本当にランダムだと、ファイアーウォールの設定が面倒なので、
そのポート番号の範囲を決めてあげる必要があります。
その下限をpasv_min_portで、上限をpasv_max_portで設定します。
つまり、ここでポートを指定してあげれば、ファイアーウォールはその部分だけ開ければ良いことになります。
まぁ、今回はめんどうなので、上限も下限も同じ値にして、データ用ポート番号も固定にしました。
FTPサーバを再起動
$ sudo /etc/init.d/vsftpd restart
iptableのポートを開けます
$ sudo iptables -I INPUT -p tcp –dport 制御用ポート番号 -j ACCEPT
$ sudo iptables -I INPUT -p tcp –dport データ用ポート番号(下限):データ用ポート番号(上限) -j ACCEPT
この時点で、新しいポート番号でデータ転送ができることを確認。
変更前のポート番号を閉じる
まずは、iptableの設定一覧を表示
$ sudo iptables -nL –line-number
一覧の中から削除する設定番号を指定する。
$ sudo iptables -D INPUT 設定番号
iptableの設定を保存
$ sudo iptables-save
これで完了です!