阿毛
It's me !
想你所想
FTP pasv被动模式问题

这里总结下,在使用FTP 被动模式时遇到的问题。

我是本地mac终端连接我云服务的FTP服务时,因为主动模式(port)不好使,还没发现原因,所以尝试被动模式。

关于FTP主被动两种模式的区别,大致如下:
主被动是针对FTP服务端而言,主动意味着服务端主动与客户端建立数据链接,被动则客户端向服务端发建立链接请求。这里需要明确,主动模式,因为是FTP服务端20端口去找客户端进行数据连接,所以服务端不需要在防火墙上额外开放端口号,客户端需要。而被动模式,意味着服务端要被动等待客户端来连接,所以需要额外在防火墙上暴露端口号。所以考虑采用主被动哪种模式,你主要考虑谁暴露端口号。
(更详细的区别,可自行度娘)

这里主要讨论被动模式。

FTP服务关于被动模式的配置
VSFTPD服务为参考,配置在“/etc/vsftpd/vsftpd.conf”中,主要相关配置有:

  • pasv_enable:是否开启被动模式,YES/NO,YES即允许使用pasv模式
  • pasv_min_port:被动模式使用的端口号最小值
  • pasv_max_port:被动模式使用的端口号最大值
  • pasv_address:被动模式返回给客户端的ip地址

参考自:http://vsftpd.beasts.org/vsftpd_conf.html

这里一开始只配置了前三个

https://file.blog.humh.cn/2020/08/d2b5ca33bd970f64a6301fa75ae2eb22-9.png

然后配置防火墙规则(我的FTP服务是在阿里云上的,日常的防火墙工作由阿里云管理,没有采用SELinux等系统防火墙。)

https://file.blog.humh.cn/2020/08/d2b5ca33bd970f64a6301fa75ae2eb22-10.png

我要采用被动模式,不需要20端口传输数据

然后客户端操作如下(客户端这里使用的yum、apt等包管理工具默认的客户端工具,其他lftp等工具,大同小异)

➜  ~ ftp -n -i
ftp> open <ftp服务公网ip>
Connected to *.*.*.*.
220 Welcome to blah FTP service.
ftp> user <username> <password>
331 Please specify the password.
230 Login successful.
ftp> ls
500 Illegal PORT command.
500 Unknown command.
425 Use PORT or PASV first.
ftp> passive
Passive mode on.
ftp> ls
227 Entering Passive Mode (192,168,0,10,39,91).
ftp: connect: Operation timed out

可以看到,登录成功后,第一次ls,报了“500 Illegal PORT command”。这是因为默认模式为主动模式,但我的主动模式有些问题。这里使用passive切换本次连接使用的模式为pasv被动模式,可以看到“on”开启成功。如果你是“off”,再输入一次passive即可。再次ls,发现并无法成功。这一行信息,“227 Entering Passive Mode (192,168,0,10,39,68)”,很重要。经度娘反馈,括号内的数值含义为:前4位为pasv服务端通告客户端使用的地址,后两位经规则转换可代表服务端pasv模式监听的端口,也就是客户端来连接用来传输数据的端口。转换规则为:39 * 256 + 91 = 10075。即10075 为被动模式开放端口

https://file.blog.humh.cn/2020/08/d2b5ca33bd970f64a6301fa75ae2eb22-11.png

很显然返回的ip为内网ip,肯定客户端本地是访问不到这个内网的,这就问题所在。于是在FTP服务端配置文件中增加“pasv_address”,配置成FTP服务主机的公网ip即可,也就是open时的ip。
然后重启vsftpd服务(systemctl restart vsftpd)即可。
客户端重新连接FTP,切换至pasv模式情况下,再次ls,发现成功。

https://file.blog.humh.cn/2020/08/d2b5ca33bd970f64a6301fa75ae2eb22-12.png

至此,关于FTP被动模式的使用完成。

发表评论

textsms
account_circle
email

想你所想

FTP pasv被动模式问题
这里总结下,在使用FTP 被动模式时遇到的问题。 我是本地mac终端连接我云服务的FTP服务时,因为主动模式(port)不好使,还没发现原因,所以尝试被动模式。 关于FTP主被动两种模式…
扫描二维码继续阅读
2020-08-28