不安分的黑娃
踏踏实实,坚持学习,慢慢就懂了~

无法访问 CentOS7服务器上应用监听的端口

参考资料

  1. 云主机上Centos7配置Iptables规则开启80、3306等端口https://blog.csdn.net/qq_37960007/article/details/80374782
  2. CentOS 7 找不到 iptables 文件(需要安装 iptables 服务)
    https://www.cnblogs.com/miracle-luna/p/13714709.html
  3. 如何在CentOS 7 的机器上配置白名单
    https://www.cnblogs.com/miracle-luna/p/13714809.html
  4. 关于mysql服务器3306端口不能远程连接的解决
    https://blog.csdn.net/m0_37477061/article/details/83275408
  5. Linux关闭防火墙命令
    https://blog.csdn.net/qq_39399966/article/details/102660601
  6. CentOS7开启端口(永久)
    https://blog.csdn.net/zx110503/article/details/78787483
  7. centos7 打开mysql 3306端口并 设置外部访问
    https://www.cnblogs.com/yangxunwu1992/p/6091422.html

问题由来

我在自己的虚拟机中的CentOS7 中(MySQL 8 安装过程)并启动了 mysql 8 服务,并且确认了服务启动没有问题。
定位问题:

  1. telnet 服务器的22 端口,访问正常
  2. netstat -ntpl |grep 3306 查看监听端口,没有问题
  3. telnet 服务器的3306端口,无法访问

经过百度,发现是防火墙的问题。

防火墙开启端口供其他访问

1. 使用 firewalld 开启端口

1、运行命令:

firewall-cmd --get-active-zones

运行完成之后,可以看到zone名称,如下:
image

2、执行如下命令命令:

# --permanent 表示 永久生效
firewall-cmd --zone=public --add-port=3306/tcp --permanent

image

3、重启防火墙,运行命令:

firewall-cmd --reload

4、查看端口号是否开启,运行命令:

firewall-cmd --query-port=3306/tcp

5、如果firewall 已经注销的了,运行以下命令可恢复:

systemctl unmask firewalld

image

2. 使用 iptables

在CentOS 7.x 的机器上,给指定主机和指定端口配置白名单的时候,发现机器的 /etc/sysconfig/ 目录下没有找到 iptables 文件。

原因是因为CentOS 7.x 默认是使用 firewalld 服务作为防火墙,我们需要禁用该服务,安装 iptables 服务。

1、停止 firewall 服务

systemctl stop firewalld 

2、注销 firewall 服务

systemctl mask firewalld

可以通过systemctl unmask firewalld 重新注册 firewalld 服务
3、安装 iptables 服务

yum install -y iptables 
yum install iptables-services

4、启动 iptables 服务

systemctl start iptables

或者

service iptables start

5、设置 iptables 开机自启动

systemctl enable iptables

6、查看 iptables 状态

systemctl status iptables

或者

service iptables status

image

7、查看 iptables 文件
此时可以在 /etc/sysconfig/ 目录下看到 iptables 文件
image

8、编辑 iptables 文件,加入防火墙规则

vi /etc/sysconfig/iptables

加入 3306 端口规则

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

image

注意: 3306 端口规则 一定不能是两个 icmp-host-prohibited 中间,否则仍然不能访问!

====== 错误示范========
之前新增的规则,在两个 icmp-host-prohibited 中间,所以不能访问:
image
image
====== 错误示范========

9、重启 iptables

systemctl restart iptables.service

然后再查看

iptables -L -n

image

10、Telnet 服务器 3306 端口
访问正常。

iptables 一些命令

# iptables 服务的停止命令
systemctl stop iptables
或者
service iptables stop

# iptables 服务的重启命令
systemctl restart iptables
或者
service iptables restart


# Saving firewall rules to /etc/sysconfig/iptables
service iptables save

# 重载 iptables 文件
systemctl reload iptables
或者
service iptables reload

# 查看已配置的iptables规则:

iptables -n -L
iptables -n -L --line-numbers

posted on 2021-11-06 11:43  不安分的黑娃  阅读(1138)  评论(0编辑  收藏  举报