我有 2 台服务器一起连接到 LAN,并且都连接到外部网络。一个是 eth0 适配器,另一个是 eth1 适配器。我在两台服务器上都安装了 mysql。我能够从两台服务器使用 localhost 和 192.168.1.x 作为主机连接到各自的 mysql,但是当我尝试从一台服务器连接到另一台服务器的 mysql 时,端口无法访问。服务器的本地 IP 是 192.168.1.1 和 192.168.1.2 ping 工作正常,因此问题与 LAN 适配器配置无关。
以下是防火墙配置:注意:我最感兴趣的是从服务器 1 连接到服务器 2(mysql)。
服务器1防火墙:
*mangle
:PREROUTING ACCEPT [229:43039]
:INPUT ACCEPT [229:43039]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [209:27612]
:POSTROUTING ACCEPT [208:27552]
COMMIT
*nat
:PREROUTING ACCEPT [3:176]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [1:60]
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [158:20763]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
服务器2防火墙:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [48:5312]
-A INPUT -s 192.168.1.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -d 192.168.1.1/32 -p tcp -m tcp --sport 1024:65535 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -d 192.168.1.3/32 -p tcp -m tcp --sport 1024:65535 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -d 192.168.1.2/32 -p tcp -m tcp --sport 1024:65535 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 3306 -j ACCEPT
-- 带有 mysql 的服务器 2 的 my.cnf
[mysqld]
bind-address=0.0.0.0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid