第三章firewalld防火墙(二)
一.IP伪装与端口转发
- nat技术一般配置在企业边界路由器或防火墙
2.Firewalld支持两种类型的网络地址转换
2.1 IP地址伪装(masquerade)
可以实现局域网多个地址共享单一公网地址上网
IP地址伪装仅支持IPv4,不支持IPv6
2.2端口转发(Forward-port)
也称为目的地址转换或端口映射
通过端口转发,指定IP地址及端口的流量将被转发到相同计算机上的不同端口,或者转发到不同计算机上的端口
例:企业内网服务器一般采用私网地址,可以通过端口转发将私网地址的服务器发布到公网,以便互联网用户访问。当接收到互联网用户的http请求时,网关服务器判断数据包的目标地址和目标端口,一旦匹配指定规则,则将其目标地址修改为内网的真正服务器地址,从而建立有效连接。
二、firewall-cmd高级配置
直接接口设置 firewalld 有一个被称为“direct interface”(直接接口),它可以直接通过 iptables、ip6tables 和 ebtables 的规则。它适用于应用程序,而不是用户。firewalld 保持对所增加项目的追踪,所以它还能质询 firewalld 和发现由使用直接端口模式的程序造成的更改。直接端口由增加 --direct 选项到 firewall-cmd 命令来使用。直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。这些规则不是永久性的,它们需要在每次通过 D-BU S 从 firewalld 接到启动、重新启动和重新加载信息后运用。
例如添加端口 tcp 9999 端口。 # firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT
firewall-cmd – reload
给复杂防火墙规则配置富规则(Rich Language)
通过“rich language”语法,可以用比直接接口方式更易理解的方法建立复杂防火墙规则。此外还能永久保留设置。这种语言可以用来配置分区,也仍然支持现行的配置方式。所有命令都必须以 root 用户身份运行
1.firewalld中理解直接规则
1.1 直接规则(direct interface)
1)允许管理员手动编写的iptables、ip6tables和ebtables 规则插入到Firewalld管理的区域中
2)通过firewall-cmd命令中的–direct选项实现
3)除显示插入方式之外,优先匹配直接规则
红帽6以前的防火墙4表5链
table表:raw、mangle、nat、filter
chain链:input、output、forward、prerouting、 postrouting
实例:把192.168.0.0/24ip地址范围列入黑名单
添加规则链 blacklist
[root@localhost ~]# firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
来自192.168.0.0/24的数据包路由前选择匹配blacklist
[root@localhost ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist
将‘blacklisted’内容的日志每分钟记录一次
[root@localhost ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix “blacklisted”
匹配blacklist规则的数据丢弃
[root@localhost ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP
查看直接规则
firewall-cmd --direct --get-rules ipv4 raw blacklist
2.使用富语言规则–解决基本语法中未涵盖的自定义防火墙规则
2.1富语言(rich language)
1)表达性配置语言,无需了解iptables语法
2)用于表达基本的允许/拒绝规则、配置记录(面向syslog和auditd)、端口转发、伪装和速率限制
3)规则的每个单一元素都可以 option选项=value值的形式来采用附件参数
4)区域内规则排序相同,依次进行匹配,匹配成功就结束;当任何规则不匹配时默认拒绝。(例外:trusted区域允许不匹配的包)
@@如果匹配的是记录规则,将继续处理
@@直接规则例外,首先解析直接规则
5)超时选项(测试和调试)
@@超时:包含超时选项的规则添加到防火墙后,计时器会自动倒计时,归零时该规则删除
@@配置远程防火墙时,极其有用。防止该规则影响管理员无法远程进入系统。
@@测试成功后再取消超时选项
@@ --timeout=超时时间
6)对富规则的处理命令
--add-rich-rule=‘富规则’ 没有指定区域即默认区域
--remove-rich-rule=‘富规则’ 删除
--query-rich-rule=‘富规则’ 查询规则是否已添加(存在:0;否则:1)
--list-rich-rules 输出指定区域的富规则
firewall-cmd --list-all
firewall-cmd --list-all-zones
2.2 firewall-cmd处理富语言规则的常用选项
rule [family=""]
[ source address="
[ destination address="" [invert=“True”] ]
[ ]
[ log [prefix=""] [level=""] [limit value=“rate/duration”] ]
[ audit ]
[ accept|reject|drop ]
2.3 富语言规则具体语法
-1 family="" 定义富规则名称(
-2 source(destination):源(目标)ip地址或地址段、
-3 element:要素
1)service:firewalld提供的某种服务(firewall-cmd --get-services 获取)。如果服务提供的默认目标地址和规则中的目标地址冲突,会导致一个错误。
命令:service name=服务名称
2)port:tcp或udp端口或端口范围(例:1234-1236)
语法:port port=端口或范围 protocol=协议名称
3)protocol:协议id号或协议名称(可查询/etc/protocols获取)
语法:protocol value=协议名或协议id
4)icmp-block:阻断一或多个icmp类型(firewall-cmd --get-icmptypes查看类型)
语法:icmp-block name=icmp类型名称
5)masquerade:IP伪装--只使用源地址来伪装
6)forward-port:转发到其他端口
port、to-port:端口或端口范围
to-addr:目标地址为简单的ip地址
语法:forward-port port=端口或端口范围 protocol=协议 to-port=端口或端口范围 to-addr=目标地址
-4 log:注册有内核日志的连接请求到规则中(例:系统日志)。可定义一个前缀文本把日志信息作为前缀加入。
1)日志级别:emerg、alert、crit、error、warning、notice、info、debug
2)语法:log [ prefix=前缀文本] [level=日志级别] limit value=频率(次数/时间)
3)时间:s-秒;m–分钟;h—小时;d—天
4)最大限定值:value=1/d 每天最多一条日志
-5 audit 审核:审核类型为accept、reject、drop,但不能在audit命令后指定。审核类型会自动在规则动作中收集。审核的使用可选择。
-6 控制类型:accept|reject|drop
语法:accept|reject [ type=拒绝类型] | drop
accept:所有新的连接请求被允许
reject:拒绝,发起端将接到一个拒绝信息
drop:丢弃,同时不向发起端发送信息
2.4 规则配置举例
为认证报头协议AH使用新的ipv4和ipv6连接
[root@gateway-server ~]# firewall-cmd --add-rich-rule=‘rule protocol value=ah accept’
允许连接ftp,使用审核,每分钟记录1次
[root@gateway-server ~]# firewall-cmd --add-rich-rule=‘rule service name=ftp log limit value=1/m audit accept’
允许来自192.168.0.0/24的地址的tftp协议的ipv4连接,并且使用系统日志每分钟记录1次info级别信息
[root@gateway-server ~]# firewall-cmd --add-rich-rule=‘rule family=“ipv4” source address=“192.168.0.0/24” service name=“tftp” log prefix=“tftp” level=“info” limit value=“1/m” accept’
为radius拒绝所有来自此地址的ipv6连接,同时记录日志前缀为dns,级别为info;每分钟最多记录3次
[root@gateway-server ~]# firewall-cmd --add-rich-rule=‘rule family=“ipv6” source address=“1:2:3:4:6::” service name=“radius” log prefix=“dns” level=“info” limit value=“3/m” reject’
接受来自其他发起端的新的ipv6连接
[root@gateway-server ~]# firewall-cmd --add-rich-rule=‘rule family=“ipv6” service name=“radius” accept’
允许192.168.2.2的所有连接
[root@gateway-server ~]# firewall-cmd --add-rich-rule=‘rule family=“ipv4” source address=“192.168.2.2” accept’
拒绝来自public区域的192.168.0.11的所有连接
[root@gateway-server ~]# firewall-cmd --zone=public --add-rich-rule=‘rule family=“ipv4” source address=192.168.0.11/32 reject’
IPsec 封装安全负载(IPsec ESP)是 IPsec 体系结构中的一种主要协议,其主要设计来在 IPv4 和 IPv6 中提供安全服务的混合应用。IPsec ESP 通过加密需要保护的数据以及在 IPsec ESP 的数据部分放置这些加密的数据来提供机密性和完整性。
丢弃来自默认区域的所有进入的ipsec应用的esp协议包
[root@gateway-server ~]# firewall-cmd --add-rich-rule=‘rule protocol value=“esp” drop’
在dmz区域中,接收来自192.168.1.0网段tcp端口范围为7900-7905的数据包
[root@gateway-server ~]# firewall-cmd --zone=dmz --add-rich-rule=‘rule family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept’
接收从work区域到ssh服务的新连接,以notice级别且每分钟最多3次记录信息到syslog
[root@gateway-server ~]# firewall-cmd --zone=work --add-rich-rule=‘rule service name=ssh log prefix=“ssh” level=“notice” limit value=“3/m” accept’
超时时间为5分钟(5分钟后该规则删除)。拒绝从默认区域到dns的新连接,且每小时1次记录到audit审核系统。
[root@gateway-server ~]# firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=192.168.2.0/24 service name=dns audit limit value=“1/h” reject’ --timeout=300
success
[root@localhost ~]# firewall-cmd --add-rich-rule='rule family=“ipv4” source address=“192.168.1.10/32” icmp-block name=“echo-request” ’ --timeout=30
[root@gateway-server ~]# firewall-cmd --list-all-zones
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
dmz (active)
target: default
icmp-block-inversion: no
interfaces: ens37
sources:
services: ssh
ports: 12345/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family=“ipv4” source address=“192.168.1.0/24” port port=“7900-7905” protocol=“tcp” accept
drop
target: DROP
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
external (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh
ports: 12345/tcp
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule protocol value=“ah” accept
rule service name=“ftp” log limit value=“1/m” audit accept
rule family=“ipv4” source address=“192.168.0.0/24” service name=“tftp” log prefix=“tftp” level=“info” limit value=“1/m” accept
rule family=“ipv6” source address=“1:2:3:4:6::” service name=“radius” log prefix=“dns” level=“info” limit value=“3/m” reject
rule family=“ipv6” service name=“radius” accept
rule family=“ipv4” source address=“192.168.2.2” accept
rule protocol value=“esp” drop
rule family=“ipv4” source address=“192.168.2.0/24” service name=“dns” audit limit value=“1/h” reject
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh mdns samba-client dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
internal
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh mdns samba-client dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family=“ipv4” source address=“192.168.0.11/32” reject
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: ens36
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
work
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule service name=“ssh” log prefix=“ssh” level=“notice” limit value=“3/m” accept
查看富规则
[root@gateway-server ~]# firewall-cmd --list-rich-rules
如何清空防火墙规则
#如果防火墙配置了规则很多如果清空规则呢?firewalld默认没有命令来清空规则。但是我们可以通过编辑配置文件来清除规则。
/etc/firewalld/zones/ 此处为配置生效后保存的配置文件,一般建议修改前先备份。
此目录会显示已经配置的规则
[root@gateway-server ~]# ll /etc/firewalld/zones/
总用量 16
-rw-r–r-- 1 root root 331 10月 1 14:36 dmz.xml
-rw-r–r-- 1 root root 342 10月 1 14:34 external.xml
-rw-r–r--. 1 root root 315 9月 1 18:54 public.xml
-rw-r–r--. 1 root root 315 9月 1 18:54 public.xml.old
[root@gateway-server ~]# cd /etc/firewalld/zones/
[root@gateway-server zones]# vim dmz.xml
[root@gateway-server zones]# vim external.xml
[root@gateway-server zones]# vim public.xml
[root@gateway-server zones]# vim public.xml.old
[root@gateway-server zones]# cd
创建备份目录
[root@gateway-server ~]# mkdir /tmp/firewall.bak
[root@gateway-server ~]# mv /etc/firewalld/zones/* /tmp/firewall.bak/
[root@gateway-server ~]# firewall-cmd --set-default-zone=public
重启服务
[root@gateway-server ~]# systemctl restart firewalld
修改完重启服务或者重载服务。
!!最后修改相关网卡的配置文件(/etc/sysconfig/network-scripts/)
配置firewalld地址伪装和端口转发
实验环境
1.linux-1 网关服务器
网卡1 ens33 vmnet1 internet 100.1.1.10/24
网卡2 ens36 vmnet2 企业内网 192.168.1.1/24
网卡3 ens37 vmnet3 网站服务器区 192.168.2.1/24
基础配置:ip a
查看活动的网络接口,为ens33,36,37
- linux-2 内网网站服务器
ens33 vmnet3 192.168.2.10/24 网关:192.168.2.1
3.linux-3 企业内网测试机
vmnet2 192.168.1.10/24 网关:192.168.1.1
4.linux-4 外网网站服务器
vmnet1 100.1.1.20
为了更真实的模拟,就不再指网关。访问内网web服务器192.168.2.10时需要访问网关服务器的外网网卡100.1.1.10 ,然后网关服务器会把请求转发到内网web服务器。
需求描述
1.网关服务器
1)连接互联网网卡ens33地址为100.1.1.10,为公网IP地址,分配到firewall的external区域;
2)连接内网网卡ens36地址为192.168.1.1,分配到firewall的trusted区域;
3)连接服务器网卡ens37地址为192.168.2.1,分配到firewall的dmz区域
2.内网网站服务器和网关服务器
1)均通过SSH来远程管理,为了安全,将SSH默认端口
网关服务器更改为54321
内网网站服务器改为12345
3.网站服务器 192.168.2.10
1)开启 HTTPS,过滤未加密的HTTP流量(实验环境中继续使用http)
2)网站务器拒绝ping,网关服务器拒绝来自互联网上的ping
4.公司内网用户需要通过网关服务器共享上网
5.互联网用户需要访问网站服务器
实验步骤:
基本配置
一、网关服务器 192.168.1.1
1.配置主机名和网卡地址
[root@gateway-server ~]# hostname gateway-server
[root@gateway-server ~]# vim /etc/hostname
gateway-server
[root@gateway-server ~]# ip a
2.开启网关路由器的路由转发功能
[root@gateway-server ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@gateway-server ~]# sysctl -p
3.配置防火墙
启用防火墙
[root@gateway-server ~]# systemctl start firewalld
查看防火墙状态
[root@gateway-server ~]# firewall-cmd --state
更改默认区域为external
[root@gateway-server ~]# firewall-cmd --set-default-zone=external
查看结果
[root@gateway-server ~]# firewall-cmd --list-all
ens33----external区域
[root@gateway-server ~]# firewall-cmd --change-interface=ens33 --zone=external
ens36–trusted区域
[root@gateway-server ~]# firewall-cmd --change-interface=ens36 --zone=trusted
ens37–dmz区域
[root@gateway-server ~]# firewall-cmd --change-interface=ens37 --zone=dmz
查看配置情况
[root@gateway-server ~]# firewall-cmd --get-active-zones
dmz
interfaces: ens37
external
interfaces: ens33
trusted
interfaces: ens36
##验证:客户机 192.168.1.10 是否能够访问网站
curl http://192.168.2.10
3.2 更改ssh的侦听端口为54321(实验环境添加端口)
[root@gateway-server ~]# vim /etc/ssh/sshd_config
17 Port 22
18 Port 54321
[root@gateway-server ~]# systemctl restart sshd
在external区域添加tcp端口54321,实现互联网远程登录ssh
[root@gateway-server ~]# firewall-cmd --zone=external --add-port=54321/tcp --permanent
external区域禁止ping网关服务器
[root@gateway-server ~]# firewall-cmd --zone=external --add-icmp-block=echo-request --permanent
重新加载防火墙
[root@gateway-server ~]# firewall-cmd --reload
验证:
1.互联网测试机 100.1.1.20
[root@localhost ~]# ping -c 3 100.1.1.10
[root@localhost ~]# ssh -p 54321 root@100.1.1.10 ip a
2.内网测试机 192.168.1.10
[root@localhost ~]# ping -c 3 100.1.1.10
二、内网网站服务器 192.168.2.10
[root@localhost ~]# hostname web
[root@localhost ~]# vim /etc/hostname
[root@localhost ~]# bash
[root@web ~]# ip a
查看路由
[root@web ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 ens33
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 ens33
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
安装测试站点及首页
[root@web ~]# yum -y install httpd mod_ssl
[root@web ~]# systemctl enable httpd.service
[root@web ~]# systemctl start httpd.service
[root@web ~]# echo “192.168.2.10” >/var/www/html/index.html
更改ssh的侦听端口为12345(实验环境添加端口)
[root@web ~]# vim /etc/ssh/sshd_config
17 Port 22
18 Port 12345
[root@web ~]# systemctl restart sshd
查看防火墙状态
[root@web ~]# firewall-cmd --state
not running
启用防火墙
[root@web ~]# systemctl start firewalld
[root@web ~]# firewall-cmd --state
running
更改默认区域
[root@web ~]# firewall-cmd --set-default-zone=dmz
Warning: ZONE_ALREADY_SET: dmz
success
查看区域配置
[root@web ~]# firewall-cmd --list-all
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
添加https及http服务
[root@web ~]# firewall-cmd --zone=dmz --add-service=https --permanent
[root@web ~]# firewall-cmd --zone=dmz --add-service=http --permanent
添加端口12345
[root@web ~]# firewall-cmd --zone=dmz --add-port=12345/tcp --permanent
禁止ping
[root@web ~]# firewall-cmd --zone=dmz --add-icmp-block=echo-request --permanent
重新加载服务
[root@web ~]# firewall-cmd --reload
查看区域配置
[root@web ~]# firewall-cmd --list-all
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh https http
ports: 12345/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks: echo-request
rich rules:
验证:
1.外网测试机 100.1.1.20
[root@localhost ~]# curl http://192.168.2.10
curl: (7) Failed to connect to 192.168.2.10: 网络不可达
[root@localhost ~]# ssh -p 12345 root@192.168.2.10 ip a
ssh: connect to host 192.168.2.10 port 12345: Network is unreachable
结果分析:外网测试机没有指定网关,所以目前无法和内网服务器连接
2.内网测试机:192.168.1.10
[root@localhost ~]# curl http://192.168.2.10
192.168.2.10
[root@localhost ~]# ping -c 3 192.168.2.10
[root@localhost ~]# ssh -p 12345 root@192.168.2.10 ip a
结果分析:内网测试机验证结果符合网站服务器防火墙规则。
二 配置ip伪装---实现内部局域网共享上网
一、外网网站服务器 100.1.1.20
搭建测试站点及首页
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo “100.1.1.20” >/var/www/html/index.html
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl start httpd
验证:由于网关服务器的external区域默认开启了地址伪装,无论内部客户机还是dmz网站服务器都可以访问外网网站
- 网关服务器 192.168.1.1
[root@gateway-server ~]# firewall-cmd --list-all --zone=external
external (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh
ports: 12345/tcp
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks: echo-request
rich rules:
2.内网客户机 192.168.1.10 、内网网站服务器 192.168.2.10
[root@localhost ~]# curl http://100.1.1.20
100.1.1.20
二、只为内部局域网主机开启地址伪装
1.网关服务器
关闭external地址伪装,添加富规则(要求external区域内,源地址为192.168.1.0/24网段开启地址ip伪装)
[root@gateway-server ~]# firewall-cmd --remove-masquerade --zone=external
[root@gateway-server ~]# firewall-cmd --zone=external --add-rich-rule=‘rule family=ipv4 source address=192.168.1.0/24 masquerade’
[root@gateway-server ~]# firewall-cmd --list-all --zone=external
external (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh
ports: 12345/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks: echo-request
rich rules:
rule family=“ipv4” source address=“192.168.1.0/24” masquerade
验证:
内网客户机 192.168.1.10 、内网网站服务器 192.168.2.10 分别访问外网站点
- 内网网站服务器 192.168.2.10
[root@web ~]# curl http://100.1.1.20
curl: (7) Failed connect to 100.1.1.20:80; 没有到主机的路由
2.内网客户机 192.168.1.10
[root@localhost ~]# curl http://100.1.1.20
100.1.1.20
如何在关闭masquer的同时开启dmz区域访问外网,
内部服务器通过防火墙上网
设置ip伪装
firewall-cmd --zone=dmz --add-masquerade --permanent
设置网卡IP的nat
firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o ens33 -j MASQUERADE
1
设置规则accept
#firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens37 -o ens33 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens33 -o ens37 -m state --state RELATED,ESTABLISHED -j ACCEPT
三、配置端口转发---实现互联网用户访问内网web服务器
- 网关服务器
配置端口转发,从external区域接收到端口80的流量转发到192.168.2.10
[root@gateway-server ~]# firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.2.10
验证:
1.外网客户机 100.1.1.20
访问 curl http://100.1.1.10
2.内网网站服务器 192.168.2.10
tail -f /var/log/httpd/access_log
2.如果给内网web站点申请了公网ip 100.1.1.15,端口转发
2.1 网关服务器
1)在外网接口ens33,配置为第2个ip地址
[root@gateway-server ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=“Ethernet”
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“static”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”
DEVICE=“ens33”
ONBOOT=“yes”
IPV6_PRIVACY=“no”
IPADDR0=100.1.1.10
NETMASK=255.255.255.0
IPADDR1=100.1.1.15
NETMASK=255.255.255.0
GATEWAY=
DNS1=
DNS2=
ZONE=external
[root@gateway-server ~]# systemctl restart network
2)配置富规则
[root@gateway-server ~]# firewall-cmd --zone=external --add-rich-rule=‘rule family=ipv4 destination address=100.1.1.15/32 forward-port port=80 protocol=tcp to-addr=192.168.2.10’
验证:同上