双向NAT(基于USG6000V)

双向NAT概念

 在某些场景下我们需要同时改变报文的源地址和目的地址,双向NAT是源NAT和目的NAT的结合使用,“源NAT+NAT Server”。

双向NAT不是一个单独的功能,而是一个源NAT和目的NAT的组合,但是这两个策略针对的同一条流(比如公网用户访问内网服务器,在经过防火墙时同时转换源地址和目的地址)。

根据报文在防火墙的流动方向进行分类,有域间NAT和域内NAT。

域间NAT:报文在两个不同的安全区域之间流动时对报文进行NAT转换。

域内NAT:报文在同一个安全区域之内流动时对报文进行NAT转换,一般域内NAT会和NAT-Server一起配合使用。

双向NAt在技术没什么创新,但是应用场景很有意思

域内NAT+NAT Server

服务器和客户端连接一个交换机,客户端可以直接通过交换机访问服务器,但是管理员不希望客户端直接访问服务器,这对服务器来说不安全,所以需要隐藏服务器的IP地址。

所以此处就要做成客户端访问防火墙设定的NAT-Server的公网地址,然后防火墙转换客户端的私网地址再发送到服务器;服务器将数据包返回到防火墙,防火墙再返回到客户端。

 配置过程

# 配置IP地址

[USG6000V1]interface GigabitEthernet 1/0/0
[USG6000V1-GigabitEthernet1/0/0]ip add 10.1.1.1 24

# 接口加入安全区域

[USG6000V1]firewall zone trust 
[USG6000V1-zone-trust]add interface g1/0/0

Nat-Server配置

[USG6000V1]nat server global 2.2.2.2 inside 10.1.1.2

域内NAT配置

[USG6000V1]nat address-group 1
[USG6000V1-address-group-1]mode pat 

[USG6000V1-address-group-1]route enable 

[USG6000V1-address-group-1]section 4.4.4.4 4.4.4.4

# 域内NAT策略

[USG6000V1]nat-policy  

[USG6000V1-policy-nat]rule name policy1

[USG6000V1-policy-nat-rule-policy1]destination-address 10.1.1.2 32 # 由于是先进行的NAT-Server转换,在进行域内NAT转换,所以此处的目的地址是NAT-Server转换后的地址,即服务器的私网地址

[USG6000V1-policy-nat-rule-policy1]action source-nat address-group 1

验证结果

PC机 ping 服务器2.2.2.2   

查看会话表   源地址和目的地址都改变了

[USG6000V1]display firewall session table 
2024-07-01 13:11:16.210 
 Current Total Sessions : 1
 icmp  VPN: public --> public  10.1.1.3:256[4.4.4.4:2049] --> 2.2.2.2:2048[10.1.1.2:2048]

查看Server-map表

[USG6000V1]display firewall server-map
2024-07-01 13:10:49.330 
 Current Total Server-map : 2
 Type: Nat Server,  ANY -> 2.2.2.2[10.1.1.2],  Zone:---,  protocol:---
 Vpn: public -> public

 Type: Nat Server Reverse,  10.1.1.2[2.2.2.2] -> ANY,  Zone:---,  protocol:---
 Vpn: public -> public,  counter: 1

域间NAT+NAT Server

这个应用场景是公网用户访问NAT-Server时进行目的地址的转换,变成私网地址,然后经过NAT策略转换源地址为私网地址,且和服务器在一个网段。

这个和只配置NAT Server最大的区别就是,私网服务器再回复了客户端的访问请求时,会发现自己的地址和目的地址在同一个网段,此时私网服务器不会查找路由,而是发送ARP广播报文询问目的地址的MAC地址。

就是私网服务器上省去了查找路由的环节,不用再配置网关地址,当前只是一台服务器,感觉很容易配置网关,但是如果上百台服务器需要管理网关,就不方便了,这就是域间双向NAT的好处。

配置过程

# 配置IP地址

[USG6000V1]interface g1/0/0
[USG6000V1-GigabitEthernet1/0/0]ip address 1.1.1.1 24
[USG6000V1-GigabitEthernet1/0/0]q
[USG6000V1]interface g1/0/1
[USG6000V1-GigabitEthernet1/0/1]ip address 10.1.1.1 24

# 加入安全区域

[USG6000V1]firewall zone untrust 
[USG6000V1-zone-untrust]add interface g1/0/0

[USG6000V1]firewall zone dmz 
[USG6000V1-zone-dmz]add interface g1/0/1

# 配置安全策略

[USG6000V1]security-policy
[USG6000V1-policy-security]rule name untust_dmz
[USG6000V1-policy-security-rule-untust_dmz]source-zone untrust 
[USG6000V1-policy-security-rule-untust_dmz]destination-zone dmz
[USG6000V1-policy-security-rule-untust_dmz]destination-address 10.1.1.2 32
[USG6000V1-policy-security-rule-untust_dmz]action permit 

NAT Server

[USG6000V1]nat server global 1.1.1.3 inside 10.1.1.2

域内NAT

# 配置地址池

[USG6000V1]nat address-group 1
[USG6000V1-address-group-1]mode pat 
[USG6000V1-address-group-1]section 10.1.1.100 10.1.1.100

# 配置NAT策略,源NAT

[USG6000V1]nat-policy 
[USG6000V1-policy-nat]rule name policy1
[USG6000V1-policy-nat-rule-policy1]destination-address 10.1.1.2 32
[USG6000V1-policy-nat-rule-policy1]action source-nat address-group 1

验证结果

外网客户端client ping 内网服务器Server

查看Server-map表

[USG6000V1]display firewall server-map
2024-07-01 13:43:25.560 
 Current Total Server-map : 2
 Type: Nat Server,  ANY -> 1.1.1.3[10.1.1.2],  Zone:---,  protocol:---
 Vpn: public -> public

 Type: Nat Server Reverse,  10.1.1.2[1.1.1.3] -> ANY,  Zone:---,  protocol:---
 Vpn: public -> public,  counter: 1

查看会话表

[USG6000V1]display firewall session table 
2024-07-01 13:59:20.170 
 Current Total Sessions : 1
 icmp  VPN: public --> public  1.1.1.2:256[10.1.1.100:2048] --> 1.1.1.3:2048[10.1.1.2:2048]

 双向NAT不是必须配置的功能,有时候只用源NAT或者目的NAT就可以达到同样的效果,但是灵活地应用双向NAT可以起到简化网络配置、方便网络管理的作用,也就达到了1+1大于2的效果。

### 双向NAT与两次NAT的区别 #### 双向NAT的工作机制 双向NAT允许内外网之间的流量都能通过同一个NAT设备进行地址转换,不仅支持内部网络发起对外部网络的连接请求,也能够使外部网络主动建立至内部网络的服务连接。这种特性使得位于外网的应用程序可以像直接访问内网资源一样操作,而无需知晓实际的私有IP地址[^1]。 例如,在防火墙配置中,可以通过设置`destination-nat address-group`来指定目标地址映射关系,从而实现来自互联网的数据包能准确无误地转发给局域网内的某台计算机[^2]。 ```bash set security nat destination pool inside-pool address 192.168.1.100/32 set security nat destination rule-set trust-to-untrust from zone trust to zone untrust match destination-address any then translate type dnspattern pattern "*.example.com" pool inside-pool ``` 这段Junos命令展示了如何创建一个目的地NAT规则集,用于将发往`.example.com`域名下的所有HTTP(S)请求重定向到本地LAN中的特定服务器上。 #### 两次NAT的工作机制 相比之下,两次NAT指的是源地址和目的地址分别经过独立但连续两次不同的NAT过程的情况。第一次可能是为了隐藏真实的客户端身份(即改变源IP),第二次则是为了让数据包到达正确的最终接收方(更改目的IP)。这通常发生在复杂的网络环境中,比如当企业拥有多个出口链路时,或是跨数据中心间传输业务流的时候。 具体来说,如果存在一个多层架构的企业级网络环境,其中一部分子网需要经由第一个边界路由器执行一次SNAT以便于统一管理;之后再经历第二个层次上的DNAT以确保进入生产系统的流量指向确切的目的地服务实例。这样的设计增加了灵活性但也带来了复杂度以及潜在的安全风险[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YancyYue

您是我的“大可爱”!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值