
私は自分のサーバー(ubuntu 16.04 x86_64)で proftpd を使用しています。
デフォルトの proftpd は標準の 21 ポートを使用します。自宅のノートパソコンからアクティブ モードで問題なく FTP に接続できます。
ここで、proftpd を停止し、ポートを 21 から 10021 に変更し、サービスを再度開始します。すると、アクティブ モードで接続できなくなり、パッシブ モードでのみ接続できるようになります。
何が変わったのですか?
また、なぜアクティブ モードが機能するのか理解できません。インターネットにはルーター経由でアクセスしています。ルーターでノート PC にポートを転送していません。接続時に、ノート PC (FTP クライアント) が 1023 を超えるポートからサーバー ポート 21 への接続を作成します。ノート PC はサーバーに 2 番目の (データ) ポートも送信し、サーバーはこのデータ ポートを使用して独自のポート 20 から接続します。しかし、WAN からポートが閉じられている場合、2 番目の接続をどのように確立できるのでしょうか。
答え1
ファイアウォール (ルーター) には、FTP 用の接続追跡ヘルパーがあります。FTP 制御接続 (TCP 宛先ポート == 21 で認識) を検出すると、コマンドを監視します。クライアントがコマンドを送信したのを検出するとPORT
、それを書き換え (外部 IP アドレス、場合によっては別のポートに)、FTP サーバーからの予想される接続を追跡します。その接続が到着すると、通過が許可されます。
ポートを変更しても、10021 は FTP 制御接続として認識されないため、そのようなことは何も起こりません。
少なくとも Linux では、その機能はnf_conntrack_ftp
モジュールであり、ports
必要に応じて 10021 を含めるようにオプションを設定できます。
PS: 同様のことは、サーバーの前のファイアウォールでも実行できますが、逆の方法で、アクティブ モードではなくパッシブ モードの転送で実行されます。