结合抓包工具深入分析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)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
29天前
|
弹性计算 负载均衡 容灾
slb配置后端服务器组
配置阿里云SLB后端服务器组涉及四个主要步骤:创建服务器组、添加ECS实例、关联监听规则和设定负载均衡策略。这使得流量根据业务需求和服务器特性进行转发,便于应用架构的灵活管理和扩展,支持蓝绿部署、灰度发布,并通过多可用区提升系统可用性和容灾能力。
25 3
|
27天前
|
监控 Shell Linux
【Shell 命令集合 网络通讯 】Linux 分析串口的状态 statserial命令 使用指南
【Shell 命令集合 网络通讯 】Linux 分析串口的状态 statserial命令 使用指南
32 0
|
1天前
|
Python 数据可视化 索引
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
14 0
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
|
2天前
|
存储 算法 前端开发
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
24 0
|
2天前
|
数据可视化 网络可视化
R语言混合图形模型MGM的网络可预测性分析
R语言混合图形模型MGM的网络可预测性分析
|
2天前
|
算法 定位技术 Windows
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
10 4
|
10天前
|
安全 网络安全 网络虚拟化
虚拟网络设备与网络安全:深入分析与实践应用
在数字化时代📲,网络安全🔒成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁🔥,传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备🖧,作为网络架构中的重要组成部分,通过提供灵活的配置和强大的隔离能力🛡️,为网络安全提供了新的保障。本文将从多个维度深入分析虚拟网络设备是如何保障网络安全的,以及它们的实际意义和应用场景。
|
20天前
|
缓存 网络协议 数据库连接
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
20 0
|
24天前
|
运维 负载均衡 监控
【软件设计师备考 专题 】网络性能分析
【软件设计师备考 专题 】网络性能分析
39 0
|
30天前
|
弹性计算 缓存 网络协议
slb配置监听规则
配置Server Load Balancer的监听规则涉及选择协议(如HTTP/HTTPS/TCP/UDP)、设置端口,配置后端服务器组,设定健康检查(TCP或HTTP),定义转发规则(轮询、权重等),配置SSL证书、会话保持及安全优化措施。在阿里云上,这可通过登录控制台,选择SLB实例,添加监听并设置相关参数来完成。不同云服务商的具体步骤可能略有差异,参考官方文档为宜。
31 3