web-dev-qa-db-ja.com

ファイアウォールの背後にあるProFTPdサーバーは、WANおよびLAN接続の内部IPアドレスを返します

別のDebianファイアウォールの背後にあるDebianサーバーでProFTPDを使用しています。外部からftpサーバーに接続できます。ただし、選択される仮想ホストは、WANまたはLAN接続に関係なく、常に192.168.0.4です。これにより、ftpサーバーが内部で応答するときにPASVモードに入るときに問題が発生します。 WAN接続へのIPアドレス。

WAN接続にMasqueradeAddressディレクティブがあることは知っていますが、私のWAN接続は内部仮想ホストに接続しています。

FTPサーバーにはIPアドレスが1つしかないため、ここで説明するようにmod_ifsessionモジュールを使用する必要がありますか? http://www.proftpd.org/docs/howto/NAT.html

1
Lifz

元の質問では、mod_ifsessionモジュールを使用する必要があるかどうかを尋ねました。これまでのところ、それが私がそれを機能させることができる唯一の方法です。おそらくそれは予想されることですが、私はそれを機能させるために<VirtualHost>ブロックを使用したいと思っていました。

これが私がしたことです:

<IfModule mod_ifsession.c>
  <Class internal>
    From 192.168.0.0/24
  </Class>

  <IfClass !internal>
    MasqueradeAddress 1.2.3.4
  </IfClass>
</IfModule>

これを使用して、着信LAN接続は内部IP(192.168.0.4)を取得し、WAN接続は外部IP(1.2.3.4)を取得します。それが理想的かどうかはわかりません。しかし、それは機能します。

編集:提案されているように、別のポートを使用して動作させることもできました。非標準のポートでftpを実行する場合としない場合があるため、この方法は適していません。たとえば、2121を使用してファイアウォールのポート21をftpサーバーに転送し、<virtualHost>ブロックの1つでポート2121をリッスンすると、それが外部接続であることがわかります。これが私がそのために使用したブロックです:

<VirtualHost 192.168.0.4>
  ServerName "External"
  Port 2121
  MasqueradeAddress 1.2.3.4
</VirtualHost>

注:このようにすると、「serverconfig」(<virtualHost>または<Global>ブロックにないもの)ディレクティブは適用されません。いくつかのディレクティブを繰り返すか、<Global>ブロックを使用する必要がある場合があります。

2
Lifz