在CentOS或RHEL防火墙上开启端口
今天在CentOS机(centos最小化安装的系统)上搭建了一个web服务,在访问这个web服务的时候显示超时,竟然没有连接上。明明在本机上使用curl命令显示了nginx的初始输出信息,但是远程访问为什么就不可以呢?首先ping了web服务器的机子,能ping通,这下有点懵比了。
在网上查了下原来是防火墙惹的祸,没有开启80端口。
于是按照网上的说法安装了需要运行setup命令调用图形界面修改,运行setup命令时,却显示无法找到这个命令,看来是缺少setuptool包,安装完后运行setup命令发现什么也没有,又接着安装了system-config-firewal(防火墙的配置包)之类包。
查询相关类的包可以使用 命令:
yum list system-config *
另外还有一个服务配置工具,它的名字比较特殊,跟上面所述包名字完全不一样,它叫ntsysv(系统服务),运行yum install ntsysv 安装setup的服务设置工具。
再次运行setup出现了图形界面
但是遗憾的是【防火墙配置】选项就是进不去,并报错:
ERROR: FirewallD is active, please use firewall-cmd.
报错信息显示防火墙已经激活,需要使用firewall-cmd命令,使用man查了下firewall-cmd的说明,看来只能通过这个方式来开启端口了(后来找资料才知道在CentOS/RHEL 7 之后开启端口需要使用命令,用 iptables
没效果参考:https://linux.cn/article-4243-1.html)。
firewall常用命令如下:
常用命令介绍 firewall-cmd --state ##查看防火墙状态,是否是running firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令 firewall-cmd --get-zones ##列出支持的zone firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的 firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no firewall-cmd --add-service=ftp ##临时开放ftp服务 firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务 firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务 firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口 iptables -L -n ##查看规则,这个命令是和iptables的相同的 man firewall-cmd ##查看帮助
首先查看防火墙运行状态:
[root@localhost ~]# firewall-cmd --state
running
查看我们需要的端口有没有开启:
查询是否开启80端口 [root@localhost ~]# firewall-cmd --query-port=80/tcp no 显然80端口没有开启
开启80端口:
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent success
注意加上参数:--permanent,表示永久改变。
最后运行:
[root@localhost ~]# firewall-cmd --reload
success
完成上述修改,并开启80端口:现在远程就可以看到如下界面了。