所以我有点困惑。 我们有一堆土壤湿度站,通过ftp将数据提交到我们的服务器。 我们不能将其更改为 sftp 或 ftps,很好的老式普通 ftp :/
我已经设置了 Ubuntu 18.04 的全新安装。 我还安装了proftpd,我可以在被动和主动模式下通过FileZilla成功连接到服务器。 我已经启用了端口 21 和在 proftpd 配置中设置的被动端口 (49152-65534) 的范围,并在 Google VPC 防火墙规则中启用这些端口。
一切似乎都很好..当一个站尝试连接到服务器时接受。 我收到说明站已连接,但在尝试以被动模式运行时失败。 失败说明为"找不到主机名">
我尝试关闭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
然后是来自运行 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 -
您可以看到它正在连接并能够更改为正确的目录,但那是失败的时候。
以前有没有人遇到过这个或类似的东西? 我想知道这是否与谷歌设置主机名的方式有关。
编辑:注意其他vps,端口范围
好的,如果有人遇到这个问题,可以回答这个问题。
proftpd.conf
我取消注释MasqueradeAddress
并将 IP 地址设置为与服务器的静态 IP 地址匹配;IEMasqueradeAddress xx.xx.xx.xx
其中xx.xx.xx.xx
是给定服务器的静态 IP。
我还创建了自己的配置,并将其与以下内容放在conf.d
UseReverseDNS off
IdentLookups off
如果不禁用UseReverseDNS
和IndentLookups
连接超时,无法上传的工作站。
如果您有兴趣,更多信息
- 化装舞会地址
- 使用反向DNS
- 标识查找
在建立被动模式连接期间,客户端将使用端口 21 来启动连接。之后,客户端将使用范围内的随机端口,服务器将使用该端口发送响应。 实际上,您可以在客户端日志中看到尝试连接到端口 59542,并且它可能被服务器丢弃。 我建议检查GCP中是否有特定的防火墙规则,以根据客户端配置打开端口范围。您可以在此处查看此信息:https://slacksite.com/other/ftp.html 我还建议检查内部系统防火墙规则。