iptables - 访问端口 3306 超时

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

(上面我已将实际ip替换为1.2.3.4)

尝试从另一台服务器 (VPS) 连接成功。这让我相信我尝试请求的共享服务器存在问题。

答案1

问题在于规则秩序。

按该顺序输入命令将会像这样:

  1. 如果端口 3306降低
  2. 如果端口为 3306,源 IP 为 1.2.3.4接受

问题是您在检查源 IP 之前断开了连接。这是因为您输入的命令会添加规则而不是附加规则,因此输入的最后一个命令将成为第一条规则。

您可以通过以下方式解决此问题:

  • 将 -I 更改为 -A (附加)+ 清除旧链/规则
  • 或者反转您输入命令的顺序。

答案2

冲洗后iptables,我用iptraf显示端口 3306 的实时连接列表。

发出请求的服务器是共享托管服务器,与请求关联的 IP 地址与发起请求的 Web 应用程序的 IP 地址不同。它是不同的且在变化。

唯一的解决方案是将应用程序移至不使用正向代理的 VPS 或包含数据库的服务器。

特别感谢@Jnrprimo 和我一起看这个。

相关内容