结合抓包工具深入分析slb、vpc网络配置ftp服务_weixin_34122810的博客-程序员宅基地

技术标签: 网络  后端  

测试环境:

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34122810/article/details/90249136

智能推荐

开发一个简易的PHP扩展_weixin_34055787的博客-程序员宅基地

为什么80%的码农都做不了架构师?>>> ...

MM采购流程_ddub81671的博客-程序员宅基地

总的来说就是维护主数据-->采购申请-->采购订单-->收货--> 发票校验 --> 付款。采购订单是对供应商要求货物提供的正式文档。 TCODE MMBE来查看库存物料 TCODE ME21N来创建采购订单,选择供应商,物料号码,订单数量,单价。 TCODEME2L来查看采购订单。 供应商送货后用T...

java中decrement,Java Math decrementExact() 使用方法及示例_好大一只鲸鱼的博客-程序员宅基地

Java Math decrementExact() 使用方法及示例Java Math decrementExact()方法从指定的变量中减去1并返回它。decrementExact()方法的语法为:Math.decrementExact(num)注意:decrementExact()是静态方法。因此,我们可以使用Math类名来访问该方法。decrementExact()参数num- 从中减去1的...

pycharm中tensorflow代码不能自动补全或import红线问题解决_ddu32445的博客-程序员宅基地

pycharm中tensorflow代码不能自动补全或import红线问题解决正确安装并配置好pycharm+tensorflow环境之后,可能在pycharm中导入tensorflow会有以下问题:1. " import tensorflow as tf " 会有红线提示找不到tensorflow,但是运行的话可以正常运行2. tensorflow相关的代码不能自动补...

Android 5.1 WebView内存泄漏分析_CSDN学习的博客-程序员宅基地

在 Android 5.1 系统上,在项目中遇到一个WebView引起的问题,每打开一个带webview的界面,退出后,这个activity都不会被释放,activity的实例会被持有,由于我们项目中经常会用到浏览web页面的地方,可能引起内存积压,导致内存溢出的现象,所以这个问题还是比较严重的。

python selenium爬虫保存_爬虫之自动保存文档-使用python/selenium_weixin_39917211的博客-程序员宅基地

网络抓取的时候会碰到需要从网站下载文件的情况。下面提供两种方法:1. selenium + firefox + firefoxProfile核心要点是在firefox中设置相关的下载参数,然后在模拟点击的时候,selenium webdriver会自动保存对应的文档。貌似文件的自动保存需要使用的webdriver只能是firefox。在网上并没有搜到使用对其他webdriver工具的支持资料。p...

随便推点

Python小知识————如何解决Python日常代码中的一些BUG_hjhkkkl的博客-程序员宅基地

    相信很多小伙伴在日常敲代码的过程中,一不小心或者一不留神就会出错,程序总会被各种各样的bug困住,扰乱我们这些程序猿的心境。那么今天我就来跟大家分享一下简单常见的BUG及相应BUG的处理方法,这样的话,下次我们再遇到这些BUG,就能很轻松解决掉,程序得以运行。错误一: # TypeError: cannot concatenate 'str' and 'int' objects ...

网络安全求职该怎么写简历?_tnt阿信的博客-程序员宅基地

金三银四,金三银四之前在学校里投简历的时候其实对这句话的感受还不是特别深直到最近看到身边的人一个个跑路,才不得不感叹,三四月份人员流动是真的大不知道大家有没有留心观察,最近各大企业对安全人才的招聘也多了起来就包括我们公司也在努力地招人这不前段时间我帮团队发了个招聘贴嘛,也终于第一次看到如此多同行的简历然后就发现一些小伙伴儿好像还不太注意修饰自己的简历,写得有些草率啊然后现在不正好是招聘旺季嘛,也算是来凑凑热闹,来和大家聊聊我心目中一份合格的简历是啥样式儿的说不定还可以帮到一些在校的朋友们,岂

将python代码打包成exe的曲折_GiannisLiu的博客-程序员宅基地

今天心血来潮想将python代码打包成一个exe可执行文件。结果一搞就是一天,相当的曲折。换源一大部分是模块的缺失导致的。下载模块下了一上午都下不下来,我知道我家里网不好,而且要翻墙。下午偶尔想起来不是可以换源吗?结果上网一查哦果然可以,结果下载速度飕飕的下面是我换源的代码pip install pyinstaller -i https://pypi.tuna.tsinghua.edu...

github中Markdown文件公式的展示_weijian001的博客-程序员宅基地

github中Markdown文件公式的展示文章整理参考自http://www.wanguanglu.com/2016/07/18/github-markdown-equation/1 将公式传到公式解析服务器,然后将图片插入到文档中google chart服务器http://chart.googleapis.com/chart?cht=tx&chl=\Large x=\frac{-b\pm\sqr

数组(Array)如何添加、删除、插入、替换、连接_傅聂的博客-程序员宅基地_array数组中添加及删除方法

数组的方法:1.头部添加:unshift(元素)eg:var array = [1,2,3];array.unshift(4);console.log(array)最后得到的值是:[4,1,2,3]2.尾部添加:push(元素)3.头部删除:shift();4:尾部删除:pop();5.splice(); --可以操作数组的中间,替换,删除等;参数splic...

Java简历石投大海了无音讯,是否是互联网寒冬所致?_weixin_34184561的博客-程序员宅基地

前言小编最近在网上看到一个问题,某网友:我最近在网上投简历怎么没人给我打电话啊,我找java开发的工作?这个问题引发了小编对于这个问题的思考,我们往下看吧。概述最近互联网寒冬吧算是。目前互联网公司纷纷裁员或倒闭或架构进行优化。有一个做Java方面的朋友最近也在找工作,一线城市北京,投了三四百家,就有不到10个买时电话,后来我建议他爸简历优化一下,同时对每一次面试做一些总结,去公司的面试要求进一...

推荐文章

热门文章

相关标签