最全的防火墙(firewalld)

第1章  防火墙的介绍

1.1  防火墙的介绍

1.1.1 概念

  • 动态管理防火墙服务(图形界面和linux界面都可以实现)
  • 支持不同防火墙的区域信息
  • 属于传输层次的防火墙

1.1.2 防火墙的默认规则

  • 经过防火墙进入的流量默认是阻止的
  • 经过防火墙流出的流量默认是允许的

1.2 防火墙常见的区域介绍

1.2.1 概念介绍

区域相当于防火墙配置好的策略模板信息,直接就可以使用

1.2.2 图示介绍

1.2.3 防火墙区域的应用规则

  • 一个地址或者接口只能设置一个zone区域来进行匹配规则信息
  • 不同的源地址可以对同一个区域进行不同的匹配规则信息
  • 运行时(runtime):修改规则马上生效,但是临时生效
  • 持久配置(permanent): 修改后需要重载才会生效

1.2.4 防火墙常见的9种区域

1.2.4.1 名词解释

只有传出网络连接可用    意思是只有服务器本身出去的流量,客户端接收到回应才可                            以进来,如果不是回应的流量是进不来的

只接受被选择的网络连接    意思是客户端发送请求的时候,指定的服务我是允许通过的,没有                        我指定的服务我是不允许的.

1.2.4.2 区域解释

  • drop            输入的数据包默认经过防火墙会丢弃并且无回应,只有传出网络连接可用
  • block        拒绝所有出入的数据包并且进行回应一条禁止主机ICMP的消息,只有传出网             络连接可用
  • public        只接受被选择的网络连接,用于公共区域。
  • extermal        去外部网络的时候会进行地址的伪装,只接受被选择的网络连接
  • dmz            外部部分指定的地区访问内部网络,只接受被选择的网络连接
  • work        处在工作区域内的计算机,只接受被选择的传入网络连接
  • home        处在家庭区域的计算机,只接受被选择的传入网络连接
  • internal        对于处在你内部网络的计算机,只接受被选择的传入网络连接
  • trusted        所有网络连接都接受

1.3 firewalld常见的参数信息:

1.3.1 firewall-config

  • firewall-config                                图形界面

1.3.2 firewall-cmd

  • --permanent                         配置写入到配置文件,否则临时马上生效
  • --reload                             重载配置文件,永久生效
  • zone=public                         指定区域为public
  • --get-default-zones                    获取默认区域
  • --set-default-zone=public            设置默认区域为public
  • --get-zones                        获取所有可用的区域
  • --get-active-zones                    获取当前激活(活跃)的区域
  • --add-source=                     添加地址,可以是主机或网段,遵循当前区域的                                     target
  • --remove-source                     移除地址,可以是主机或网段,遵循当前区域的                                     target
  • --add-service=                     添加服务,遵循当前区域的 target
  • --remove-service=                     移除服务,遵循当前区域的 target
  • --list-services                         显示指定区域内允许访问的所有服务
  • --add-port=                         添加端口,遵循当前区域的 target
  • --remove-port=                     移除端口,遵循当前区域的 target
  • --list-ports                        显示指定区域内允许访问的所有端口号
  • --add-interface= --zone=             添加网卡到指定区域
  • --change-interface=                 new-zone-name --改变网卡到指定区域
  • --list-all                             列出激活使用的区域的配置
  • --list-all-zones                     列出所有区域的配置
  • --get-zone-of-interface=             获取指定接口所在的区域
  • --list-icmp-blocks                     显示指定区域内拒绝访问的所有 ICMP 类型
  • --add-icmp-block=                 为指定区域设置拒绝访问的某项 ICMP 类型
  • --remove-icmp-block=             移除指定区域内拒绝访问某项的 ICMP 类型

1.3.2.1 常用的 ICMP 类型有

  • #echo-request                        类型 0,icmp 请求报文
  • #echo-reply                        类型 8,icmp 响应回复报文
  • --list-protocols                     列出在指定区域中允许通过的协议
  • --add-protocol=                     在指定区域中添加允许通过的协议
  • --remove-protocol=                 移除在指定区域中的某项协议
  • --get-target                         获取区域中的默认 target
  • --set-target=                         设置区域的 target

1.3.2.2 查看默认区域

  • firewall-cmd --get-default-zone                查看所有可以使用的区域
  • firewall-cmd --get-zones                        修改当前的默认区为 work
  • firewall-cmd --set-default-zone=work            在 work 区添加 http 服务并允许别人                                        访问
  • firewall-cmd --add-service=http --zone=work        在 public 区绑定了该地址范围,只        有该范围的 IP 的数据包都会路由到该区,由该区的规则进行匹配决定是否放行
  • firewall-cmd --add-source=172.25.0.10/32 --zone=public        查看活跃的区
  • firewall-cmd --get-active-zones                把接口绑定到 public 区
  • --change-interface= --new-zone-name            修改网卡所在的区域
  • --add-interface= --zone=                        添加网卡指定区域
  • firewall-cmd --get-zone-of-interface=IFACE        查看区域配置信息
  • firewall-cmd --list-all --zone=work            列出区域为work的详细信息
  • firewall-cmd --list-all                        列出所有区域的详细信息
  • firewall-cmd --get-services                    查看所有的服务信息

1.3.2.3 直接规则(直接规则主要用于使服务和应用程序能够增加规则)

  • --direct                                         指定将要使用直接规则
  • --get-all-chains                                获取所有的链
  • --get-chains {ipv4|ipv6|eb} <table>                获取表中的链
  • --add-chain {ipv4|ipv6|eb} <table> <chain>            添加链到表中(自定义的)
  • --remove-chain {ipv4|ipv6|eb} <table> <chain>        移除表中的某条链
  • --query-chain {ipv4|ipv6|eb} <table> <chain>        返回链是否已被添加到表
  • --get-all-rules                                     获取所有的策略规则
  • --get-rules {ipv4|ipv6|eb} <table> <chain>             获取指定表中指定链中的规则
  • --add-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>         在指定表中的指定

                        链添加规则

  • --remove-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>    优先从指定表中的指定链                                                    删除规则条目
  • --remove-rules {ipv4|ipv6|eb} <table> <chain>             从表中删除规则条目
  • --query-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...     返回是否优先的规

                        则已被添加到链表中

  • --passthrough {ipv4|ipv6|eb} <arg>...                     直接传递 iptables 的命令
  • --get-all-passthroughs                                 获取所有直接传递的规则
  • --get-passthroughs {ipv4|ipv6|eb} <arg>...                 获取跟踪直通规则
  • --add-passthrough {ipv4|ipv6|eb} <arg>...                 添加一个直接规则
  • --remove-passthrough {ipv4|ipv6|eb} <arg>...             移除一个直接规则
  • --query-passthrough {ipv4|ipv6|eb} <arg>...             查询直接规则是否添加
1.3.2.3.1 添加一些直接规则以将某个 IP 范围列入黑名单(所有来自 192.168.0.0/24 网络 IP,单个 IP 每分钟最高连接并发是 1,超过并发的连接都丢弃)

[root@lb01 ~] # firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist

[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist

[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted

[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP

[root@lb01 ~] # firewall-cmd --reload

[root@lb01 ~] # firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist        添加一条链规则为blacklistraw表中

[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist                                raw表中指定blacklist链添加规则

[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted                    规则为单个IP每分钟并发量为1

[root@lb01 ~] # firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP        其他的都阻止

[root@lb01 ~] # firewall-cmd --reload                重新加载

[root@lb01 ~] # firewall-cmd --direct --get-all-rules

ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist

ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted

ipv4 raw blacklist 1 -j DROP

[root@lb01 ~] #

[root@lb01 ~] # firewall-cmd --direct --get-all-rules                 获取所有链上面的规则信息

ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist

ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted

ipv4 raw blacklist 1 -j DROP

[root@lb01 ~] #

[root@lb01 ~] # firewall-cmd --permanent --direct --remove-rules ipv4 raw blacklist

[root@lb01 ~] # firewall-cmd --permanent --direct --remove-rules ipv4 raw PREROUTING

[root@lb01 ~] # firewall-cmd --direct --remove-rules ipv4 raw blacklist

[root@lb01 ~] # firewall-cmd --direct --remove-rules ipv4 raw PREROUTING

[root@lb01 ~] # firewall-cmd --direct --remove-chain ipv4 raw blacklist

[root@lb01 ~] # firewall-cmd --reload

[root@lb01 ~] # firewall-cmd --direct --get-all-rules

[root@lb01 ~] # firewall-cmd --permanent --direct --remove-rules ipv4 raw blacklist        永久表中删除链规则信息

[root@lb01 ~] # firewall-cmd --permanent --direct --remove-rules ipv4 raw PREROUTING    永久删除链上的规则信息

[root@lb01 ~] # firewall-cmd --direct --remove-rules ipv4 raw blacklist            删除链上的规则信息

[root@lb01 ~] # firewall-cmd --direct --remove-rules ipv4 raw PREROUTING        删除链上的规则信息

[root@lb01 ~] # firewall-cmd --direct --remove-chain ipv4 raw blacklist            删除链上的规则信息

[root@lb01 ~] # firewall-cmd --reload                                    重新加载配置信息

[root@lb01 ~] # firewall-cmd --direct --get-all-rules                        查看链上的所有规则信息

1.3.2.3.2 利用 firewalld 直接规则来做 SNAT 和 MASQUERADE 实现内网共享上网
  • 方法一

[root@lb01 ~] # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 172.16.1.0/24

  • 方法二

[root@lb01 ~] # firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j SNAT -s 172.16.1.0/24 --to-source 10.0.0.5

  • 其他的一些操作

    

[root@lb01 ~] # firewall-cmd --direct --get-all-passthroughs            查看添加的直接规则

[root@lb01 ~] # firewall-cmd --permanent --direct --remove-passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j MASQUERADE -s 172.16.1.0/24                删除直接规则

[root@lb01 ~] # firewall-cmd --permanent --direct --remove-passthrough ipv4 -t nat -I POSTROUTING -o eth0 -j SNAT -s 172.16.1.0/24 --to-source 10.0.0.5        删除直接规则

1.4 firewalld常见的文件

  • /etc/firewalld/{services,zones}/*.xml 优先级最高,permanent 模式生效的策略会放到这                                    
  • /lib/firewalld/{services,zones}/*.xml 优先级要低些,是一些默认配置,可以当做模板使                                    

1.5 firewalld的富规则配置

1.5.1 富规则常见的参数信息

1.5.1.1 firewall-cmd

  • --list-rich-rules                列出富规则
  • --add-rich-rule=<rule>            使用富规则语言添加富规则
  • --remove-rich-rule=<rule>        移除富规则
  • --query-rich-rule=<rule>         查询某条富规则是否存在
  • --list-all 和 --list-all-zones         也能列出存在的富规则

1.5.1.2 富规则的常用语法

1.5.1.2.1 rule
  • [source]
  • [destination]
  • service|port|protocol|icmp-block|masquerade|forward-port
  • [log]
  • [audit]
  • [accept|reject|drop]
1.5.1.2.2 rule后面具体接的信息
  • rule [family="ipv4|ipv6"]
  • source address="address[/mask]" [invert="True"]
  • destination address="address[/mask]" invert="True"
  • service name="service name"
  • port port="port value" protocol="tcp|udp"
  • protocol value="protocol value"
  • forward-port port="port value" protocol="tcp|udp" to-port="port value
  • " to-addr="address"
  • log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"]
  • accept | reject [type="reject type"] | drop

1.5.1.3 使用富规则进行日志记录和调试(--timeout=n秒,表示n秒之后规则失效)

1.5.1.3.1 使用富规则记录到 syslog 的基本语法为:

log [prefix="<PREFIX TEXT>" [level=<LOGLEVEL>] [limit value="<RATE/DURATION>"]

  • <PREFIX TEXT>可以是自己的日志前缀
  • <LOGLEVEL> 可以是 emerg 、 alert 、 crit 、 error 、 warning 、 notice 、 info 或

    debug 之一

  • <RATE/DURATION>" 可以是 s(表示秒)、m(表示分钟)、h(表示小时)或 d(表示天)之一

例如:limit value=3/m 会将日志消息限制为每分钟最多三条。

注意:limit value = 3/m 这里是有 BUG 的,常常时间控制会不精准。

  • 调试(--timeout=n秒,表示n秒之后规则失效)

1.5.1.4 常用的富规则例子

1.5.1.4.1 批量添加多个端口信息(200-5000)

[root@lb01 ~] # firewall-cmd --permanent --zone=public --add-rich-rule='

> rule family=ipv4

> source address=192.168.1.31

> port port=200-5000

> protocol=tcp accept'

success

1.5.1.4.2 接受从 work 区域到 SSH 的新连接, 以 notice 级别且每分钟最多三条消息的方式将新连接记录到 syslog。

[root@lb01 ~] # firewall-cmd --permanent --zone=work --add-rich-rule='rule service name="ssh"

log prefix="ssh"

level="notice"

limit value="3/m" accept'

success

[root@lb01 ~] #

1.5.1.4.3 在接下来五分钟内, 将拒绝从默认区域中子网2001: db8: : /64到DNS的新IPv6连接,并且拒绝的连接将记录到audit系统,且每小时最多一条消息。

[root@lb01 ~] # firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" service name="dns" audit limit value="1/h" reject' --timeout=300

success

[root@lb01 ~] #

1.5.1.4.4 用于调试,规则在 300 秒后失效,防止规则设定错误导致网络连接断开

[root@lb01 ~] # firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.1 service name=ssh drop' --timeout=300

success

[root@lb01 ~] #

1.5.1.4.5 只允许 172.16.1.0/24 访问,并且记录日志,日志级别为 notice,日志前缀为"NEW HTTP ",限制每秒最多 3 个并发 ,要求持久化生效

[root@lb01 ~] # firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.1.0/24 service name=http log prefix="NEW HTTP" level=notice limit value="3/s" accept'

success

You have new mail in /var/spool/mail/root

[root@lb01 ~] #

1.6 firewalldNAT和端口转发

1.6.1 网络地址转换(NAT)

firewalld 支持两种类型的网络地址转换(NAT) 伪装和端口转发。可以在基本级别使用常规

frewall-cmd 规则来同时配置这两者,更高级的转发配置可以使用富规则来完成。

这两种形式的 NAT 会在发送包之前修改包的某些方面如源或目标。

1.6.2 伪装(注意:伪装只能和 ipv4 一起用,ipv6 不行)

伪装是一种形式的网络地址转换(NAT)

内网地址想出去外网的时候,需要进行伪装成外网地址才可以出去访问

1.6.2.1 配置伪装的方式

1.6.2.1.1 普通的方式进行配置

[root@lb01 ~] # firewall-cmd --zone=public --add-masquerade

1.6.2.1.2 富规则的方式进行配置

[root@lb01 ~] # firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=172.25.0.10/32 masquerade'

1.6.3 端口转发

通过端口转发指向单个端口的流量将转发到不同的计算机不同端口上或者不同的计算机上

通常是一个隐藏的服务器在另外一个服务器后面

1.6.3.1 端口转发的一个重要点

注意:当端口转发配置为将包转发到不同计算机时,从该计算机的任何回复通常将直接从该计算机发送到原始客户端。这将在大部分配置上导致无效连接,因此转发到的计算机必须通过执行端口转发的防火墙来进行伪装。常见配置是将端口从防火墙计算机转发到已在防火墙

后面伪装的计算机,即这种通过目标端口转发的方式需要开启伪装(masquerade)

1.6.3.2 要使用常规fircwall-cmd命令配置端口转发,可以使用firewalld提供的端口转发语法:

firewall-cmd --permanent --zone=<ZONE> --add-forward-port=port=<PORTNUMBER>:proto=<PROTOCOL>[:toport=<PORTNUMBER>][:toaddr=<IPADDR>]

1.6.3.2.1 toport=toaddr 两部分均可选,但需要至少指定这两者之一(对于来自public区域的客户端,以下命令会将防火墙上通过端口513/TCP传入的连接转发到IP地址为192.168.0.254的计算机上的端口132/TCP)

firewall-cmd --permanent --zone=public --add-forwardport=port=513:proto=tcp:toport=132:toaddr=192.168.0.254

1.6.3.3 要在更大程度上控制端口转发规则,可以将以下语法与富规则配合使用来实现端口转发,这也是我们推荐使用的方式

1.6.3.3.1 语法

forward-port port=<PORTNUM> protocol=tcp|udp [to-port=<PORTNUM>] [to-addr=<ADDRESS>]

1.6.3.3.2 以下示例使用富规则将来自work区域中192.168.0.0/4且传入到端口80/TCP的流星转发到防火墙计算机自身上面的和端口8080/TCP:

firewall-cmd --permanent --zone=work --add-rich-rule='rule family=ipv4 source address=l92.168.0.0/24 forward-port port=80 protocol=tcp to-port=8080'

1.6.3.4 端口转发示例

1.6.3.4.1 把来自172.16.2.0/24并且访问的端口为tcp的443端口的数据包进行端口转发,转发到本机的tcp的22端口

[root@lb01 ~] # firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.16.2.0/32 forward-port port=443 protocol=tcp to-port=22'

success

You have new mail in /var/spool/mail/root

[root@lb01 ~] #

1.6.3.4.2 实现172.16.2.10转发成172.16.5.10

[root@lb01 ~] # firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.2.10 forward-port port=80 to-port=80 protocol=tcp to-addr=172.16.5.10'

success

[root@lb01 ~] #

1.6.4 一键断网

[root@lb01 ~] # firewall-cmd --panic-on                打开一键断网

success

 

[root@lb01 ~] # firewall-cmd --panic-off                关闭一键断网

success

1.6.5 重新会加载内核中的防火墙模块和配置文件

[root@lb01 ~] # firewall-cmd --complete-reload

1.7 firewalld的自定义区域和服务信息

1.7.1 自定义的区域

  • 参照/lib/firewalld/zones/public.xml文件,在/lib/firewalld/zones/下面新建你需要的区域名以.xml结尾,内容格式参照public.xmltrusted.xml等文件即可。

[root@lb01 ~] # cat /lib/firewalld/zones/public.xml

<?xml version="1.0" encoding="utf-8"?>

<zone>

<short>Public</short>                修改成自己要设置的区域名称

<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>

<service name="ssh"/>                允许什么流量的服务来进入防火墙

<service name="dhcpv6-client"/>        允许什么流量的服务来进入防火墙

</zone>

You have new mail in /var/spool/mail/root

[root@lb01 ~] #

1.7.2 自定义服务

  • 参照/usr/lib/firewalld/services/ssh.xml,在/usr/lib/firewalld/services/下面新建你需要的服务名以.xml结尾,内容格式参照ssh.xmlsamba.xml文件中的内容即可。

[root@lb01 ~] # cat /lib/firewalld/services/ntp.xml

<?xml version="1.0" encoding="utf-8"?>

<service>

<short>Network Time Protocol (NTP) Server</short>            服务的一个标题

<description>The Network Time Protocol (NTP) allows to synchronize computers to a time server. Enable this option, if you are providing a NTP server. You need the ntp or chrony package installed for this option to be useful.</description>            服务描述

<port protocol="udp" port="123"/>                配置服务下面的协议和端口信息

</service>

You have new mail in /var/spool/mail/root

[root@lb01 ~] #

1.8 firewalld常使用的一些配置总结

1.8.1 服务状态信息

systemctl start firewalld

systemctl stop firewalld

systemctl restart firewalld

systemctl status firewalld

firewall-cmd --state

1.8.2 配置文件

/etc/firewalld/{services,zones}/*.xml 优先级最高,permanent 模式生效的策略会放到这里

/lib/firewalld/{services,zones}/*.xml 优先级要低些,是一些默认配置,可以当做模板使用

1.8.3 查看防火墙的配置情况

[root@lb01 ~] # firewall-cmd --list-all

1.8.4 应急命令(一键断网)

[root@lb01 ~] # firewall-cmd --panic-off        应急模式关闭(远程ssh可以连接)

[root@lb01 ~] # firewall-cmd --query-panic     查看是否为应急模式(yes,no不是)

[root@lb01 ~] # firewall-cmd --panic-on        应急模式开启(远程ssh不可以连接,只能本地可以登录)

1.8.5 添加服务和端口以及协议

  • firewall-cmd --add-service=<service name>                添加服务
  • firewall-cmd --remove-service=<service name>            移除服务
  • firewall-cmd --add-port=<port>/<protocol>                添加端口/协议(TCP/UDP)
  • firewall-cmd --remove-port=<port>/<protocol>            移除端口/协议(TCP/UDP)
  • firewall-cmd --list-ports                                查看开放的端口
  • firewall-cmd --add-protocol=<protocol>                 允许协议 (例:icmp)
  • firewall-cmd --remove-protocol=<protocol>                取消协议
  • firewall-cmd --list-protocols                            查看允许的协议

 

1.8.6 表示允许来自 192.168.2.1 的所有流量

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip/netmask>" accept"

例子

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" accept"

1.8.7 允许 192.168.2.208 主机的 icmp 协议,即允许 192.168.2.208 主机 ping

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" protocol

value="<protocol>" accept"

例子

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" protocol

value="icmp" accept"

1.8.8 允许 192.168.2.1 主机访问 22 端口

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" port

protocol="<port protocol>" port="<port>" accept"

例子

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" port

protocol="tcp" port="22" accept"

1.8.9 禁止 192.168.2.0/24 网段的主机访问 22 端口。

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source

address="192.168.2.0/24" port protocol="tcp" port="22" reject"

1.8.10 本地端口转发

firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.2.10/32 forward-

port port=80 to-port=22 protocol=tcp accept'

1.8.11 目标地址转发

firewall-cmd --permanent --add-masquerade

firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.16.2.10/32 forward-

port port=80 to-port=80 protocol=tcp to-addr=172.17.0.254 accept'

1.8.12 映射成防火墙的IP

要在更大程度上控制要进行伪装的客户端,还可以使用富规则。

firewall-cmd --permanent --zone=<ZONE> --add-rich-rule='rule family=ipv4 source

address=192.168.1.7 masquerade'

猜你喜欢

转载自www.cnblogs.com/liangyuxing/p/12045072.html