H3C出口设备nat server端口映射解决NAT回流问题
H3C出口设备nat server端口映射解决NAT回流问题
我们在配置nat server(端口映射)的时候会出现外网访问正常,而内网主机访问外网IP的端口不能访问的情况,这就是因为NAT回流造成的。
具体原因如下图所示:
1、内网主机访问(出口IP)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解决问题(版本老的comware, 7.0之前)
如果使用的是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~~匹配任意源IP到目标10.0.0.2的流
#
interface GigabitEthernet0/0 //内网口
port link-mode route
combo enable copper
ip address 10.0.0.1 255.255.255.0
nat outbound 3000~~~源IP转换
nat server protocol tcp global 100.0.0.1 8023 inside 10.0.0.2 23~~~目标IP转换
我们通过抓包可以看到出口设备进行了双向NAT:
注意:使用双向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