Centos
iptables - 訪問埠 3306 超時
我無法從遠端伺服器連接到 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 和我一起看這個。
問題是規則順序。
按該順序輸入命令最終將如下所示:
- 如果埠 3306 DROP
- 如果埠 3306 和源 IP 是 1.2.3.4接受
問題是您在檢查源 IP 之前斷開連接。這是因為您輸入的命令在規則之前而不是在規則之後,因此最後輸入的命令成為第一條規則。
您可以通過以下方式解決此問題:
- 將 -I 更改為 -A(追加)+ 清除舊鏈/規則
- 或顛倒您鍵入命令的順序。