结合抓包工具深入分析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

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2天前
|
负载均衡 网络协议 安全
【计算机网络】虚拟路由冗余(VRRP)协议原理与配置
【计算机网络】虚拟路由冗余(VRRP)协议原理与配置
8 0
|
5天前
|
Web App开发 安全 Unix
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
Linux 配置FTP服务器 + vsftpd服务安装配置 (Good篇)
|
5天前
|
网络协议 Linux 开发工具
Linux中 /etc/sysconfig/network-scripts/ifcfg-<interface> 网络接口配置 详解 看这一篇够用
Linux中 /etc/sysconfig/network-scripts/ifcfg-<interface> 网络接口配置 详解 看这一篇够用
|
11天前
|
存储 监控 安全
【亮剑】指导初学者如何搭建和使用网络视频监控系统。
【4月更文挑战第30天】本文指导初学者如何搭建和使用网络视频监控系统。核心设备包括摄像头(如固定、PTZ、多目、夜视)、存储选项(NVR、DVR、云存储)及网络交换机等。安装配置步骤涉及规划布局、安装摄像头、设置存储设备和软件配置。实时监控包括实时查看、接收警报和录像回放。理解设备功能、合理布局并细心操作,就能建立稳定监控体系。随着技术进步,未来监控系统将更智能、高效,保障安全。
|
11天前
|
运维 监控 安全
【亮剑】为网络工程师总结了Juniper设备的配置、监控和故障排除命令
【4月更文挑战第30天】本文为网络工程师总结了Juniper设备的配置、监控和故障排除命令。配置命令包括基础设置、路由协议、安全和系统服务;监控命令涉及系统状态、接口、流量及路由表;故障排除命令涵盖日志、接口、路由协议和安全方面的排查工具。掌握这些基本命令将提升网络运维效率。
|
13天前
|
网络虚拟化 数据安全/隐私保护 数据中心
【专栏】对比了思科与华为网络设备的基本配置、接口、VLAN、路由、访问控制列表及其它关键命令
【4月更文挑战第28天】本文对比了思科与华为网络设备的基本配置、接口、VLAN、路由、访问控制列表及其它关键命令。尽管两者在很多操作上相似,如设备命名(思科:`hostname`,华为:`sysname`)、查看版本信息(思科:`show version`,华为:`display version`),但在某些方面存在差异,如接口速率设置(两者都使用`speed`和`duplex`,但命令结构略有不同)和VLAN配置(华为的`port hybrid`命令)。
|
14天前
|
算法 网络虚拟化
网络性能加速:快速PVST配置详解
【4月更文挑战第22天】
23 0
|
14天前
|
算法 网络虚拟化 网络架构
精通网络设计:生成树根桥配置详解
【4月更文挑战第22天】
21 0
|
14天前
|
安全 网络虚拟化 网络架构
中继配置详解:网络设计的桥梁
【4月更文挑战第22天】
25 1
|
14天前
|
安全 网络协议 网络安全