別の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 ?
元の質問では、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>
ブロックを使用する必要がある場合があります。