内容来源:《防火墙和VPN技术与实践》-李学昭 -2022年版-人民邮电出版社
1基于策略的目的NAT
配置地址池
地址池中的地址为服务器的IP地址。
#
destination-nat address-group addgroup1 0
section 192.168.1.2 192.168.1.2
配置NAT策略:
#
rule name policy_nat
source-zone untrust
destination-address 198.51.100.2 mask 255.255.255.255
service http
action destination-nat static address-to-address address-group addgroup1
配置安全策略:
security-policy
rule name untrust_dmz
source-zone untrust
destination-zone dmz
destination-address 192.168.1.2 mask 255.255.255.255
service http
action permit
配置黑洞路由:
ip route-static 198.51.100.2 32 NULL 0
公网用户访问内网服务器地址:
从防火墙会话表,可以查看到地址转换情况:
http VPN: public --> public ID: c487f1edf7da4d83785647d4c88
Zone: untrust --> dmz TTL: 00:00:10 Left: 00:00:03
Recv Interface: GigabitEthernet1/0/1
Interface: GigabitEthernet1/0/0 NextHop: 192.168.1.2 MAC: 5489-98c6-1901
<--packets: 4 bytes: 471 --> packets: 6 bytes: 402
203.0.113.2:2056 --> 198.51.100.2:80[192.168.1.2:80] PolicyName: untrust_dmz
TCP State: close
2 NAT Server
配置NAT-Server
nat server protocol tcp global 198.51.100.2 9980 inside 192.168.1.2 80
配置安全策略:
security-policy
rule name untrust_dmz
source-zone untrust
destination-zone dmz
destination-address 192.168.1.2 mask 255.255.255.255
service http
action permit
Client访问内网服务器:
查看防火墙的会话表:
可以查看目的地址的转换情况如下:198.51.100.2:9980[192.168.1.2:80] ,[]内的为防火墙转换后的地址。
http VPN: public --> public ID: c287f1edf7da7901e647d4e27
Zone: untrust --> dmz TTL: 00:00:10 Left: 00:00:04
Recv Interface: GigabitEthernet1/0/1
Interface: GigabitEthernet1/0/0 NextHop: 192.168.1.2 MAC: 5489-98c6-1901
<--packets: 5 bytes: 511 --> packets: 6 bytes: 402
203.0.113.2:2061 --> 198.51.100.2:9980[192.168.1.2:80] PolicyName: untrust_dmz
TCP State: close
关于 “允许服务器使用公网地址上网” 和 黑洞路由:
# 允许服务器使用公网地址上网:
nat server 0 protocol tcp global 198.51.100.2 9980 inside 192.168.1.2 www
# 防火墙会产生 反向的Server-map,如果要让服务器使用公网地址上网,还需要额外配置安全策略。
# 未勾选允许服务器使用公网地址上网
nat server 0 protocol tcp global 198.51.100.2 9980 inside 192.168.1.2 www no-reverse
不会产生反向的 Server-map , 服务器在访问公网的时候,不会主动使用 被映射的公网地址,需要额外配置 源NAT的NAT-policy和安全策略。
关于此项内容,大家可以自行查看防火墙的Server-map情况。
黑洞路由:
# unr-route
nat server protocol tcp global 198.51.100.2 9980 inside 192.168.1.2 www no-reverse unr-route
双向NAT
场景1:公网用户访问内部服务器
避免大量的服务器配置网关,节省工作的开销。
配置过程:
配置源目映射关系:
# 转换目的地址
nat server protocol tcp global 198.51.100.2 9980 inside 192.168.1.2 www no-reverse unr-route
# 转换源地址
nat address-group addgroup1
mode pat
section 0 192.168.1.5 192.168.1.10 # 地址和服务器在相同网段
NAT策略:
nat-policy
rule name policy_nat
source-zone untrust
destination-zone dmz
destination-address 192.168.1.2 mask 255.255.255.255
action source-nat address-group addgroup1
安全策略
security-policy
rule name untrust_dmz
source-zone untrust
destination-zone dmz
destination-address 192.168.1.2 mask 255.255.255.255
service http
action permit
客户端发起访问:
查看防火墙会话表:
[FW1]display firewall session table verbose
2023-06-05 02:31:19.790
Current Total Sessions : 1
http VPN: public --> public ID: c487f1edf7d01482e62647d48ee
Zone: untrust --> dmz TTL: 00:00:10 Left: 00:00:01
Recv Interface: GigabitEthernet1/0/1
Interface: GigabitEthernet1/0/0 NextHop: 192.168.1.2 MAC: 5489-98c6-1901
<--packets: 4 bytes: 471 --> packets: 6 bytes: 402
203.0.113.2:2050[192.168.1.9:2049] --> 198.51.100.2:9980[192.168.1.2:80] Policy
Name: untrust_dmz
TCP State: close
配置完NAT Server,公网用户就可以访问私网服务器了。那么,配置了源NAT的意义在哪里呢?秘密就在于私网服务器对响应报文的处理方式上。
NAT地址池中的地址和私网服务器在同一网段,私网服务器回应时,就不会去查找路由表,而是发送ARP广播报文询问此地址对应的MAC地址。私网服务器上省去了查找路由的环节,那就不用设置网关了!
场景2:私网用户访问内部服务器
配置过程:
IP地址、Zone配置省略。
配置源目映射关系:
# 面向用户,Server的身份是: 198.51.100.2 配置NAT-Server
nat server protocol tcp global 198.51.100.2 9980 inside 192.168.1.2 80 no-reverse unr-route
# 面向Server,用户的身份是 192.168.0.5 - 192.168.0.10 配置地址池
nat addressgroup addgroup1
section 192.168.0.5 192.168.0.10
mode pat
配置NAT策略:
nat-policy
rule name nat-policy1
source-zone trust
destinaion-zone trust
destinaion-address 192.168.1.2 32
action source-nat address-group addgroup1
由于Clinet和Servrer在同一个安全区域,可以不配置安全策略。
Client发起访问:
查看防火墙会话表:
[FW1]display firewall session table verbose
2023-06-05 01:48:47.570
Current Total Sessions : 1
http VPN: public --> public ID: c487fc4004dd14811fb647d3efb
Zone: trust --> trust TTL: 00:00:10 Left: 00:00:06
Recv Interface: GigabitEthernet1/0/0
Interface: GigabitEthernet1/0/0 NextHop: 192.168.1.2 MAC: 5489-988d-5162
<--packets: 4 bytes: 471 --> packets: 6 bytes: 402
192.168.1.3:2050[192.168.0.8:2049] --> 198.51.100.2:9980[192.168.1.2:80] Policy
Name: ---
TCP State: close
如果Client和Server不在相同的网段,也可以只配置NAT Server,当前场景下配置双向NAT的目的是为了Client和Server相互传递的流量都要经过防火墙。