使用被动端口使用 Google Compute Engine 设置 Proftpd?

Setting up Proftpd with Google Compute Engine Using Passive Ports?

所以我有点困惑。 我们有一堆土壤湿度站通过 ftp 向我们的服务器提交数据。我们不能将其更改为 sftp 或 ftps,好旧的普通 ftp :/

我已经安装了 Ubuntu 18.04 的全新安装。 我还安装了 proftpd,我可以在被动和主动模式下通过 FileZilla 成功连接到服务器。 我启用了端口 21 和在 proftpd 配置中设置的被动端口范围 (49152-65534),并在 Google VPC 防火墙规则中启用了这些。

一切似乎都很好.. 当站点尝试连接到服务器时接受。 我收到一条说明一个站点已连接,但在被动模式下尝试 运行 时它失败了。 失败说明是 'Hostname was not found'

我试过关闭 UseReverseDNS 但这似乎什么也没做。

我还应该注意到,我们有 Proftpd 设置,并且在 GCP 之外使用较旧的 VPS 设置。使用相同的配置,没有任何问题。

这是尝试连接的站点的完整日志

Re-using existing connection! (#0) with host xx.xx.xx.xx
Connected to xx.xx.xx.xx (xx.xx.xx.xx) port 21 (#0)
Request has same path as previous transfer
PASV^M
Connect data stream passively
ftp_perform ends with SECONDARY: 0
227 Entering Passive Mode (10,152,0,20,232,150).^M
Hostname was NOT found in DNS cache
  Trying 10.152.0.20...
Connecting to 10.152.0.20 (xx.xx.xx.xx) port 59542

然后来自服务器的日志 运行ning proftpd

[05/Jun/2019:06:07:17 +0000] "PASS (hidden)" 230 -
[05/Jun/2019:06:07:17 +0000] "PWD" 257 -
[05/Jun/2019:06:07:17 +0000] "CWD incoming" 250 -
[05/Jun/2019:06:07:17 +0000] "PASV" 227 -

您可以看到它正在连接并且能够切换到正确的目录,但那是它失败的时候。

有没有人遇到过这个或类似的东西? 我想知道这是否与 Google 设置主机名的方式有关。

编辑:注意其他 vps、端口范围

在Passive模式连接建立过程中,客户端会使用21端口发起连接。之后,客户端将使用范围内的随机端口,服务器将使用该端口发送响应。 您实际上可以在尝试连接到端口 59542 的客户端日志中看到它可能被服务器丢弃。 我建议检查 GCP 中是否有特定的防火墙规则以根据客户端配置打开端口范围。您可以在此处查看此信息:https://slacksite.com/other/ftp.html 另外我建议检查内部系统防火墙规则。

好的,如果有人遇到过这个问题,请回答这个问题。

proftpd.conf中我取消注释MasqueradeAddress并将IP地址设置为与服务器的静态IP地址相匹配; IE MasqueradeAddress xx.xx.xx.xx 其中 xx.xx.xx.xx 是给定服务器的静态 IP。

我还创建了自己的配置,并将其放在 conf.d 中,其中包含以下

UseReverseDNS off
IdentLookups off

没有禁用 UseReverseDNSIndentLookups 连接超时,无法上传的站点。

更多信息,如果您有兴趣