当前位置:   article > 正文

FTP被动模式返回服务器地址为0.0.0.0

FTP被动模式返回服务器地址为0.0.0.0

这就是传说中的,老革命遇到新问题。果然在一次证明了我的签名,一个老而没有多大用处的程序员

今天在配置一个新的项目的时候,发现项目程序所需要FTP无法正常使用。于是自己用命令行进行排查,登录后,用put命令上传文件, 得到了一个错误提示:

Passive mode address mismatch.

于是想当然的认为,肯定是被动模式没有配好,于是上服务器,打开vsftp.conf修改配置,打开被动模式,设置端口范围。 然后配置防火墙,允许端口出入。

搞完这一切,再继续尝试,然而神奇的是,错误依旧:

Passive mode address mismatch.

于是仔细查看了所有的提示,发现put的时候,FTP返回的服务器地址和实际的服务器地址不一致。详情如下:

  1. 230 Login successful.
  2. ftp> passive
  3. Passive mode on.
  4. ftp> put *
  5. local: sketch_imu_reader_V5.ino remote: sketch_imu_reader_V5.ino
  6. 227 Entering Passive Mode (152,38,148,xx,197,220).
  7. Passive mode address mismatch.
  8. 225 No transfer to ABOR.

注意 Passvie Mode 里面的6个数字,前四个,是服务器的IP地址 152.38.148.xx(安全起见,最后一个数字我隐藏掉了,用XX待敌), 后两个是端口号2个字节的值,实际端口号=197*255+220

由于服务器在云端,显然这个服务器是位于内网的,所以返回的地址是服务器的出口地址而不是真实地址,对于这个问题,很简单,vsftp.conf 里面有一个配置 pasv_address 把它配成服务器的外网地址就好,于是修改配置,大致如下:

  1. listen_port=5617
  2. pasv_enable=YES
  3. pasv_min_port=49000
  4. pasv_max_port=51000
  5. pasv_address=aa.bb.cc.dd

其中,aa.bb.cc.dd 是服务器的实际外网地址。OK,打完收工。

可是,你以为事情就这样结束了,绝对不会这么简单的。

回头用命令行一试,卖糕的,卖芝麻糕的,问题依旧,还是那个扎眼的一行字:

Passive mode address mismatch.

再仔细一看,passive mode后面的提示变成了:

227 Entering Passive Mode (0,0,0,0,197,149).

0.0.0.0 ???! 

为什么pasv_address 没生效?反而搞成了0.0.0.0 ? 仔细一查配置文件,发现配置文件中有这么两个配置:

  1. listen=NO
  2. listen_ipv6=YES

这样的配置,会导致返回的服务器地址被错误按照IPV6解析,从而出错。于是调整过来,变成正确的:

  1. listen=YES
  2. listen_ipv6=NO

再次重启服务。

这下终于对了,客户端得到嘞正确的服务器地址,文件终于上传成功了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/310184
推荐阅读
相关标签
  

闽ICP备14008679号