防火墙NAT策略
NAT概述
NAT技术是用来解决当今IP地址资源枯竭的一种技术,同时也是IPv4到IPv6的过渡技术,绝大多数网络环境中在使用NAT技术。
网络又分公网IP和私网IP之分,在公网中是不能存在私网IP路由的,因此NAT技术又能起到一定的安全特性
私网IP段有:
A类:10.0.0.0 - 10.255.255.255
B类:172.16.0.0 - 172.31.255.255
C类:192.168.0.0 - 192.168.255.255
NAT分类
在内外网的边界,流量有出、入两个方向,所以NAT技术包含源地址转换和目标地址转换两类。一般情况下,源地址转换主要用于解决内部局域网计算机访问Internet的场景;而目标地址转换主要用于解决Internet用户访问局域网服务器的场景,目标地址通常被称为服务器地址映射。
NAT No-PAT
类似于Cisco的动态转换,只转换IP地址,不转换端口号,属于一对一转换,不能节约公网IP地址,实际情况基本不用
NAPT(Network Address and Port Translation)
网络地址和端口转换,类似于Cisco的PAT转换,NAPT既转换源IP地址又转换源端口,转换后的IP不能是外网接口的IP,属于多对一转换,主要场景适用于内网大量用户需要上网,同时公网IP数量少的情况下
Easy IP
和NAPT一样,既转换源IP,又转换源端口,区别是只能此模式只能转换成公网出接口的公网IP地址,属于多对已转换,主要适用于没有额外的公网地址可用,看他的名字就知道配置非常简单
NAT Server
目标地址转换,可用根据目的IP地址转换也可以根据目的IP + Port来转换,主要适用于将内网服务器映射到公网上,使其公网用户可以访问到此服务器
因为NAT No-PAT使用场景及其少,这里就不在配置了,我也懒,少弄一个是一个!!!
配置NAPT策略
将trust区域的PC1、 PC2能访问到untrust区域的PC3、 PC4并且在untrust区域不能有私网IP路由
交换机LSW1配置
vlan batch 10 20 100 #创建VLAN
#配置接口类型并划入相应VLAN
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
interface GigabitEthernet0/0/3
port link-type access
port default vlan 100
#配置PC网关 vlanif
interface Vlanif10
ip address 172.16.1.254 255.255.255.0
interface Vlanif20
ip address 172.16.2.254 255.255.255.0
interface Vlanif100
ip address 192.168.100.2 255.255.255.252
#交换机配置一条默认路由指向防火墙直连接口
ip route-static 0.0.0.0 0.0.0.0 192.168.100.1
路由器 R配置
interface GigabitEthernet0/0/0
ip address 200.1.1.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 100.1.1.254 255.255.255.0
防火墙FW1
#配置接口IP地址以及放行 ping 包
interface GigabitEthernet1/0/0
undo shutdown
ip address 192.168.100.1 255.255.255.252
service-manage ping permit
interface GigabitEthernet1/0/1
undo shutdown
ip address 200.1.1.1 255.255.255.0
service-manage ping permit
#配置静态路由
ip route-static 172.16.1.0 24 192.168.100.2 #指向内部网络vlan10的路由 下一跳交换机直连接口
ip route-static 172.16.2.0 24 192.168.100.2 #指向内部网络vlan20的路由 下一跳交换机直连接口
ip route-static 0.0.0.0 0.0.0.0 200.1.1.2 #指向外网路由 下一跳路由器直连接口
#将接口划入相应的安全区域
firewall zone trust
add interface GigabitEthernet 1/0/0
firewall zone untrust
add interface GigabitEthernet 1/0/1
以上配置之后路由就打通了,测试一哈子,使用PC1 PING一下防火墙出口IP
防火墙配置NAPT策略
#配置NAT公网地址池
nat address-group test_nat 0
mode pat
section 0 222.1.1.1 222.1.1.1 #做NAPT之后转换的公网IP
#配置NAT策略
nat-policy
rule name snat
source-zone trust #源安全区域
destination-zone untrust #目安全区域
source-address 172.16.1.0 mask 255.255.255.0 #需要转换的内网IP
source-address 172.16.2.0 mask 255.255.255.0
action source-nat address-group test_nat #进行源地址转换,使用公网地址池IP
#配置安全策略,使trust区域能访问到untrust区域;
security-policy
rule name trust_untrust
source-zone trust #源zone
destination-zone untrust #目zone
source-address 172.16.1.1 mask 255.255.255.255
source-address 172.16.2.1 mask 255.255.255.255
service icmp #测试环境,单独放行icmp协议
action permit #执行动作为允许
此实验是将防火墙出口IP和NAT转换之后的公网IP不在同网段,所以路由器R需要加条明细静态路由到指向防火墙出接口的下一跳即可
#给公网 R 路由器添加静态路由
ip route-static 222.1.1.1 32 200.1.1.1
基本配置已经完毕,在防火墙出接口进行抓包测试看看是否napt策略执行成功
使用PC1能成功PING通PC3,并且抓包可以看到源IP已经成功转换到了 222.1.1.1
的公网IP,大功告成!!!
还有二个小问题,如果外网用户去PING我们NAT公网地址池的这个地址,会形成三层环路。
抓包看一下,使用公网PC3ping一下我们的 222.1.1.1
看抓包情况,瞬间生成了600多个左右的ICMP报文,是因为在防火墙做了默认路由指向公网的,如果外网用户访问 222.1.1.1
抵达防火墙后,防火墙会查询路由表,没有此路由的明细路由条目,则会根据我们配置的默认静态路由进行转发,又回去了,因此造成了三层路由环路现象。
还有一种现象是如果公网地址池配置的IP和公网出口IP在同网段,则公网用户访问地址池IP会生成无效的ARP广播报文
解决办法: 生成黑洞路由,在抵达防火墙后,在防火墙本地终结这条路由,不让其进行转发,让他有来无回
以上的两个问题,相同的解决办法!!!
[USG6000V1]nat address-group test_nat
mode pat
section 0 222.1.1.1 222.1.1.1 #与公网出接口不同网段的公网IP
section 1 200.1.1.10 200.1.1.10 #与公网出接口相同网段的公网IP
route enable #添加此参数 自动生成黑洞路由
我们来查看一下防火墙路由表
可以看到有一条 222.1.1.1的路由条目(黑洞路由),他的Proto类型为Unr,指向下一跳为自己
也叫做User Network Route
用户网络路由
NAT Server 配合 Easy IP
在前面拓扑基础上添加一台Server和一台Client,看下图
将NAPT策略删除,使用easyIP地址转换技术,并将内网Server1的HTTP服务发布到外网,可以让client1访问到
防火墙配置EasyIP
#删除napt
nat policy
undo rule all #先删除nat策略
undo nat address-group test_nat #再删除nat地址池
#配置easyip
nat-policy
rule name test-easyip
source-zone trust #源zone
egress-interface GigabitEthernet1/0/1 #指定公网IP的出接口
source-address172.16.1.0 mask 255.255.255.0
source-address 172.16.2.0 mask 255.255.255.0
service icmp
action source-nat easy-ip #使用源IP转换 easy模式:共享出接口的公网IP地址进行转换
以上配置完成就实现了NAPT一样差不多的效果,可以抓包看到转换后的IP和出接口IP是相同的,也不会存在NAPT的三层环路和无效ARP情况
将Server划入到服务器区域并配置映射
在配置安全策略时,因为NAT Server是目的地址转换,防火墙在检查时,是先进行NAT目的地址转换,在进行安全策略检查。也就是说转换之后为私网IP,在进行安全策略检查,写安全策略时写私网IP即可
#配置Server网关防火墙IP
[USG6000V1]int GigabitEthernet 1/0/2
ip address 10.1.1.254 24
service-mange ping permit
#划分安全区域
[USG6000V1]firewall zone dmz
[USG6000V1-zone-dmz]add int GigabitEthernet 1/0/2
#配置安全策略 由Untrust访问DMZ
security-policy security
rule name untrust-dmz
source-zone untrust
destination-zone dmz
destination-address 10.1.1.1 mask 255.255.255.255
service http
action permit
#配置NAT Server 映射到公网
[USG6000V1]nat server 0 zone untrust protocol tcp global 200.1.1.1 www inside 10.1.1.1 www no-reverse unr-route #将10.1.1.1的tcp协议的80端口转换成222.1.1.1的80端口可以由untrust区域的用户访问
unr-route:#生成黑洞路由,和NAPT解决环路一样,natserver也有同样问题
no-reverse:#不生成servermap反向条目,在同安全区域并且是双出口场景时必须配置此参数!出现逻辑上错误问题
在Server开启HTTP服务,使用Client访问测试
查看Server-Map表项
NAT Server双出口
主题:实验不同安全区域和跟防火墙出口公网IP地址不同网段的NAT Server映射
IP跟接口、安全区域都在图中写了,这里就不配置了,直接上主题
#配置安全策略
[USG6000V1]security-policy
rule name isp_dmz
source-zone ISP_1 #源zone
source-zone ISP_2 #源zone
destination-zone dmz #目zone
destination-address 172.16.1.1 mask 255.255.255.255 #目的IP
service http #放行的流量HTTP 80
action permit
#配置路由
[USG6000V1]ip route-static 0.0.0.0 0.0.0.0 100.1.1.2 #防火墙配置默认路由去往ISP_1
[USG6000V1]ip route-static 0.0.0.0 0.0.0.0 200.1.1.2 #防火墙配置默认路由去往ISP_2
[R1]ip route-static 111.1.1.1 255.255.255.255 100.1.1.1 #R1路由器配置静态路由去往防火墙
[R2]ip route-static 222.1.1.1 255.255.255.255 200.1.1.1 #R2路由器配置静态路由去往防火墙
#配置NAT Server 映射
nat server 0 zone ISP_1 protocol tcp global 111.1.1.1 www inside 172.16.1.1 www
unr-route #去往10.1.1.0网段 追加unr-route参数 解决三层环路问题
nat server 1 zone ISP_2 protocol tcp global 222.1.1.1 www inside 172.16.1.1 www
unr-route ##去往20.1.1.0网段 追加unr-route参数 解决三层环路问题
主题:实验相同安全区域和跟防火墙出口公网IP地址相同网段的NAT Server映射
上主题
#配置安全策略
[USG6000V1]security-policy
rule name isp_dmz
source-zone ISP_1 #源zone
destination-zone dmz #目zone
destination-address 172.16.1.1 mask 255.255.255.255 #目的IP
service http #放行的流量HTTP 80
action permit
#配置NAT Server 映射
nat server 0 protocol tcp global 100.1.1.10 www inside 172.16.1.1 www unr-route
nat server 1 protocol tcp global 200.1.1.10 www inside 172.16.1.1 www no-revers
e unr-route
在配置此实验NAT映射时,双出口的相同区域场景下必须配置 no-reverse
参数:不生成ServerMap反向条目
因为,在命中反向条目之后,防火墙无法判断私网IP转换成那一条公网IP,是100.1.1.10 or 200.1.1.10 ?
如果是在不同区域,可以根据区域参数判断转换的公网IP地址!nat server也是可以匹配五元组。
Nat Server, ANY -> 200.1.1.10:80[172.16.1.1:80] #ServerMap正向条目
Nat Server Reverse, 172.16.1.1[200.1.1.10] -> ANY #ServerMap反向条目
所以在相同区域必须有一条nat server追加 no-reverse参数,或者两条都配置,不然配置时会报错误!!!
域间双向NAT
域间: 源目在不同的安全区之间
双向NAT: NAT Server + 源NAT
主要场景就是服务器不需要再配置网关,将服务器映射到公网上,再将公网用户源IP转换成服务器同网段IP
上配置 Server没有网关 注意!!!
在配置安全策略匹配源IP地址时,由于源地址转换顺序在安全策略之后,所以配置时,配置公网用户的IP地址(实验环境)
#配置防火墙IP以及区域
[USG6000V1]int GigabitEthernet 1/0/1
[USG6000V1-GigabitEthernet1/0/1]ip addr 100.1.1.1 24
[USG6000V1]int GigabitEthernet 1/0/0
[USG6000V1-GigabitEthernet1/0/1]ip addr 192.168.1.254 24
[USG6000V1]firewall zone trust
[USG6000V1-zone-trust]add int GigabitEthernet 1/0/0
[USG6000V1]firewall zone untrust
[USG6000V1-zone-untrust]add int GigabitEthernet 1/0/1
[USG6000V1]ip route-static 0.0.0.0 0.0.0.0 100.1.1.2 #防火墙添加默认路由
#配置 路由器
[R1]int GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]ip addr 100.1.1.2 24
[R1]int GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/0]ip addr 10.1.1.254 24
#配置防火墙安全策略
[USG6000V1]security-policy
rule name untrust-trust
source-zone untrust
destination-zone trust
source-address 10.1.1.1 mask 255.255.255.255
destination-address 192.168.1.1 mask 255.255.255.255
service http
action permit
#配置NAT Server映射 目的IP转换
[USG6000V1]nat server zone untrust protocol tcp global 100.1.1.10 80 inside 192.
168.1.1 80 unr-route
#配置NAPT 源地址转换
[USG6000V1]nat address-group test #创建NAPT地址池
mode pat
section 0 192.168.1.10 192.168.1.10
[USG6000V1]nat-policy #创建NAT策略
rule name test
source-zone untrust
destination-zone trust
source-address 10.1.1.1 mask 255.255.255.255
destination-address 192.168.1.1 mask 255.255.255.255
action source-nat address-group test
OK,配置完成,抓包测试一哈!