iptables规则使通信如此缓慢

当我发送一个请求到运行在应用了防火墙规则的机器上的应用程序时,它会等待很长时间。 当我停用iptables规则时,它立即响应。 是什么让沟通如此缓慢?

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p esp -j ACCEPT -A INPUT -i ppp+ -j ACCEPT -A INPUT -p udp -m udp --dport 500 -j ACCEPT -A INPUT -p udp -m udp --dport 4500 -j ACCEPT -A INPUT -p udp -m udp --dport 1701 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -i lo -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 -A FORWARD -i ppp+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 

更新。

 ftp -inv <<! > $FTPLOG open $_FTP_HOST user $_FTP_USER $_FTP_PASS mkdir $_FTP_COPY_TO_FOLDER cd $_FTP_COPY_TO_FOLDER lcd $BACKUP_SAVE_DIR bin put $BACKUP_FILE_NAME quit ! 

这里是ftp连接

 ftp> ls 200 Port command successful 150 Opening data channel for directory list. 

你应该删除这个规则,因为它是多余的:

 -A INPUT -i lo -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 

这些规则是在没有状态数据的情况下持续处理的,而且不太可能成为问题:

 -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p esp -j ACCEPT -A INPUT -i ppp+ -j ACCEPT -A INPUT -p udp -m udp --dport 500 -j ACCEPT -A INPUT -p udp -m udp --dport 4500 -j ACCEPT -A INPUT -p udp -m udp --dport 1701 -j ACCEPT -A INPUT -i lo -j ACCEPT 

这些规则往往是有效的,不可能是原因,除非你有大量的开放的TCP连接:

 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i ppp+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 

由于日志logging以及更重要的限制规则,此规则是您拥有的最贵的规则:

 -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 

尝试删除最后一个,看看是否提高性能。 如果没有,请将其重新添加并删除两个状态规则,以查看性能是否提高。

但是,这很大程度上取决于向应用程序发出请求的意思。 这些都不会适用,除非你通过networking发出请求,因为你的规则都是input或转发(虽然它们可能影响从主机向networking发出的查询的速度)。 操作是否完成?