Mysql

iptables 使伺服器連接非常慢

  • May 31, 2018

當我將 iptables 規則添加到伺服器(在本地網路上)時,連接變得非常慢。SSH(登錄速度慢得多)和 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 秒,然後再繼續,建立 MySQL 會使網頁減慢大約 15-60 秒。

注意 2:這些是防火牆中的所有 iptables 規則(FORWARD 規則用於共享網際網路)。如果我只是刷新它,SSH/MySQL 就會立即響應。

幾乎聽起來 DNS 查詢沒有成功並且超時。您可能需要在 INPUT 鏈中使用 RELATED,ESTABLISHED 規則,以允許 DNS 響應返回到您的 SSH 和 MySQL 伺服器。

我從另一個答案中找到了解決方案添加 RELATED,ESTABLISHED 規則

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

我遇到同樣問題的原因我更改了 iptables 策略以拒絕所有連接

iptables --policy INPUT DROP 

^^ 這導致了問題,上面的程式碼解決了它。

引用自:https://serverfault.com/questions/324253