Ftp

為什麼 vsftpd(防火牆後)返回其內部 ip 地址作為 pasv 地址?

  • May 10, 2021

我在另一個 Debian 防火牆後面的 Debian 伺服器上使用 vsftpd。natting 是正確的,我可以從外部連接到 ftp 伺服器。但是,當客戶端發出PASV命令時,ftp 伺服器返回其內部 IP (192.168.0.19)。

我沒有pasv_address在 conf 文件中設置指令,以便“地址取自傳入連接的套接字”(從手冊中複製)。在我看來,當外部客戶端發出問題時PASV,應該返回防火牆的外部 IP 地址,而當內部客戶端連接時,應該返回內部 FTP 伺服器的 IP。

當我將pasv_address指令設置為防火牆的外部 IP 時,一切都在外部工作,但隨後在內部中斷。當我將其設置為內部 IP 地址或註釋掉 時pasv_address,內部客戶端工作但外部客戶端不工作。

有人對此有任何見解嗎?

**編輯1:**這是伺服器端日誌文件:

Thu Sep  7 10:36:15 2017 [pid 9093] FTP command: Client "x.x.x.x", "USER yyy"
Thu Sep  7 10:36:15 2017 [pid 9093] [yyy] FTP response: Client "x.x.x.x", "331 Please specify the password."
Thu Sep  7 10:36:15 2017 [pid 9093] [yyy] FTP command: Client "x.x.x.x", "PASS <password>"
Thu Sep  7 10:36:15 2017 [pid 9092] [yyy] OK LOGIN: Client "x.x.x.x"
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP response: Client "x.x.x.x", "230 Login successful."
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP command: Client "x.x.x.x", "OPTS utf8 on"
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP response: Client "x.x.x.x", "200 Always in UTF8 mode."
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP command: Client "x.x.x.x", "PWD"
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP response: Client "x.x.x.x", "257 "/""
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP command: Client "x.x.x.x", "CWD /DownloadProduction/"
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP response: Client "x.x.x.x", "250 Directory successfully changed."
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP command: Client "x.x.x.x", "TYPE A"
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP response: Client "x.x.x.x", "200 Switching to ASCII mode."
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP command: Client "x.x.x.x", "PASV"
Thu Sep  7 10:36:15 2017 [pid 9094] [yyy] FTP response: Client "x.x.x.x", "227 Entering Passive Mode (192,168,0,19,192,27)."

**編輯 2:**我能夠使用 ProFTPD 完成這項工作。這是伺服器故障案例:防火牆後面的 ProFTPd 伺服器返回 WAN 和 LAN 連接的內部 IP 地址

如果您位於外部防火牆後面,則傳入連接實際上來自外部防火牆。所以伺服器IP地址就是它的內部IP地址。您所描述的是一種“正確”的行為。FTP 伺服器不知道(也不能知道)防火牆的外部 IP 地址。


您可以做的是為 FTP 伺服器分配兩個 IP 地址。一種外用,一種內服。並配置FTP伺服器返回防火牆外部IP地址,用於對外部IP地址的連接;和內部 IP 地址用於內部 IP 地址上的連接

雖然我不確定,如果 vsftpd 確實允許這樣的配置。ProFTPD 可以。

引用自:https://serverfault.com/questions/872409