EC2 vsftpd 建立ftp服务器的连接异常解决

发布于: 2014年04月15日

Amazon 云计算EC2 的几个基本概念说明:

1. EC2 有两个IP,  内部IP: 例如:172.xxx.xxx.xxx,   外部IP:例如:68.xxx.xxx.xxx

ifconfig 只能看到内部IP, 也就是说默认网卡分配了一个内部IP。而外部IP实际上是NAT端口到服务器。

2. EC2 控制台->NETWORK & SECURITY->Security Group 可以设定了ec2的防火墙,选择哪些端口打开。实际上是设定了那些NAT的端口。

假设我们以比较严格的方式设定Security Group, 仅开放使用到的端口。如使用ssh, ftp, web, 等,仅打开22,21,80端口。以vsftpd服务器为例,设定ftp服务器通常会碰到的问题。

vsftpd.conf 相关设定:

listen=YES         #打开监听
listen_port=21 #监听21端口
pasv_enable=YES  #启动被动模式
ftp登录会碰到下面的错误提示:

227 Entering Passive Mode (172,xxx,xxx,xxx,56).
ftp: connect: timout!

上面红色字体表明ftp服务器返回了一个172开头的内部IP
如果把pasv_enable=YES改为pasv_enable=NO,来关闭被动模式。登录ftp时回返回以下错误:

500 Illegal PORT command.

如果vsftpd.conf 绑定 ip 68.xxx.xxx.xxx呢?

listen_address=68.xxx.xxx.xxx
你可以预计到根本无法连接了,因为 主机并没有绑定68.xxx.xxx.xxx 这个IP的物理设备。
解决方案如下:
listen_port=21
pasv_enable=YES
pasv_max_port=21100   #可自行变更
pasv_min_port=21000  #可自行变更
port_enable=YES
pasv_address=68.xxx.xxx.xxx
在ec2 Security Group开放21和21000~21100 端口,即可解决。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

浙ICP备18056264号-1