189 8069 5689

被动模式下FTP不能建立数据会话问题

问题描述:

昌邑ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

    在阿里云使用WINDOWS IIS搭建了FTP服务器,使用被动模式,指定了被动端口并且已经放行FTP的命令和数据端口。在实际使用时发现使用专用的FTP客户端(如WinSCP、lftp、浏览器等)一切正常,当使用FTP命令时可以登陆FTP服务器,但不能建立FTP数据连接,也就不能列出和传输数据文件。提示:ftp: connect: Resource temporarily unavailable。

    被动模式下FTP不能建立数据会话问题

    被动模式下FTP不能建立数据会话问题


分析:

    通过抓包和返回的信息发现FTP服务器返回了数据端口号和服务器IP地址,但服务器IP地址是内网IP,而非实际使用的公网IP,此时FTP客户端会向该内网IP发起数据会话建立请求,因为路由不可达所以超时后提示ftp: connect: Resource temporarily unavailable。

    经过测试,是由于该FTP服务器运行在阿里云的VPC内,而VPC默认不进行公网IP和内网IP的NAT转换。但是专用的FTP客户端和浏览器则可以根据返回的数据包,提取出FTP数据端口号向源公网IP发起数据会话请求,由此可见,传统的FTP命令还是不够“聪明”。

    被动模式下FTP不能建立数据会话问题


解决方法:

    IIS:

        在FTP服务器上手工指定公网IP即可,此时FTP服务器在返回被动模式数据端口时将返回带有指定公网IP的套接字信息。如下:

        被动模式下FTP不能建立数据会话问题

        被动模式下FTP不能建立数据会话问题

    vsftpd:

        对于Linux下的vsftpd,需添加:pasv_address=公网IP。

        或者关闭PASV模式的安全检查,即:pasv_promiscuous=YES,该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。

        注意:当使用pasv_address指定公网IP时,必须将监听的IP地址改为IPv4,即:listen=YES,否则vsftpd将返回错误的被动套接字,如:227 Entering Passive Mode (0,0,0,0,34,198). 。而启用IPv4地址时则需要禁用IPv6地址的监听,因为两者互斥。

listen=YES        #指定被动模式时的公网IP地址时只能监听在IPv4地址
listen_ipv6=NO    #与listen冲突,默认监听IPv6地址,当监听在IPv4时IPv6必须禁用,否则vsftpd.service将无法启动

pasv_enable=YES
pasv_min_port=8900
pasv_max_port=8909
pasv_address=47.95.120.253       #指定被动模式时的公网IP地址
#pasv_addr_resolve=YES
#pasv_promiscuous=YES

        被动模式下FTP不能建立数据会话问题


分享标题:被动模式下FTP不能建立数据会话问题
文章地址:http://jkwzsj.com/article/pojigd.html

其他资讯