防火墙常用命令

2021/9/9 firewalld

centos系统安装后自带防火墙firewall已经满足常用的很多需求了,整理如下:

# 一、状态、启动、关闭、重启

默认防火墙是不开启的,所以当你接手一个新的服务器要维护时要查看是否启动了防火墙(如果安装了iptables等其他防火墙另说)

# 1.1、服务状态检查

 








[root@VM-0-5-centos ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since 三 2021-02-24 17:59:58 CST; 4 weeks 0 days ago
     Docs: man:firewalld(1)
 Main PID: 22784 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─22784 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
1
2
3
4
5
6
7
8

出现Active: active (running)。。。这样的高亮字眼代表开启了

出现 Active: inactive (dead),,,这样灰色的字眼代表没有开启

# 1.2、启动防火墙

systemctl start firewalld
或着
service firewalld start
1
2
3

# 1.3、关闭防火墙

systemctl stop firewalld
或者
service firewalld stop
1
2
3

# 1.4、重启防火墙

systemctl restart firewalld
或着
service firewalld restart
1
2
3

# 1.5、设置开机自启

systemctl enable firewalld
1

# 1.6、设置开机禁用

systemctl disable firewalld.service
1

# 二、firewall常用命令

提示

  • firewall-cmd是Linux提供的操作firewall的一个工具(同ls命令一样,后面跟各种参数)
  • firewall-cmd后面的参数都是--开始的,这个地方很多人容易写成-或者不写!

# 2.1、查看防火墙状态

上面的是查看防火墙服务状态

firewall-cmd --state
1

# 2.2、查看防火墙规则列表

 

 

firewall-cmd --zone=public --list-ports 
或者不加 --zone=public 也可以
firewall-cmd --list-all
1
2
3

# 2.3、查看某个端口是否开放

firewall-cmd --query-port=8080/tcp
1

# 2.4、重新加载配置

修改配置后要重启防火墙,虽然修改配置后可以看到success这样的提示,但是指配置修改成功,并没有启用直到执行reload

firewall-cmd --reload
1

# 三、规则增加、删除

# 3.1、添加一个端口

 




firewall-cmd --zone=public --add-port=443/tcp --permanent
--zone #作用域
--add-port=443/tcp #添加端口,格式为:端口/通讯协议
--permanent #代表永久生效,没有此参数重启后失效
1
2
3
4

# 3.2、添加多个端口

 

 

 

firewall-cmd --add-port={22,23,80,443,22122,23000,6379}/tcp --permanent
或者
firewall-cmd --add-port={8081/tcp,8082/tcp}
或者
firewall-cmd --permanent -zone=public --add-port=7777-8000/tcp
1
2
3
4
5

# 3.3、删除一个端口

firewall-cmd --permanent --remove-port=8085/tcp
1

# 3.4、删除多个端口

firewall-cmd --remove-port={8081/tcp,8082/tcp}
1

# 3.5、添加一个富规则

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.144.214" port protocol="tcp" port="3306" accept" 
1

# 3.6、删除一个富规则

firewall-cmd --permanent --remove-rich-rule "rule family="ipv4" source address="192.168.144.214" port protocol="tcp" port="3306" accept"
1

说明

以上规则配置在文件/etc/firewalld/zones/public.xml中保存,有兴趣的可以自己查看

# 四、端口转发

位于服务器端的端口转发一般使用nginx等反向代理工具实现,简单的也可用直接使用firewall实现

 

 

firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
# 例子:firewalld实现端口转发(端口映射)只能转发tcp相关的服务 
firewall-cmd --permanent --zone=public --add-forward-port=port=5555:proto=tcp:toport=22:toaddr=172.16.1.31
1
2
3

# 五、参考地址

https://www.cnblogs.com/yinwu/p/11741479.html (opens new window) https://www.cnblogs.com/vicowong/p/11210144.html (opens new window)

# 六、常见问题

防火墙起动失败 (opens new window)

阿里云等网络服务器设置后外网仍不能访问?

登录阿里云控制开,出入规则设置一下。。。

留言:
    更新日期: 2022/2/8 下午11:10:51