为什么我的 Linux 防火墙没有打开端口?

为什么我的 Linux 防火墙没有打开端口?

我一直在忙着在使用“Linux 防火墙”iptables 的专用 Linux 服务器上打开 1 个简单端口。

我已经使用 Webmin 和终端在表中添加了端口 (3306),但它仍然不允许我进行远程连接。

我已重启 iptables 多次但仍然不起作用。

以下是 iptables -L 的输出

http://pastie.org/private/cqnsjusfgtehafg7g42vq

请帮忙。

答案1

我敢打赌,您的 MySQL 实例不会监听公共 IP,只会监听本地主机或 Unix 套接字。检查 的输出netstat -ltn中是否有以 结尾的本地地址:3306;如果没有,则表示它正在监听套接字,请skip-networking从中移除my.cnf并重新启动;如果显示,则表示127.0.0.1:3306它正在监听本地主机,请bind-address = 127.0.0.1从中移除my.cnf并重新启动。

为了安全起见,最好通过 SSH 隧道访问 MySQL,因为 MySQL 不会加密任何内容,而且向外界开放 MySQL 实例无论如何都是一个糟糕的想法。我工作中的这篇知识库文章描述了这个过程:http://www.anchor.com.au/hosting/support/MySQL/Connecting_to_mysql_remotely

(哦,顺便说一句,防火墙并没有阻止任何东西,因为所有策略都设置为接受。它是一个没有目的的防火墙)。

答案2

Mysql连接问题?

我知道这听起来很奇怪但是我不得不问 mysql 是否正在运行?

在您的 my.cnf 中,您可能有阻止远程连接的 skip-networking 行。

还要检查在 rc.mysqld 中启动 mysql 的守护进程(位置可能不同,可能是 /etc/sysconfig/mysqld)没有 --skip-networking

在你的mysql上你可以检查:

mysql> 显示类似“skip_networking”的变量;

对于 iptables 我使用:

iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d [服务器 IP] --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT-p tcp -s [服务器 IP] --sport 3306 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

答案3

您是否让 selinux 以强制模式运行?尝试cat /selinux/enforce找出答案 - 我认为默认强制模式将阻止传入连接。

相关内容