首页 > 代码库 > 在CentOS或RHEL防火墙上开启端口

在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端口:现在远程就可以看到如下界面了。

技术分享

 

在CentOS或RHEL防火墙上开启端口