Squid による FTP Proxy

このページではSquid により FTP Proxy を実現する方法に関して説明します。以下の2通りがあります。

  Squid 接続待ち受けポート(デフォルト) Squid からの接続先ポート
FTP over HTTP (WebFTP) 3128(httpなどと共用) 21
FTP(一般的なNative FTP)   21 21 

最終更新日:2021年1月1日

(1)FTP over HTTP (WebFTP)

デフォルトでは FTP over HTTP のみ受け付けています。これは 3128で受け付けて外部FTPへ接続する方法です。

IEではこの設定です。

Squid の WebFTP設定

/etc/squid/squid.conf で以下の場所で設定します。デフォルトで設定されているため、特に追加の設定は不要です。

acl Safe_ports port 21 # ftp

(中略)

# Squid normally listens to port 3128
http_port 3128

ブラウザからはWebFTPとして以下のように表示されます。Squid がFTPサーバを HTMLに変換するイメージです。

SquidでFTP通信をIEに変換

(2)FTP (ネーティブ接続、一般的な TCP 21番ポート)

一般的なFTP接続です。SquidがFTP接続を受け入れ、先に転送します。

一般的なProxyの機能で1段のみ多段化することが可能なようです。連続して多段化していくことはできません。

Squidではデフォルトではこの機能は無効化されています。以下の設定で有効化することが可能です。

 ftp_port (IPアドレス):21

例:

ftp_port 192.168.1.1:21

(*)大昔のバージョンのSquidではこの機能は無効化されていました。昔のSquidはネーティブなFTPは受け付けませんでした。

一般的なFTPではないため通常にログインしようとすると以下のようなエラーが発生します。

# ftp 192.168.1.1
Connected to 192.168.1.1 (192.168.1.1).
220 Service ready
530 Must login first
Name (192.168.1.1:root): anonymous
501 Missing host
Login failed.

#ftp 192.168.1.1
192.168.1.1 に接続しました。
220 Service ready
530 Must login first
ユーザー (192.168.1.1:(none)): anonymous@microsoft.com

これでFTP による多段構成が可能です。WinSCPでは以下のように設定します。

Proxytype で Proxyに送信するコマンドを選択します。Squid に対しては"USER @user@%host" を設定するのが一般的なようです。
"missing host"や"must login first"と表示される場合は" USER %proxyuser,USER %user@%host"になっている可能性があります。

WinSCPにおけるFTP Proxyの設定

[Squid まとめに戻る]