【Linux命令001】CentOS 7、8的防火墙端口开放

Scroll Down

1. 前言

今天小伙伴在群里问服务器上服务启动了,怎么本地访问不了。

我直接打开了cmd,telnet了以下,发现端口无法访问到,大概率猜测是防火墙原因,就登上服务器使用firewalld-cmd开通端口试了下。

telnet服务的打开方法: windows在我的电脑->右键->管理->服务和应用程序-服务中可找到telnet服务启动,并右键属性设置为自启动

果然如此。端口加入防火墙开通规则就好了。

2. 启动/关闭防火墙服务:firewalld

CentOS 7 以后服务启动从service xxx变成了 systemctl 命令。

防火墙也由iptables 改为默认是 firewalld。

systemctl stop firewalld.service # 停止

systemctl start firewalld.service # 启动

systemctl restart firewalld.service # 重启

3. 开启指定端口【推荐】:firewall-cmd

注意:firewall与-cmd中间是连接在一起,没有空格符的

firewall-cmd --zone=public --add-port=12059/tcp --permanent
# 开启指定端口

firewall-cmd --reload
# 重启防火墙

firewall-cmd --list-ports
# 查看开放端口列表

4. 批量开启端口:7023-8023

批量添加跟单条添加端口命令没什么区别,将7023换成7023-8023,就是把从7023到8023中间这些端口都开放了。

firewall-cmd --permanent --zone=public --add-port=7023-8023/tcp
# 批量开启TCP端口

firewall-cmd --reload
# 重启防火墙

5. 关闭防火墙端口:--remove

将参数add换成remove就ok。

firewall-cmd --permanent --zone=public --remove-port=7023-8023/tcp
# 批量开启TCP端口

firewall-cmd --reload
# 重启防火墙

6. 后记

如果用惯了iptables,不想用firewall,也可以切换回来。

yum install iptables-services           #安装iptables  
systemctl stop firewalld.service        #停止firewalld  
systemctl mask firewalld.service        #禁止自动和手动启动firewalld  
systemctl start iptables.service        #启动iptables
systemctl start ip6tables.service       #启动ip6tables  
systemctl enable iptables.service       #设置iptables自启动  
systemctl enable ip6tables.service      #设置ip6tables自启动