FTPプロキシサーバ(http://www.ftpproxy.org/)を立てる方法。
接続許可されているIP以外から接続したいとき、許可されているサーバにプロキシサーバを立てて通信を中継してもらうこともできる。

1.ftp.proxyにxinetd経由でアクセスしてもらうために、/etc/xinetd.dに設定ファイルを作成する。

# vi /etc/xinetd.d/ftpproxy

service ftp
{
    disable = no
    socket_type = stream
    wait        = no
    user        = nobody
    server      = /usr/local/sbin/ftp.proxy
    server_args = -b -e -m
    cps = 5000 1
    per_source = 1000
    instances = 1000
}

server_argsに設定する-b -e -mの意味

option 意味
-b ファイル名にスペースを許可する。
これを指定しないと、get "file name with space"のようにスペースのあるファイル名をダブルクオーテーションで囲ってコマンドを発行したとしても、目的のサーバにはエスケープされて発行されない。
-e クライアントサイドで、接続先サーバを選べるようにする。
-m どのディレクトリに移動しているか、ログに記録する。

xinetdでアクセスを制御しているので、xinetdの設定を一部オーバーライドする。
参照:https://www.express.nec.co.jp/linux/distributions/knowledge/network/xinetd.html

設定 意味
per_source 同じクライアントからの接続数を制限するために、数値(整数)または、UNLIMITEDを指定します。
instances 同時に動作可能なサービスの最大数を数値で指定します。UNLIMITED を指定すると、制限なしとなります。
cps 毎秒ごとに可能な接続数の上限を設定します。最初の引数は、1秒あたりに処理可能なコネクション数を、後の引数は、サービス利用不能となってから、再び利用可能になるまでの時間(秒)を指定します。
例えば、cps = 10 60 の場合、1秒間の接続数が10を超えると、一度サービスが停止し、60秒後に再開されます。
only_from サービスにアクセス可能なホストを指定します。以下のいずれかの方法で指定が可能です。
no_access サービスへのアクセスを許可しないホストを指定します。only_from の場合と同じ方法で指定することが可能です。

2.xinetdを再起動する。

# service xinetd restart

3.ログの設定

# vi /etc/rsyslog.conf
ftp.* /var/log/ftpproxy.log

4.rsyslogを再起動する。

# service rsyslog restart

設定は以上で終了。

接続情報は、次の形式で指定すれば、ftp.proxyを通して、目的のサーバに接続できるようになる。

項目 設定値
IPアドレス ftp.proxyサーバのあるIPアドレス
ユーザ名 接続したいFTPサーバの「ユーザ名@IPアドレス」
パスワード 接続したいFTPサーバのパスワード

参考URL:http://pocketstudio.jp/log3/2013/05/30/ftpproxy/