H3C内网用公网IP访问内网服务器,其它品牌参照思路
方法(一)内网接口只需要启用端口回流:nat hairpin enable
h3c v7 正常配置出口的nat server protocol映射,内网接口只需要启用端口回流:nat hairpin enable
所以对于V7版本的路由(防火墙)设备只需要2条配置即可完成内网和外网均用公网IP访问内网服务器
(1) 出口映射:nat server protocol global 公网 端口 inside 内网服务器 端口
(2) 内口启用回流:nat hairpin enable
组网需求:
如 图 1 所示, Host A和FTP服务器同在一个局域网内, Router作为该局域网的网关,具体要求如下:
• 外网主机可以通过 Router 访问内网 FTP 服务器;
• 内网主机在访问 FTP 服务器时,需要通过外网地址访问,从而有效的避免服务器受到来自内部网络的攻击
配置思路
• 通过定义 ACL 规则,并将其与 NAT 配置关联,实现只对内网匹配指定的 ACL 规则的报文进
行地址转换。
• 为使外网主机可以通过外网地址访问内网 FTP 服务器,需要在外网侧接口配置 NAT 内部服务
器功能。
• 为使内网主机通过外网地址访问内网 FTP 服务器,需要在内网侧接口使能 NAT hairpin 功能
配置步骤
# 配置 Router 的内网接口 GigabitEthernet1/1 和外网接口 GigabitEthernet1/2 的 IP 地址。
<Router> system-view
[Router] interface gigabitethernet 1/1
[Router-GigabitEthernet1/1] ip address 192.168.1.1 24
[Router-GigabitEthernet1/1] quit
[Router] interface gigabitethernet 1/2
[Router-GigabitEthernet1/2] ip address 10.0.0.1 24
[Router-GigabitEthernet1/2] quit
# 配置 ACL 2000,允许对内部网络中 192.168.1.0/24 网段的报文进行地址转换。
[Router] acl number 2000
[Router-acl-basic-2000] rule permit source 192.168.1.0 0.0.0.255
[Router-acl-basic-2000] quit
# 在接口 GigabitEthernet1/2 上配置 NAT 内部服务器,允许外网主机使用地址 10.0.0.1 访问内网
FTP 服务器,同时使得内网主机访问内网 FTP 服务器的报文可以进行目的地址转换。
[Router] interface gigabitethernet 1/2
[Router-GigabitEthernet1/2] nat server protocol tcp global 10.0.0.1 inside 192.168.1.5 ftp
# 在接口 GigabitEthernet1/2 上配置 Easy IP 方式的出方向动态地址转换,使得内网主机访问内网
FTP 服务器的报文可以使用接口 GigabitEthernet1/2 的 IP 地址进行源地址转换。
[Router-GigabitEthernet1/2] nat outbound 2000
[Router-GigabitEthernet1/2] quit
# 在接口 GigabitEthernet1/1 上使能 NAT hairpin 功能。
[Router] interface gigabitethernet 1/1
[Router-GigabitEthernet1/1] nat hairpin enable
[Router-GigabitEthernet1/1] quit
验证配置
# 以上配置完成后,内网主机和外网主机均能够通过外网地址访问内网 FTP Server。通过 display
nat all 命令查看所有 NAT 的配置信息,可以看到 GigabitEthernet1/1 接口上使能了 NAT hairpin 功
能。
[Router] display nat all
NAT outbound information:
There are 1 NAT outbound rules.
Interface: GigabitEthernet1/2
ACL: 2000 Address group: --- Port-preserved: N
NO-PAT: N Reversible: N
NAT internal server information:
There are 1 internal servers.
Interface: GigabitEthernet1/2
3
Protocol: 6(TCP)
Global IP/port: 10.0.0.1/21
Local IP/port: 192.168.1.5/21
NAT logging:
Log enable : Disabled
Flow-begin : Disabled
Flow-end : Disabled
Flow-active : Disabled
Port-block-assign : Disabled
Port-block-withdraw : Disabled
Alarm : Disabled
NAT hairpinning:
There are 1 interfaces enabled with NAT hairpinning.
Interface: GigabitEthernet1/1
NAT mapping behavior:
Mapping mode: Address and Port-Dependent
ACL : ---
NAT ALG:
DNS : Enabled
FTP : Enabled
H323 : Enabled
ICMP-ERROR : Enabled
ILS : Enabled
MGCP : Enabled
NBT : Enabled
PPTP : Enabled
RSH : Enabled
RTSP : Enabled
SCCP : Enabled
SIP : Enabled
SQLNET : Enabled
TFTP : Enabled
XDMCP : Enabled
# 通过 display nat session verbose 命令查看 NAT 会话的详细信息,可以看到 Host A 访问 FTP
server 时生成 NAT 会话信息。
[Router] display nat session verbose
Initiator:
Source IP/port: 192.168.1.2/1694
Destination IP/port: 10.0.0.1/21
VPN instance/VLAN ID/VLL ID: -/-/-
Protocol: TCP(6)
Responder:
Source IP/port: 192.168.1.5/21
Destination IP/port: 10.0.0.1/1025
4
VPN instance/VLAN ID/VLL ID: -/-/-
Protocol: TCP(6)
State: TCP_ESTABLISHED
Application: HTTP
Start time: 2013-08-15 14:53:29 TTL: 3597s
Interface(in) : GigabitEthernet1/1
Interface(out): GigabitEthernet1/2
Initiator->Responder: 7 packets 308 bytes
Responder->Initiator: 5 packets 312 bytes
Total sessions found: 1
配置文件
#
interface GigabitEthernet1/1
port link-mode route
ip address 192.168.1.1 255.255.255.0
nat hairpin enable
#
interface GigabitEthernet1/2
port link-mode route
ip address 10.0.0.1 255.255.255.0
nat outbound 2000
nat server protocol tcp global 10.0.0.1 21 inside 192.168.1.5 21
#
acl number 2000
rule 0 permit source 192.168.1.0 0.0.0.255
#
方法(二)h3c v5
H3C出口设备nat server端口映射解决NAT回流问题
我们在配置nat server(端口映射)的时候会出现外网访问正常,而内网主机访问外网IP的端口不能访问的情况,这就是因为NAT回流造成的。
具体原因如下图所示:
1、内网主机访问100.0.0.1:8023(对外这就是FTP服务器,访问这个出口公网IP会映射到内网FTP服务器10.0.0.2),会把流量送到出口设备的G0/1接口。
10.0.0.10---(100.0.0.1-换-10.0.0.2)
2、出口设备的G0/1接口配置了nat server(修改目标IP-映射),数据包就会修改数据包的目的地址和目的端口号,并不对原地址进行改变。
3、数据包从出口设备发送到服务器,因为发过来数据包的原地址为10.0.0.10(内网主机)。
源->目: 10.0.0.10->10.0.0.2
4、服务器对出口设备的数据包回复,原目地址对调,导致数据包直接通过交换机发送到内网主机。
回复: 10.0.0.2 ->10.0.0.10
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解决问题:
双向NAT配置要点:
(1) 出口nat server protocol…映射,应用于互联网用户
(2) 建立匹配任意IP destination 服务器IP的ACL3000
(3)
a) 内口nat server protocol映射,目标IP转换
b) Nat outbound 3000,匹配ACL后进行源IP转换
看此图注意是映射nat server先执行, 然后再执行nat outbount acl 3000
100.0.0.1与10.0.0.2是个地址端口映射
10.0.0.10与10.0.0.1是个源地址转换
如果使用的是H3C v5版本的出口设备可能不支持 nat hairpin,只能使用双向NAT的方式进行解决。
1、在内网口配置与公网口相同的nat server条目(目标IP转换);
2、配置基于acl的nat outbound(源地址转换);
acl advanced 3000
rule 0 permit ip destination 10.0.0.2 0 //任意IP匹配服务器IP,如果匹配就..匹配特定唯一IP掩码全0,写一个0
#
interface GigabitEthernet0/0 //内网口,外网接口写的nat server是为互联网用户映射到内网服务器用的,也得写
port link-mode route
combo enable copper
ip address 10.0.0.1 255.255.255.0
nat outbound 3000 //改写源IP即10.0.0.10转换为为本接口IP即10.0.0.1
nat server protocol tcp global 100.0.0.1 8023 inside 10.0.0.2//目标IP(出接口IP)100.0.0.1转为内网服务器IP10.0.0.2
经上述转换
源------------目标
10.0.0.10->100.0.0.1
变更为
100.0.0.1->10.0.0.2
到了服务器
服务器回包
10.0.0.2->100.0.0.1
100.0.0.1->10.0.0.10
以上访问完全由
nat server...进行的目标IP转换
和
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因为映射的数据包需要在出口设备内部进行多次转换,这样会增大设备压力,如果设备支持nat hairpin的话建议使用nat hairpin。
三、模拟器设备配置:
出口设备配置:
interface GigabitEthernet0/0 //内网接口
port link-mode route
combo enable copper
ip address 10.0.0.1 255.255.255.0
nat outbound 3000 匹配到服务器IP,进行源IP转换,那10.0.0.10转换成10.0.0.1了?还是出口公网IP?
nat server protocol tcp global 100.0.0.1 8023 inside 10.0.0.2 23 //目标IP更换
#
interface GigabitEthernet0/1 //互联网接口
port link-mode route
combo enable copper
ip address 100.0.0.1 255.255.255.0
nat outbound //easy NAT
nat server protocol tcp global 100.0.0.1 8023 inside 10.0.0.2 23 //互联网的映射到内服
#
ip route-static 0.0.0.0 0 100.1.1.2 //互联网网关
#
acl advanced 3000 //精确的ACL,匹配这个就换源IP为内网IP
rule 0 permit ip destination 10.0.0.2 0