开发者社区> liuch> 正文

结合抓包工具深入分析slb、vpc网络配置ftp服务

简介:
+关注继续查看

测试环境:

vpc网络ecs(有公网public ip),外网slb
vsftp服务
排查工具:
wireshark、tcpdump 、FileZilla

首先简单介绍一下FTP的工作原理:

FTP是仅基于TCP协议的服务,不支持UDP。与其他服务不同的第方,FTP传输数据需要使用2个端口,一个控制端口一个数据端口
控制端口默认是21,数据端口根据FTP的工作模式不同,使用的端口和连接方式不同

1、FTP主动模式:
客户端使用一个随机高位端口N主动发起tcp连接,连接FTP服务端的21端口
1

连接同时,客户端开始监听N+1端口,并发送端口N+1和地址的信息到服务器
2

端口换算成整数:高位字节x256+低位字节
216x256+225=55521

服务器通过20端口向客户端的N+1端口建立tcp连接,传输数据
3

通过数据包的交互可以得知,如果存在安全设备,服务端需要放行tcp的21端口入站访问,客户端需要放行高位的端口入站访问

2、FTP被动模式:
被动模式是为了解决部分客户端存在防火墙等安全策略拦截,导致无法建立数据连接的情况,控制连接和数据连接都是由客户端主动发起
建立tcp连接时,客户端打开两个任意的高位端口N和N+1,第一个连接控制端口21,并告知服务端使用被动模式连接,服务端会返回对应的连接地址和监听的数据端口
1

1

客户端再建立数据连接传输数据
2
这样只要保证服务端防火墙开启21以及制定的数据端口范围即可保证FTP连接
vsftp服务指定被动端口范围的配置文件
pasv_enable=YES
pasv_min_port=最低端口
pasv_max_port=最高端口

进一步结合云产品,配置使用ftp服务,就需要根据产品方面的限制具体调整服务的配置以及使用的连接方式

vpc网络配置FTP

vpc网络对比经典网络,主要区别在于外网的连接方式,外网连接是通过映射的方式,映射到内网网卡上实现,系统内部是无法获取外网ip信息的

在测试过程中,主动模式没有问题,注意上述提到的客户端安全策略即可
被动模式,有部分客户端有遇到报错【服务器发回了不可路由的地址。被动模式失败】,抓包分析,发现服务端返回的ip和端口信息,是服务的私网ip,客户端无法建立连接,导致数据连接无法建立,被动模式失败
1

当网络环境中存在端口映射,无法正常返回连接的外网ip时,vsftp服务中有个参数:
PASV_ADDR_RESOLVE
这里是被动模式设置是否用设置好的地址返回给客户端,如果是NO,则从套接字获取,如果是YES,从下面的PASV_ADDRESS选项获取。
所以vpc网络想实现被动模式连接,可以在服务端指定返回的ip信息,将外网public ip、eip等填写进去
pasv_address=eip
pasv_addr_resolve=yes

slb配置ftp服务(后挂单台服务器)

针对slb产品,使用FTP还是比较麻烦的,这里不推荐,只做研究探讨
slb产品限制,由于后端的主机只能被动接受连接,无法通过slb主动对外建立连接,所以FTP服务的主动模式就无法使用,从服务端抓包可以看到20端口的SYN包一直再重发,客户端根本无法收到,超时后,服务连接建立失败
1

需要尝试使用被动模式连接
服务端的被动端口范围,需要在slb上全部配置监听,同时使用tcp协议转发
这里需要注意的是,FTP服务的数据端口并不是时刻监听的,是在需要建立连接时,才会进行监听。
而slb产品的健康检查是无法关闭的,如果不配置健康检查端口,默认检查数据端口,就会因为没有监听端口,健康检查【异常】。建立连接时,健康检查改变状态是需要一段时间的,slb无法及时变更健康检查的状态,导致数据连接建立失败
可以变通一下,指定健康检查的端口,比如指定控制端口21,确保健康检查正常
1

确保监听配置和健康检查正常后,开始测试,发现又出现了【服务器发回了不可路由的地址。被动模式失败】,结合上述的情况,进一步在服务中指定返回slb的外网ip,测试连接成功
pasv_address=slb外网ip
pasv_addr_resolve=yes

还有需要注意的是,如果数据端口只指定一个,在有一个人占用数据端口传输数据时,地二个人就无法建立数据连接了

文件管理器切换被动模式

通常连接ftp服务会使用ftp的连接工具,比较方便的可以切换主被动模式,有部分应用中需要调用windows系统自带的文件管理器进行连接。默认文件管理器是通过主动模式连接的,方遇到上述的一些情况,主动模式无法连接时,可以
InternetExplorer 在 菜单栏 选择 工具 -> Internet 选项 -> 高级 -> 勾选【使用被动ftp,用于防火墙和DSL调制解调器的兼容】
已切换文件管理器使用被动模式连接FTP
1

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
IIS配置FTP
IIS配置FTP过程
42 0
阿里云国际版Windows服务器IIS下配置的FTP登录时提示“530 valid hostname is expected”错误
本文www.123clouds.com介绍阿里云国际版Windows服务器IIS下配置的FTP登录时提示“530 valid hostname is expected”错误的解决办法
27 0
【Linux】【CentOS】【FTP】FTP服务器安装与配置2(vsftpd、lftp)
【Linux】【CentOS】【FTP】FTP服务器安装与配置(vsftpd、lftp)
85 0
【Linux】【CentOS】【FTP】FTP服务器安装与配置1(vsftpd、lftp)
【Linux】【CentOS】【FTP】FTP服务器安装与配置(vsftpd、lftp)
78 0
阿里云ECS服务器配置Web项目和FTP Server
第一次使用阿里云ECS服务器部署Web项目和FTP Server,在使用过程中遇到了很多困难,但同时对计算机网络的工作原理有了更加清晰的认识。现将使用经历进行系统性地总结。 在阅读之前请确保已购买阿里云ECS云服务器并且初始化云服务器操作系统,本教程选用的操作系统为“Windows Server 2022 数据中心版 64位中文版”。
139 0
centos7下 FTP服务器的配置,以及配置ftp支持ftps
FTP [File Transfer PRocotol]主要用于在服务器与客户端之间进行文件传输
118 0
CentOS 6 配置FTP虚拟用户
CentOS 6 配置FTP虚拟用户
141 0
【Linux 操作系统】Ubuntu 配置 ftp freemind adb(二)
【Linux 操作系统】Ubuntu 配置 ftp freemind adb(二)
115 0
【Linux 操作系统】Ubuntu 配置 ftp freemind adb(一)
【Linux 操作系统】Ubuntu 配置 ftp freemind adb(一)
82 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
负载均衡是如何支撑几亿手机微博用户访问的 -高性能负载均衡研发和应用实践
立即下载
架构分析、数据整合、负载均衡,梦想旅行解析云上实践
立即下载
负载均衡 ALB的云上可观测能力最佳实践
立即下载