H3C出口设备nat server端口映射解决NAT回流问题 2022-11-16 网络 暂无评论 3679 次阅读 前言: 我们在配置nat server(端口映射)的时候会出现外网访问正常,而内网主机访问外网IP的端口不能访问的情况,这就是因为NAT回流造成的。 具体原因如下图所示: ![nat-hairpin-1.png](https://blog.moper.net/usr/uploads/2022/11/2649846243.png) 1、内网主机访问100.0.0.1:8023,会把流量送到出口设备的G0/1接口。 2、出口设备的G0/1接口配置了nat server,数据包就会修改数据包的目的地址和目的端口号,并不对原地址进行改变。 3、数据包从出口设备发送到服务器,因为发过来数据包的原地址为10.0.0.10(内网主机)。 4、服务器对出口设备的数据包回复,原目地址对调,导致数据包直接通过交换机发送到内网主机。 5、内网主机解封装服务器回复的数据包,因为地址不匹配,则进行丢弃,导致访问失败。 一、通过nat hairpin解决问题 H3C V7版本可以在内网接口侧(图中为GE0/0)配置 nat hairpin解决NAT回流的问题。 通过在内网侧接口上使能NAT hairpin功能,可以实现内网用户使用NAT地址访问内网服务器或内网其它用户。 ``` interface GigabitEthernet0/0 //内网口 port link-mode route combo enable copper ip address 10.0.0.1 255.255.255.0 nat hairpin enable ``` 配置nat hairpin功能后,通过抓包可以发现出口设备发送给服务器的原地址将变为WAN口地址: ![nat-hairpin-2.png](https://blog.moper.net/usr/uploads/2022/11/321650814.png) 二、通过双向NAT解决问题 如果使用的是H3C v5版本的出口设备可能不支持 nat hairpin,我们可以使用双向NAT的方式进行解决。 1、在内网口配置与公网口相同的nat server条目; 2、配置基于acl的nat outbound; ``` acl advanced 3000 rule 0 permit ip destination 10.0.0.2 0 # interface GigabitEthernet0/0 //内网口 port link-mode route combo enable copper ip address 10.0.0.1 255.255.255.0 nat outbound 3000 nat server protocol tcp global 100.0.0.1 8023 inside 10.0.0.2 23 ``` 我们通过抓包可以看到出口设备进行了双向NAT: ![nat-hairpin-3.png](https://blog.moper.net/usr/uploads/2022/11/931392599.png) 注意:使用双向NAT因为映射的数据包需要在出口设备内部进行多次转换,这样会增大设备压力,如果设备支持nat hairpin的话建议使用nat hairpin。 三、模拟器设备配置: 出口设备配置: ``` # version 7.1.075, Alpha 7571 # sysname out_R1 # system-working-mode standard xbar load-single password-recovery enable lpu-type f-series # vlan 1 # interface Serial1/0 # interface Serial2/0 # interface Serial3/0 # interface Serial4/0 # interface NULL0 # interface GigabitEthernet0/0 port link-mode route combo enable copper ip address 10.0.0.1 255.255.255.0 nat outbound 3000 nat server protocol tcp global 100.0.0.1 8023 inside 10.0.0.2 23 # interface GigabitEthernet0/1 port link-mode route combo enable copper ip address 100.0.0.1 255.255.255.0 nat outbound nat server protocol tcp global 100.0.0.1 8023 inside 10.0.0.2 23 # interface GigabitEthernet0/2 port link-mode route combo enable copper # interface GigabitEthernet5/0 port link-mode route combo enable copper # interface GigabitEthernet5/1 port link-mode route combo enable copper # interface GigabitEthernet6/0 port link-mode route combo enable copper # interface GigabitEthernet6/1 port link-mode route combo enable copper # scheduler logfile size 16 # line class aux user-role network-operator # line class console user-role network-admin # line class tty user-role network-operator # line class vty user-role network-operator # line aux 0 user-role network-operator # line con 0 user-role network-admin # line vty 0 63 user-role network-operator # ip route-static 0.0.0.0 0 100.1.1.2 # acl advanced 3000 rule 0 permit ip destination 10.0.0.2 0 # domain name system # domain default enable system # user-group system # return ``` 转自https://www.xxshell.com/1086.html 标签: nat, h3c, hairpin 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。