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