服务器防火墙开放端口(解决服务器端口无法访问问题)
前言
最近操作服务器的时候,不小心误操作了防火墙,导致除22端口外,其他端口外部都不能访问,试了很多种方法,后最终得到解决。网络上的解决方式很多都比较零碎,所以在这里整理一下具体解决的思路和步骤。
一、解决思路
1. 判断服务器使用的是firewall还是iptable
Linux一共有两款防火墙软件,分别是firewall和iptable。一般来说,ConterOS7.0以上使用的是firewall,ConterOS7.0以下使用的是iptables。开放端口前,我们要先弄清楚自己服务器使用的是哪种软件,才方便使用对应的命令
service iptables status
systemctl status firewalld.service
因为我本地使用的是firewall进行防火墙管理的,所以后续将以firewall进行演示
2. 判断firewall当前开启的服务和端口
- 查看当前firewall的所有信息
firewall-cmd --list-all
这里可以看到,我们当前没有配置开放的端口,services服务也没有http
3. 添加http服务
firewall-cmd --permanent --add-service=http
注意:我在添加http服务的时候,报了一个Error: Action org.fedoraproject.FirewallD1.all is not registered
的错误,如果你也报的话,可能是防火墙版本存在问题,可以yum update firewalld手动更新防火墙版本。更新完成后,即可解决。
4. 重新执行firewall-cmd --list-all查看是否添加成功
如果查不到的话,执行systemctl restart firewalld.service重启一下防火墙服务
5. 添加开放端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
这里的permanent配置是永久生效的意思,不配的话重启后该配置就失效
添加好后,执行firewall-cmd --reload
,重新加载策略配置
6、查看端口是否开放成功
firewall-cmd --list-all
或者
firewall-cmd --list-ports
最后我们就可以顺利访问服务器的相关端口啦
二、常用的防火墙命令
1、查看firewall服务状态
systemctl status firewalld
出现Active: active (running)切高亮显示则表示是启动状态。
出现 Active: inactive (dead)灰色表示停止,看单词也行。
2、查看firewall的状态
firewall-cmd --state
3、开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
4、查看防火墙规则
firewall-cmd --list-all
5、查询、开放、关闭端口
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;