iptables使服务器连接非常慢

当我将iptables规则添加到服务器(在本地networking上)时,连接变得非常慢。 SSH(login慢得多)和MySQL(网站使用这台服务器作为他们的MySQL数据库服务器,这个连接也很慢)证实了这一点。 奇怪的是,AFAIK没有规定任何限制速度的规则。 我只限制访问。 这是规则集:

$ iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- localnet/24 anywhere tcp dpt:www ACCEPT tcp -- localnet/24 anywhere tcp dpt:mysql ACCEPT tcp -- localnet/24 anywhere tcp dpt:22 DROP all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- localnet/24 anywhere ctstate NEW ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED Chain OUTPUT (policy ACCEPT) target prot opt source destination 

注意:除了SSH和MySQL之外,我还可以限制对Apache的访问,可以看出。 这并没有减慢,似乎工作得很好。 并指出什么是慢的:连接到SSH挂起10-15秒,然后继续,build立一个MySQL将减慢约15-60秒的网页。

注2:这些都是防火墙中的所有iptables规则(FORWARD规则在那里共享Internet)。 如果我简单地刷新它,SSH / MySQL变得即时响应。

这几乎听起来像DNS查询不成功,并超时。 您可能需要在您的INPUT链中使用RELATED ESTABLISHED规则,以允许DNS响应返回到您的SSH和MySQL服务器。

我发现从另一个解决scheme添加RELATED,ESTABLISHED规则

 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

原因我面临同样的问题我改变了iptables政策拒绝连接

 iptables --policy INPUT DROP 

^^这导致问题和上面的代码解决它。