无法访问 CentOS7服务器上应用监听的端口
参考资料
- 云主机上Centos7配置Iptables规则开启80、3306等端口https://blog.csdn.net/qq_37960007/article/details/80374782
- CentOS 7 找不到 iptables 文件(需要安装 iptables 服务)
https://www.cnblogs.com/miracle-luna/p/13714709.html - 如何在CentOS 7 的机器上配置白名单
https://www.cnblogs.com/miracle-luna/p/13714809.html - 关于mysql服务器3306端口不能远程连接的解决
https://blog.csdn.net/m0_37477061/article/details/83275408 - Linux关闭防火墙命令
https://blog.csdn.net/qq_39399966/article/details/102660601 - CentOS7开启端口(永久)
https://blog.csdn.net/zx110503/article/details/78787483 - centos7 打开mysql 3306端口并 设置外部访问
https://www.cnblogs.com/yangxunwu1992/p/6091422.html
问题由来
我在自己的虚拟机中的CentOS7 中(MySQL 8 安装过程)并启动了 mysql 8 服务,并且确认了服务启动没有问题。
定位问题:
- telnet 服务器的22 端口,访问正常
- netstat -ntpl |grep 3306 查看监听端口,没有问题
- telnet 服务器的3306端口,无法访问
经过百度,发现是防火墙的问题。
防火墙开启端口供其他访问
1. 使用 firewalld 开启端口
1、运行命令:
firewall-cmd --get-active-zones
运行完成之后,可以看到zone名称,如下:
2、执行如下命令命令:
# --permanent 表示 永久生效
firewall-cmd --zone=public --add-port=3306/tcp --permanent
3、重启防火墙,运行命令:
firewall-cmd --reload
4、查看端口号是否开启,运行命令:
firewall-cmd --query-port=3306/tcp
5、如果firewall 已经注销的了,运行以下命令可恢复:
systemctl unmask firewalld
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
7、查看 iptables 文件
此时可以在 /etc/sysconfig/ 目录下看到 iptables 文件
8、编辑 iptables 文件,加入防火墙规则
vi /etc/sysconfig/iptables
加入 3306 端口规则
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
注意: 3306 端口规则 一定不能是两个 icmp-host-prohibited 中间,否则仍然不能访问!
====== 错误示范========
之前新增的规则,在两个 icmp-host-prohibited 中间,所以不能访问:
====== 错误示范========
9、重启 iptables
systemctl restart iptables.service
然后再查看
iptables -L -n
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
本文来自博客园,作者:不安分的黑娃,转载请注明原文链接:https://www.cnblogs.com/lihw-study/p/15516056.html