firewall-cmd 一些例子

Zones

[root@orc2 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: dhcpv6-client ssh
  ports: 12345/tcp
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

默认接口ens3属于public,这意味着所有外部连入IP都适用于public这个zone的规则。

生效时间

新建规则,

  • 不加--permanent参数,立即生效,重载firewall-cmd --reload后失效。
  • 加上--permanent参数,不生效,重载firewall-cmd --reload后才生效。

如果你写了很多条没有加--permanent参数的命令,要全部保存他们,可使用命令firewall-cmd --runtime-to-permanent

规则写法

开启端口

firewall-cmd --zone=public --add-port=5000/tcp
firewall-cmd --zone=public --permanent --add-port=4990-4999/udp

关闭端口

firewall-cmd --zone=public --add-remove=5000/tcp
firewall-cmd --zone=public --permanent --remove=4990-4999/udp

查看打开的端口

此处只能查看单条规则打开的E端口,看不到服务,也就是规则集合打开的端口。
firewall-cmd --zone=public --permanent --list-ports

查看允许的服务(规则集)

firewall-cmd --zone=public --list-services

允许一个服务(规则集)

firewall-cmd --zone=public --permanent --add-service=http

禁用一个服务(规则集)

firewall-cmd --zone=public --permanent --remove-service=http

服务(规则集)编写

<?xml version="1.0" encoding="utf-8"?>
<service>
 <short>此处填服务名称</short>
 <description>该服务是干嘛干嘛的,需要打开以下端口</description>
 <port protocol="udp" port="12345"/>
 <port protocol="tcp" port="12345"/>
 <port protocol="udp" port="12346"/>
 <port protocol="udp" port="12346"/>
 <module name="nf_conntrack_netbios_ns"/>
</service>

针对一个IP段打开所有端口

iptables里面,在input链添加一个src就表示这个ip可以连接本机所有端口。但firewalld不是,如果你在public zone添加了一个source ip,表示这个IP属于public zone,将应用public zone 里面的规则。但是,firewalld默认所有未定义的流量都会应用public zone的规则,所以,无论是否把一个ip加入到public zone,没有任何区别。

要实现针对1个ip定制规则,需要将这个ip添加到另一个zone,在另一个zone里面定制规则。
将这个IP段,以及打开所有端口的命令,都放在trusted zone里面。

firewall-cmd --zone=trusted --add-port=0-65535/tcp  --permanent 
firewall-cmd --zone=trusted --add-source=103.12.0.0/16  --permanent 
firewall-cmd --reload

效果如下。

[root@orc2 ~]# firewall-cmd --zone=trusted --list-all
trusted (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 103.12.0.0/16
  services: 
  ports: 0-65535/tcp
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
文章目录