当我向服务器(在本地网络上)添加 iptables 规则时,连接变得非常慢。SSH(登录速度慢得多)和 MySQL(网站使用此服务器作为其 MySQL 数据库服务器,此连接也非常慢)都证实了这一点。奇怪的是,据我所知,没有设置任何限制速度的规则。我只是限制访问。这是规则集:
$ 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 秒后才能继续,而建立 MySQL 会使网页速度变慢约 15-60 秒。
注 2:这些是防火墙中的所有 iptables 规则(FORWARD 规则用于共享互联网)。如果我简单地刷新它,SSH/MySQL 就会立即响应。
答案1
这听起来就像 DNS 查询不成功并且超时了。您可能需要在 INPUT 链中添加 RELATED,ESTABLISHED 规则,以允许 DNS 响应返回到您的 SSH 和 MySQL 服务器。
答案2
我从另一个答案中找到了解决方案添加RELATED,ESTABLISHED规则
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
我遇到同样问题的原因是我将 iptables 策略更改为拒绝所有连接
iptables --policy INPUT DROP
^^这导致了问题,上面的代码解决了它。