Centos

iptables - 訪問埠 3306 超時

  • May 4, 2016

我無法從遠端伺服器連接到 mysql。我已經bind-address註釋掉了,但是當我在 iptables 中添加規則以阻止其他連接時,請求伺服器的連接超時。

我試過這個建議

iptables -I INPUT 1 -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 3306 -j DROP

但我的連接仍然超時。我輸入這兩行的順序無關緊要。當我嘗試連接時,我正在回顯遠端伺服器 IP 地址,它確實是我在 iptables 中使用的 IP 地址。沒有這DROP條線,連接可以正常工作,就像我的 iptables 中沒有任何內容一樣。

列印出來的echo -e "target prot opt source destination\n$(iptables -L INPUT -n | grep 3306)"

target     prot opt source               destination
ACCEPT     tcp  --  1.2.3.4              0.0.0.0/0           tcp dpt:3306 
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306

(上面我已經用1.2.3.4替換了實際ip)

嘗試從另一台伺服器 (VPS) 連接成功。這讓我相信我嘗試請求的共享伺服器存在問題。

刷新後iptables,我曾經iptraf顯示連接到埠 3306 的實時列表。

請求伺服器是共享託管伺服器,與請求關聯的 IP 地址與發起請求的 Web 應用程序的 IP 地址不同。這是不同的和變化的。

唯一的解決方案是將應用程序移動到不使用轉發代理的 VPS 或包含數據庫的伺服器。

特別感謝 @Jnrprimo 和我一起看這個。

問題是規則順序。

按該順序輸入命令最終將如下所示:

  1. 如果埠 3306 DROP
  2. 如果埠 3306 和源 IP 是 1.2.3.4接受

問題是您在檢查源 IP 之前斷開連接。這是因為您輸入的命令在規則之前而不是在規則之後,因此最後輸入的命令成為第一條規則。

您可以通過以下方式解決此問題:

  • 將 -I 更改為 -A(追加)+ 清除舊鏈/規則
  • 顛倒您鍵入命令的順序。

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