vsftp 使用篇

开头总要交待一些背景

项目用到的文件纷发,使用ftp做文件下载。一些客户对端口有限制,所以需要修改默认的配置。然后就是会遇到各种奇怪的问题,见招拆招啦。

对于限制端口的情况,服务器必须开放一个主端口,一般是21,再开放一个端口段,用作被动模式的数据传输使用

配置被动端口范围,以配合防火墙通过

/etc/vsftp/vsftp.conf 文件修改如下下项目

listen_port=7018                    #主端口调整
chroot_local_user=YES         #只能在用户家目录活动
pasv_enable=Yes                
pasv_min_port=7010    
pasv_max_port=7030

/etc/sysconfig/iptables 增加如下规则

-A INPUT -m state --state NEW -m tcp -p tcp --dport 7010:7050 -j ACCEPT

问题一

前提:服务器在内网,通过路由器映射的一个外网IP访问

遇到一个可以登陆,但不能使用诸如 ls 之类的命令,并提如下错误

227 Entering Passive Mode (192,168,1,5,27,111).

显示一个内网的ip地址。 尝试输入 Passive命令,突然就好使了。
估计基原因就是因为主动模式和被动模式哪里产生的问题。

ftp> passive
Passive mode off.      #关闭被动模式,使用主动模式。
ftp>

问题二

Filezilla会显示一个状态-----服务器发回了不可路由的地址,使用服务器地址代替

补课时间

主动(Standard)模式:客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

被动(Passive)模式:在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

但明显问题出在 显示那个内网的IP上 ,最终找到一个 配置项,并修改如下:

pasv_address=106.2.2xx.2xx

把映射的外网地址填上,随后可以正常下载了。

解决了这个问题,但并不知道原因

你可能感兴趣的:(vsftp 使用篇)