设置vsftpd挂在列表命令上

我安装了vsftpd并进行了configuration。 当我尝试使用传输连接到FTP服务器,它设法连接,但挂在列表“/”

然后,我收到一条消息:无法检索“/”的文件列表。 控制连接超时。

这与我的iptables有什么关系? 我的规则如下所列:

*filter # Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT # Accepts all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allows all outbound traffic # You can modify this to only allow certain traffic -A OUTPUT -j ACCEPT # Allows HTTP and HTTPS connections from anywhere (the normal ports for websites) -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT # Allows SSH connections # # THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE # -A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT # Allow ping -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # log iptables denied calls -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # Reject all other inbound - default deny unless explicitly allowed policy -A INPUT -j REJECT -A FORWARD -j REJECT COMMIT 

你的服务器iptablesconfiguration不是(直接)的问题。 很可能,服务器的FTP数据连接被阻止到达您的客户端计算机。 默认情况下,FTP使用所谓的“主动”模式,服务器实际上试图打开数据连接返回到客户端。 消费者NAT路由器通常会阻止这种情况,导致您记下的连接超时。

设置您的FTP客户端使用“被动”模式,它应该工作。 如果没有,请检查服务器上是否加载了nf_conntrack_ftp内核模块(较旧的内核称为ip_conntrack_ftp ):

 sudo lsmod | grep conntrack_ftp 

如果上面的命令没有返回任何内容,那么模块没有被加载,你需要加载它,如下所示:

 sudo modprobe nf_conntrack_ftp 

另外,您还需要确保在启动时加载模块,方法是将nf_conntrack_ftp放入/etc/modules

内核模块nf_conntrack_ftp跟踪服务器上FTP连接的状态。 这将允许来自客户端计算机的“被动”模式连接被INPUT链上的RELATED状态规则所接受。

首先,确保vsftpd被locking到主动和被动模式的唯一端口:

 ftp_data_port=20 listen_port=21 pasv_min_port=64000 pasv_max_port=64321 

现在改变你的iptables,以确保这些端口可以遍历规则,你应该设置。 默认情况下,被动端口是随机的; 通过设置上述和修复你的iptables你解决了“双重防火墙问题”,使客户可以在任何地方工作。

如果没有ESTABLISHED,RELATED的输出规则,它将不允许端口20 ftp数据返回数据。

 iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT 

我不做iptables,但是从你显示的规则集那天就可以清楚地知道,你需要学习一些关于FTP如何工作的知识。

FTP是一个“奇怪的”服务,因为它有一个控制端口和一个数据端口。 仅开放端口21是不够的,那只是控制端口。 数据端口取决于您是否使用主动或被动的ftp传输。

我不知道iptables是如何工作的,但是您需要增强规则集,以便它也可以接受端口20上的数据stream(如果您要使用标准的ftp端口传输)

否则,您需要将数据包filterconfiguration为使用被动数据传输,并告诉客户端也使用这种forms的通信/数据传输。

你会发现这个网站很有用: http : //www.mdjnet.dk/ftp.html