-4

启用 iptables 时,我在通过 FTP 连接时遇到问题。我已经尝试了这个主题的所有建议以及其他一些建议,但我仍然得到:

Error:  Connection timed out
Error:  Could not connect to server

当我关闭 iptables 时连接没有问题,所以我确定这是导致问题的原因。

这就是我的 iptables 文件的样子:

:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2020 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
# Allow FTP connections @ port 21
-A INPUT  -p tcp --sport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 21 -m state --state ESTABLISHED -j ACCEPT
COMMIT
4

2 回答 2

1

首先,规则的顺序很重要。由于您在REJECT规则之前指定了FTP ACCEPT规则,因此FTP数据包在达到相关规则并有机会被接受之前被该规则拒绝。

其次,您在问题中提到的链接讨论了服务器而不是客户端所需的规则。客户的适当规则是相反的。

由于OUTPUT链的默认策略是ACCEPT,并且您允许数据​​包ESTABLISHEDRELATED连接进入您的机器,passive-mode FTP因此您的规则集应该已经支持。

为了也支持active-mode FTP,您需要允许TCP来自服务器的传入连接 port 20,如下所示:

iptables -A INPUT -p tcp --sport 20 -j ACCEPT

此链接提供了上述规则基本原理的简明摘要。


由于active-mode FTP可以根据控制连接的主机和端口可靠且轻松地确定数据连接的主机和端口,因此我认为加载模块将证明允许来自服务器的传入连接在端口冗余nf_conntrack_ftp的临时规则。我没有检查这一点,但加载模块可能就足够了,因为允许传入和流量。这种方法会更可取,因为它更安全一些。TCP20modprobe nf_conntrack_ftpRELATEDESTABLISHED

于 2015-01-09T21:37:43.593 回答
0

规则应如下所示:


$IPT -A INPUT  -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

$IPT -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

INPUT 链应为传入连接打开目标端口 21。尝试后让我知道您的反馈。

于 2015-01-09T18:51:56.223 回答