我的IPTables规则如下:
# Generated by iptables-save v1.4.4 on Mon Aug 23 18:34:35 2010
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [9356:4246018]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 6685 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8089 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
-A INPUT -j DROP
COMMIT
这阻止了 FTP,我不确定为什么。FTP 确实在端口 21 上,因为它没有被更改。我正在使用 VSFTPD。当我清除所有 IPTables 规则时,我能够正常使用 FTP。
答案1
您是否加载了 ip_conntrack_ftp 内核模块?
ip_conntrack_ftp 模块“了解” ftp 协议并监视到端口 21 的传入连接,以确定该连接将使用哪个端口传输数据,然后打开该端口。
那么您不需要使用被动语态。
但是如果您想使用被动,那么这与 vsftpd 无关,这是一个客户端选项。
即客户端用户需要设置他的客户端以使用被动模式。
答案2
添加以下几行,然后检查您的系统日志以查看哪些流量被阻止:
-A INPUT -p tcp -m tcp --dport 20 -j LOG
-A INPUT -p tcp -m tcp --dport 21 -j LOG
-A OUTPUT -p tcp -m tcp --sport 20 -j LOG
-A OUTPUT -p tcp -m tcp --sport 21 -j LOG