设置 vsftpd,挂在 list 命令上

7 ftp ubuntu-10.04 vsftpd

我安装了 vsftpd 并配置了它。当我尝试使用 Transmit 连接到 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
Run Code Online (Sandbox Code Playgroud)

Ste*_*day 5

您的服务器 iptables 配置不是(直接)问题。最有可能的是,服务器的 FTP 数据连接被阻止到达您的客户端计算机。默认情况下,FTP 使用所谓的“主动”模式,即服务器实际上尝试打开返回到客户端的数据连接。消费者 NAT 路由器通常会阻止此操作,从而导致您注意到的连接超时。

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

sudo lsmod | grep conntrack_ftp
Run Code Online (Sandbox Code Playgroud)

如果上面的命令什么都不返回,那么模块没有加载,需要加载,如下:

sudo modprobe nf_conntrack_ftp
Run Code Online (Sandbox Code Playgroud)

另外,你要确保模块被启动时加载,通过把nf_conntrack_ftp/etc/modules

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


Pri*_*rix 0

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

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
Run Code Online (Sandbox Code Playgroud)