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技术与实践 李学昭

宫廷游戏哪个最好玩 热门宫廷游戏排行榜 面试中,面试官为什么会问面试者:"你有哪些要问的"?
top