firewall-cmd命令
查看防护墙状态
[root@node ~]# firewall-cmd --state
running
[root@node ~]# systemctl stop firewalld
[root@node ~]# firewall-cmd --state
not running
[root@node ~]# systemctl start firewalld
查看防火墙信息
[root@node ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports: 8080/tcp 8081/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
查看开放端口
[root@node ~]# firewall-cmd --list-port
8080/tcp 8081/tcp
查看防火墙规则
[root@node ~]# firewall-cmd --list-rich
查看某一端口是否放开
[root@node ~]# firewall-cmd --query-port=8081/tcp
yes
查看富规则rich rules
[root@node ~]# firewall-cmd --list-rich-rules
临时添加开放端口,执行reload后消失
[root@node ~]# firewall-cmd --add-port=8082/tcp
success
永久添加开放端口,执行reload后生效
更新防火墙规则:# firewall-cmd --reload
# firewall-cmd --complete-reload
两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务
[root@node ~]# firewall-cmd --permanent --add-port=8081/tcp
success
[root@node ~]# firewall-cmd --reload
success
临时关闭某一端口
[root@node ~]# firewall-cmd --remove-port=999/tcp
永久关闭某一端口
[root@node ~]# firewall-cmd --permanent --remove-port=999/tcp
获取所有支持的服务
[root@node ~]# firewall-cmd --get-services
[root@node ~]# firewall-cmd --list-services
临时增加服务
[root@node ~]# firewall-cmd --add-service=https
success
[root@node ~]# firewall-cmd --query-service=https
yes
[root@node ~]# firewall-cmd --reload
success
[root@node ~]# firewall-cmd --query-service=https
no
临时删除服务
[root@node ~]# firewall-cmd --query-service=https
yes
[root@node ~]# firewall-cmd --remove-service=https
success
[root@node ~]# firewall-cmd --query-service=https
no
[root@node ~]# firewall-cmd --reload
success
[root@node ~]# firewall-cmd --query-service=https
yes
永久增加服务
[root@node ~]# firewall-cmd --permanent --add-service=http
success
[root@node ~]# firewall-cmd --reload
success
[root@node ~]# firewall-cmd --query-service=http
yes
永久删除服务
[root@node ~]# firewall-cmd --permanent --remove-service=ssh
success
[root@node ~]# firewall-cmd --reload
success
[root@node ~]# firewall-cmd --query-servicessh
no
禁ping
[root@node ~]firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'
允许10.0.0.1主机能够访问http服务
[root@web02 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1 service name=http accept'
```
允许172.16.1.0/24能访问10050端口
```shell
[root@web02 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 port port=111 protocol=tcp accept'Copy to clipboardErrorCopied
允许public区域所有访问ssh,拒绝172.16.1.0/24网段连接
[root@web02 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=ssh reject'
允许public区域所有访问ssh,拒绝172.16.1.0/24网段连接
[root@web02 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=ssh drop'
#drop和reject区别:
drop 直接丢弃,不返回任何内容
reject拒绝,返回拒绝的内容Copy to clipboardErrorCopied
当用户来源IP地址是10.0.0.1主机,则将用户请求的5555端口转发至后端172.16.1.7的22端口
#端口转发
[root@web02 ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1 forward-port port=5555 protocol=tcp to-port=22 to-addr=172.16.1.7'
success
[root@web02 ~]# firewall-cmd --add-masquerade
successCopy to clipboardErrorCopied
#在指定zone中添加规则
[root@node ~]# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="10.45.2.35" accept' --permanent