在Ubuntu上通过IPTables允许FTP

我的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就好了。

你是否加载了ip_conntrack_ftp内核模块?

ip_conntrack_ftp模块“知道”ftp协议,并监视到端口21的传入连接,以确定连接将用于数据的端口,然后打开该端口。

你不需要使用被动。

但是,如果你想使用被动,那么这与vsftpd无关,这是一个客户端选项。

即客户端用户需要设置他的客户端使用被动模式。

抛出这些行,然后检查你的系统日志,看看什么stream量被阻止:

 -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