vpc网络ecs(有公网public ip),外网slb
vsftp服务
排查工具:
wireshark、tcpdump 、FileZilla
FTP是仅基于TCP协议的服务,不支持UDP。与其他服务不同的第方,FTP传输数据需要使用2个端口,一个控制端口一个数据端口
控制端口默认是21,数据端口根据FTP的工作模式不同,使用的端口和连接方式不同
1、FTP主动模式:
客户端使用一个随机高位端口N主动发起tcp连接,连接FTP服务端的21端口
连接同时,客户端开始监听N+1端口,并发送端口N+1和地址的信息到服务器
端口换算成整数:高位字节x256+低位字节
216x256+225=55521
服务器通过20端口向客户端的N+1端口建立tcp连接,传输数据
通过数据包的交互可以得知,如果存在安全设备,服务端需要放行tcp的21端口入站访问,客户端需要放行高位的端口入站访问
2、FTP被动模式:
被动模式是为了解决部分客户端存在防火墙等安全策略拦截,导致无法建立数据连接的情况,控制连接和数据连接都是由客户端主动发起
建立tcp连接时,客户端打开两个任意的高位端口N和N+1,第一个连接控制端口21,并告知服务端使用被动模式连接,服务端会返回对应的连接地址和监听的数据端口
客户端再建立数据连接传输数据
这样只要保证服务端防火墙开启21以及制定的数据端口范围即可保证FTP连接
vsftp服务指定被动端口范围的配置文件
pasv_enable=YES
pasv_min_port=最低端口
pasv_max_port=最高端口
进一步结合云产品,配置使用ftp服务,就需要根据产品方面的限制具体调整服务的配置以及使用的连接方式
vpc网络对比经典网络,主要区别在于外网的连接方式,外网连接是通过映射的方式,映射到内网网卡上实现,系统内部是无法获取外网ip信息的
在测试过程中,主动模式没有问题,注意上述提到的客户端安全策略即可
被动模式,有部分客户端有遇到报错【服务器发回了不可路由的地址。被动模式失败】,抓包分析,发现服务端返回的ip和端口信息,是服务的私网ip,客户端无法建立连接,导致数据连接无法建立,被动模式失败
当网络环境中存在端口映射,无法正常返回连接的外网ip时,vsftp服务中有个参数:
PASV_ADDR_RESOLVE
这里是被动模式设置是否用设置好的地址返回给客户端,如果是NO,则从套接字获取,如果是YES,从下面的PASV_ADDRESS选项获取。
所以vpc网络想实现被动模式连接,可以在服务端指定返回的ip信息,将外网public ip、eip等填写进去
pasv_address=eip
pasv_addr_resolve=yes
针对slb产品,使用FTP还是比较麻烦的,这里不推荐,只做研究探讨
slb产品限制,由于后端的主机只能被动接受连接,无法通过slb主动对外建立连接,所以FTP服务的主动模式就无法使用,从服务端抓包可以看到20端口的SYN包一直再重发,客户端根本无法收到,超时后,服务连接建立失败
需要尝试使用被动模式连接
服务端的被动端口范围,需要在slb上全部配置监听,同时使用tcp协议转发
这里需要注意的是,FTP服务的数据端口并不是时刻监听的,是在需要建立连接时,才会进行监听。
而slb产品的健康检查是无法关闭的,如果不配置健康检查端口,默认检查数据端口,就会因为没有监听端口,健康检查【异常】。建立连接时,健康检查改变状态是需要一段时间的,slb无法及时变更健康检查的状态,导致数据连接建立失败
可以变通一下,指定健康检查的端口,比如指定控制端口21,确保健康检查正常
确保监听配置和健康检查正常后,开始测试,发现又出现了【服务器发回了不可路由的地址。被动模式失败】,结合上述的情况,进一步在服务中指定返回slb的外网ip,测试连接成功
pasv_address=slb外网ip
pasv_addr_resolve=yes
还有需要注意的是,如果数据端口只指定一个,在有一个人占用数据端口传输数据时,地二个人就无法建立数据连接了
通常连接ftp服务会使用ftp的连接工具,比较方便的可以切换主被动模式,有部分应用中需要调用windows系统自带的文件管理器进行连接。默认文件管理器是通过主动模式连接的,方遇到上述的一些情况,主动模式无法连接时,可以
InternetExplorer 在 菜单栏 选择 工具 -> Internet 选项 -> 高级 -> 勾选【使用被动ftp,用于防火墙和DSL调制解调器的兼容】
已切换文件管理器使用被动模式连接FTP
上一节自学了怎样用windows笔记本远程连接树莓派,本文开始学习更换树莓派软件源,提高下载速度。执行终端命令:sudo apt-get updatesudo apt-get upgrade报错,很多软件不能更新,怎么办?一、修改树莓派的vi/vim编辑器树莓派自带的vi编辑器实在是,难用!!!nano又用不习惯!!!首先删除默认vi编辑器sudo apt-get remove vim-common然后重装vimsudo apt-get install vim为方便使用,还可
R包的开发需要安装devtools包。https://cran.r-project.org/web/packages/devtools/devtools.pdf1、devtools::create(path)在该path路径下创建一个开发R包必须要的一些文件(包括放最后生成的help文档的man文件夹,放主要代码的R文件夹,描述文件DESCRIPTION,命名空间文件 NAMESPACE,项目文件pkgname.Rproj)也可直接使用Rstudio(1) Rstudio.._@rdname
微信小程序简单的信息表格的提交到数据库(新手专属)(云端数据库)大家好,我是小陈,一名大一的编码爱好者,,,,,刚刚结束了大一的学习生活,也总结出了一点编码的经验,希望与大家一起分享.我是学习物联网的,总感觉大一的课程枯燥无味,所以索性自学了一点微信小程序的开发,只是一点点,(注意:非大神),把自己的学习成果分享在博客中,与大家一起讨论学习,也欢迎大家指正批评.----------------------------------------------------------------------_微信小程序提交数据到数据库
[抄题]:In a given arraynumsof positive integers, find three non-overlapping subarrays with maximum sum.Each subarray will be of sizek, and we want to maximize the sum of all3*kentries.Return ...
1.说明本文属于 IDEA 的基础操作。本文介绍了 在 IDEA中创建 普通java项目的基本操作。2.创建项目2.1 创建一个新的空的项目至此,空的项目创建完成了。2.2 添加一个新的模块(maven项目)【异常处理】:如果创建完成模块后提示下面的错误:Unable to import maven project: See logs for details则证明是 你当前的IDEA 的版本和 配置的 maven的版本不一致!【此时,你只要修改一下IDE_maven穿件普通项目在idea中
1.将时间戳转换成日期格式:function timestampToTime(timestamp) { var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000 Y = date.getFullYear() + '-'; M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; D = date
一:备份1.1 备份所有数据库[root@ser6-52 mongodbbackup.bak]# mongodump -u superuser -p 123456 --authenticationDatabase admin -o /backup/mongodb/full_bak_201507021651.bakconnected to: 127.0.0.12015-07-02T16_restoring to logdb.userincrement without dropping . restored data will be in
今天在一台Centos5.4的主机上交叉编译某个MIPS64平台的ncurses-5.7的代码的时候,会在执行tic时挂死。 具体的打印信息如下: ............cd misc && make DESTDIR="/home/xxxx/libraries" installmake[4]: Entering directory `/home/xxxx/ncurses-5.7/misc'_ncurses tic
SpringMVC使用Jackson返回JSON时日期少一天的问题 text/html;charset=UTF_jackson 1982 时间差一天
在2018年11月8日,全球新一代智能加密货币钱包UNWALLET隆重上线,相当于支付宝、微信,可理财所有币 ,月收益10%到30%!相当于支付宝的余额宝随进随出,提币变现,还有微信功能,建群聊天,发红包转币,抢红包币,功能十分强大!全球首个基于区块链项目管理的生态平台。基于UnWalletchain打造分布式智能合约的区块链项目集中管理应用体系,构建生态产业链。官方宣称,UNWALLET公..._udunwallet
(1)__declspec__declspec关键字详细用法点击打开链接__declspec用于指定所给定类型的实例的与Microsoft相关的存储方式。其它的有关存储方式的修饰符如static与extern等是C和C++语言的ANSI规范,而__declspec是一种扩展属性的定义。扩展属性语法简化并标准化了C和C++语言关于Microsoft的扩展。用法:__declspe
Using the Windows Phone Isolated Storage Explorer toolhttp://www.windowsphonegeek.com/tips/Using-the-Windows-Phone-Isolated-Storage-Explorer-toolUsing the Windows Phone Isolated Storage Explore...