我们在配置nat server(端口80映射)的时候會出现外网访问正常而内网主机访问外网IP的端口80不能访问的情况,这就是因为NAT回流造成的
1、内网主机访问100.0.0.1:8023,会把流量送到出口设备的G0/1接ロ。
2、出口设备的G0/1接口配置了nat server数据包就会修改数据包的目的地址和目的端口80号,并不对原地址进行改变
3、数据包从出口设备发送到服務器,因为发过来数据包的原地址为10.0.0.10(内网主机)
4、服务器对出口设备的数据包回复,原目地址对调导致数据包直接通过交换机发送到内網主机。
5、内网主机解封装服务器回复的数据包因为地址不匹配,则进行丢弃导致访问失败。
通过在内网侧接口上使能NAT hairpin功能可以实現内网用户使用NAT地址访问内网服务器或内网其它用户。
配置nat hairpin功能后通过抓包可以发现出口设备发送给服务器的原地址将变为WAN口地址:
二、通过双向NAT解决问题
如果使用的是H3C v5版本的出口设备可能不支持 nat hairpin,我们可以使用双向NAT的方式进行解决
1、在内网口配置与公网口相同的nat server条目;
我们通过抓包可以看到出口设备进行了双向NAT:
注意:使用双向NAT因为映射的数据包需要在出口设备内部进行多次转换,这样会增大设备压仂如果设备支持nat hairpin的话建议使用nat hairpin。