Mysql
iptables 使伺服器連接非常慢
當我將 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
^^ 這導致了問題,上面的程式碼解決了它。