NAT配置之目的NAT详解

为什么要配置目的NAT呢,试想,如果一个学校或者公司,需要对公网用户提供一些可访问的服务,这些服务器一般配置为私网地址,而公网用户不可能直接访问私网地址,而源NAT策略是对私网用户访问公网报文的源地址进行转换,没法用在此处。因此,当内网服务器要对外提供服务时,公网用户向私网(公网IP)发起访问,NAT的目标由源地址转变为目的地址,这就是目的NAT,对IP报文的目的地址进行转换,将公网IP地址转换为私网IP地址,使公网用户可以利用公网地址访问内部服务器。

一、基于策略的目的NAT

以下图为例,介绍目的NAT转换过程和基于策略的目的NAT配置方法。

当公网用户访问服务器时,防火墙处理流程如下:

①防火墙收到公网用户访问服务器198.51.100.2的首个报文,匹配NAT策略;

②匹配成功后从目的NAT地址池中选择一个私网IP地址,替换报文的目的地址,同时可以选择使用新的端口替换目的端口或者端口保持不变;

③通过安全策略,会在防火墙上建立会话表;

④防火墙收到服务器响应,匹配会话表,将响应报文的源地址转换为对外提供服务的公网地址;

⑤后续报文根据会话表转发。

基于策略的目的NAT不会生成server-map表。

//基础配置
[USG]interface g1/0/0
[USG-GigabitEthernet1/0/0]ip address 192.168.1.254 24
[USG-GigabitEthernet1/0/0]interface g1/0/1
[USG-GigabitEthernet1/0/1]ip address 203.0.113.254 24
[USG-GigabitEthernet1/0/1]q
[USG]firewall zone dmz
[USG-zone-dmz]add interface g1/0/0
[USG-zone-dmz]firewall zone untrust
[USG-zone-untrust]add interface g1/0/1
[USG-zone-untrust]q

//配置目的NAT地址池
[USG]destination-nat address-group addressgroup1
[USG-dnat-address-group-addressgroup1]section 192.168.1.2 192.168.1.2

//配置NAT策略
[USG-policy-nat-rule-policy_nat1]display this
2023-12-24 12:23:05.840 
#
 rule name policy_nat1
  source-zone untrust
  destination-address 192.51.100.2 mask 255.255.255.255
  service icmp
  action destination-nat static address-to-address address-group addressgroup1
#
return

//配置安全策略
[USG]security-policy 
[USG-policy-security]rule name policy1
[USG-policy-security-rule-policy1]source-zone untrust
[USG-policy-security-rule-policy1]destination-zone dmz
[USG-policy-security-rule-policy1]destination-address 192.168.1.2 32
[USG-policy-security-rule-policy1]action permit
[USG-policy-security-rule-policy1]q

//配置黑洞路由
[USG]ip route-static 192.51.100.2 32 NULL 0

//结果
[USG]display firewall session table 
2023-12-24 12:25:44.630 
 Current Total Sessions : 5
 icmp  VPN: public --> public  203.0.113.2:17187 --> 192.51.100.2:2048[192.168.1
.2:2048]


从会话表可以看出,服务器的公网IP已经被转换成对应的私网IP地址了,且端口不变。

四种转换:adress-to-address、adress-to-port、port-to-address、port-to-port

adress-to-address:公网地址与私网地址一对一转换

121.37.49.12 ------ 192.168.1.1

121.37.49.13 ------ 192.168.1.2

121.37.49.14 ------ 192.168.1.3

adress-to-port:公网地址与私网地址多个端口一对一转换

121.37.49.12:80 ------ 192.168.1.80

121.37.49.13:21 ------ 192.168.1.21

121.37.49.14:22 ------ 192.168.1.22

port-to-address:公网地址多个端口与多个私网地址一对一转换

121.37.49.12:80 ------ 192.168.1.1

121.37.49.12:21 ------ 192.168.1.2

121.37.49.12:22 ------ 192.168.1.3

port-to-port:公网地址的端口与私网地址的端口一对一转换

121.37.49.12:80 ------ 192.168.1.1:80

121.37.49.12:21 ------ 192.168.1.1:21

121.37.49.12:22 ------ 192.168.1.1:22

二、基于NAT Server的目的NAT

针对内网服务器对外提供服务,防火墙还提供更为灵活的配置,NAT Server。

①也需要公网地址;②不需要NAT地址池,可直接使用。

//一句话配置,最好指定特定的服务
[USG]nat server protocol tcp global 198.51.100.2 9980 inside 192.168.1.2 80
[USG]display firewall server-map 
2023-12-24 12:56:40.900 
 Current Total Server-map : 2
 Type: Nat Server,  ANY -> 198.51.100.2:9980[192.168.1.2:80],  Zone:---,  protoco
l:tcp
 Vpn: public -> public

 Type: Nat Server Reverse,  192.168.1.2[198.51.100.2] -> ANY,  Zone:---,  protoco
l:tcp
 Vpn: public -> public,  counter: 1

[USG]

最好不要把防火墙的公网地址口IP配置为NAT server的公网IP,一定要配置的话最好指定协议以及端口,避免与访问防火墙的Telnet、WEB等管理协议相冲突。

反向Server-map表项,当私网服务器主动访问公网时,可以直接使用这个表项将报文的源地址转换为公网地址,不用单独为服务器配置源NAT策略。

[USG]firewall zone dmz	
[USG-zone-dmz]add interface g1/0/0
[USG-zone-dmz]firewall zone untrust
[USG-zone-untrust]add interface g1/0/1
[USG-zone-untrust]q
[USG]security-policy 
[USG-policy-security]rule name policy1
[USG-policy-security-rule-policy1]source-zone untrust
[USG-policy-security-rule-policy1]destination-zone dmz
[USG-policy-security-rule-policy1]destination-address 192.168.1.2 32
[USG-policy-security-rule-policy1]service http
[USG-policy-security-rule-policy1]action permit
[USG-policy-security-rule-policy1]quit

[USG]display firewall session table 
2023-12-24 13:16:03.190 
 Current Total Sessions : 1
 http  VPN: public --> public  203.0.113.2:2058 --> 198.51.100.2:9980[192.168.1.
2:80]

开启黑洞如下,防环。

[USG]ip route-static 198.51.100.2 32 NULL 0

三、NAT Server场景下的黑洞路由

以此图为例

NAT Server的全局地址和公网端口的地址在同一个网段上,防火墙收到公网的ping报文,会发送ARP请求报文,寻找该地址的MAC地址,但是网络中没有其他设备配置了该地址,因此没有回应,防火墙最终丢弃该报文。

若不在同一个网段,分两种情况,第一种是简单的配置,第二种是精细化配置。

第一种:nat server global 198.51.99.2 inside 192.168.1.2

公网访问198.51.99.2的报文,全程根据路由,最后在防火墙目的地址被转化成192.168.1.2,然后访问私网地址,没问题。

第二种:nat server protocol tcp 198.51.99.2 9980 inside 192.168.1.2 80

若公网不访问对应配置的端口,而是使用ping操作,此时问题就出现了,报文到达防火墙无法匹配Server-map表以及会话表,只能根据路由转发,于是从原来端口发送出去,而路由器又根据路由发到防火墙,如此反复,就形成环路。

综上,最好就是都配置黑洞路由。

四、多出口场景下的NAT Server

让一个私网服务器向两个ISP发布两个不同的公网地址提供服务,有两种方法。

方法1:将防火墙的公网地址口划分到不同的安全区域,配置NAT Server时,带上zone参数即可。

[USG]firewall zone dmz
[USG-zone-dmz]add in	
[USG-zone-dmz]add interface g1/0/0
[USG-zone-dmz]firewall zone name ISP1
[USG-zone-ISP1]set priority 10
[USG-zone-ISP1]add interface g1/0/1
[USG-zone-ISP1]firewall zone name ISP2
[USG-zone-ISP2]set priority 20
[USG-zone-ISP2]add interface g1/0/2

[USG]nat server zone ISP1 protocol tcp global 198.51.100.2 9980 inside 192.168.1
.2 80 unr-route 
[USG]nat server zone ISP2 protocol tcp global 203.0.113.2 9980 inside 192.168.1.
2 80 unr-route 

[USG]security-policy
[USG-policy-security]rule name policy1
[USG-policy-security-rule-policy1]source-zone ISP1
[USG-policy-security-rule-policy1]destination-zone dmz
[USG-policy-security-rule-policy1]destination-address 192.168.1.2 32
[USG-policy-security-rule-policy1]service http
[USG-policy-security-rule-policy1]action permit 
[USG-policy-security-rule-policy1]q
[USG-policy-security]rule name policy2
[USG-policy-security-rule-policy2]source-zone ISP2
[USG-policy-security-rule-policy2]destination-zone dmz
[USG-policy-security-rule-policy2]destination-address 192.168.1.2 32
[USG-policy-security-rule-policy2]service http
[USG-policy-security-rule-policy2]action permit 
[USG-policy-security-rule-policy2]q
[USG-policy-security]q
[USG]

[USG]display firewall server-map 
2023-12-25 07:55:50.460 
 Current Total Server-map : 4
 Type: Nat Server,  ANY -> 203.0.113.2:9980[192.168.1.2:80],  Zone: ISP2 ,  prot
ocol:tcp
 Vpn: public -> public

 Type: Nat Server,  ANY -> 198.51.100.2:9980[192.168.1.2:80],  Zone: ISP1 ,  pro
tocol:tcp
 Vpn: public -> public

 Type: Nat Server Reverse,  192.168.1.2[203.0.113.2] -> ANY,  Zone: ISP2 ,  prot
ocol:tcp
 Vpn: public -> public,  counter: 1

 Type: Nat Server Reverse,  192.168.1.2[198.51.100.2] -> ANY,  Zone: ISP1 ,  pro
tocol:tcp
 Vpn: public -> public,  counter: 1

方法2:假如两个公网端口已经划分为同个区域untrust,且无法调整,此时可以用no-reverse,配置NAT server带上该参数即可。

[USG]nat server protocol tcp global 198.51.100.2 9980 inside 192.168.1
.2 80 no-reverse unr-route 
[USG]nat server protocol tcp global 203.0.113.2 9980 inside 192.168.1.
2 80 no-reverse unr-route 

配置完可以发现Server-map只生成了正向的,没有反向的,假如你不带no-reverse参数,是配置不成功的,试想,若成功了,会有两条去往untrust区域的反向Server-map,报文源地址可以转换成两个公网地址,此时防火墙就无法处理了。

双出口问题,还需要考虑一个问题,两个ISP中的公网用户要使用哪个公网地址访问私网服务器。

假如ISP1的公网用户使用了防火墙向ISP2发布的公网地址,去访问私网服务器,该访问基本很慢或者不能访问,因此,要求我们准确向两个ISP的公网用户告知公网地址。

还有一个问题就是源进非源出,即出口选路问题,从其中一个公网口进,响应报文却从另一个公网口出,报文很可能无法回到源ISP。

两个方法:①配置明细路由,不过这个方法不太现实,工作量太大;②配置源进源出策略功能;

[USG-GigabitEthernet1/0/2]redirect-reverse next-hop 203.0.113.4
[USG-GigabitEthernet1/0/2]gateway 203.0.113.4

参考资料:防火墙和VPN技术与实践 李学昭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值