NAT概述
早期的NAT是指Basic NAT,Basic NAT在技术上实现比较简单,只支持地址转换,不支持端口转换。因此,Basic NAT只能解决内网主机访问外网问题,无法解决IP地址短缺问题。后期的NAT主要是指网络地址端口转换NAPT(Network Address Port Translation),NAPT既支持地址转换也支持端口转换,并允许多台内网主机共享一个外网IP地址访问外网,因此NAPT可以有效的改善IP地址短缺现象。
Basic NAT
Basic NAT方式只转换IP地址,不转换TCP/UDP协议的端口号,属于一对一的转换,一个外网IP地址只能被一个内网用户使用。下图描述了Basic NAT的基本原理。
Basic NAT实现过程如下:
1.内网HostA访问外网Server,向Router发送一个源IP地址为10.1.1.1的报文。
2.当Router收到报文后,做Basic NAT转换。Router根据报文的源IP地址查找NAT转换关系表,看是否有相关的转换记录(10.1.1.1<->1.1.1.1)。如果有转换记录,则将报文的源IP地址10.1.1.1转换成1.1.1.1后,转发给外网Server;如果没有转换记录,在进行源IP地址转换的同时,还会在NAT转换关系表中新增一条该会话的转换记录(正反向)。
3.外网Server给内网HostA转换后的外网IP地址1.1.1.1发送回应报文。报文到达Router后,Router根据报文的目的IP地址查找NAT转换关系表,将报文的目的IP地址1.1.1.1转换成10.1.1.1后,转发给内网HostA。
4.内网HostB访问外网Server的转换过程和内网HostA访问外网Server的转换过程类似。由于Basic NAT不转换端口号,所以HostA和HostB分别用不同的外网IP地址访问Server。
NAPT
NAPT方式既转换IP地址,也转换TCP/UDP协议的端口号,属于多对一的转换。NAPT通过使用“IP地址+端口号”的形式,使多个内网用户共用一个外网IP地址访问外网,因此NAPT也可以称为“多对一地址转换”或“地址复用”。下图描述了NAPT的基本原理。
NAPT实现过程如下:
1.内网HostA访问外网Server,向Router发送一个源IP地址为10.1.1.1,端口号为10的报文。
2.Router收到报文后,做NAPT转换。Router根据报文的源IP地址和端口号查找NAT转换关系表,看是否有相关的转换记录(10.1.1.1:10<->1.1.1.1:30)。如果有转换记录,则将报文的源IP地址10.1.1.1转换成1.1.1.1,端口号10转换成30后,转发给外网Server;如果没有转换记录,在进行源IP地址和端口号转换的同时,还会在NAT转换关系表中新增一条该会话的转换记录(正反向)。
3.外网Server给内网HostA转换后的外网IP地址1.1.1.1发送回应报文。Router根据回应报文中的目的IP地址和端口号查找NAT转换关系表,将报文的目的IP地址1.1.1.1转换成10.1.1.1,端口号30转换成10后,转发给内网HostA。
4.内网HostB访问外网Server的转换过程和内网HostA访问外网Server的转换过程类似。由于NAPT可以转换端口号,所以HostA和HostB可以共用同一个外网IP地址1.1.1.1访问Server。
NAT分类
NAT是将IP数据报文头中的IP地址转换为另一个IP地址的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能。根据转换过程中IP地址或端口号的转换规则是否已事先确定,可以将NAT分为动态NAT和静态NAT。
动态NAT
动态NAT是指内部网络和外部网络之间的地址映射关系在转换时动态产生。动态NAT也指NAT Outbound,常用于内部网络有大量用户需要访问外部网络的组网场景。动态NAT分为地址池方式的动态NAT和Easy IP方式的动态NAT。
静态NAT
静态NAT是指外部网络和内部网络之间的地址映射关系由配置事先确定,常用于外网用户需要访问内网服务器提供的一些服务的组网场景。静态NAT分为NAT Static和NAT Server。两者都可以对外网提供服务,但是在内网主动访问外网的地址转换中,两者略有不同,具体差异如下:
- NAT Server对于内网主动访问外网的情况不做端口转换,仅做地址转换,即当报文的源IP地址匹配NAT Server规则里的内网IP地址时,不论端口号是多少,都会转换报文的源IP地址。
- NAT Static对于内网主动访问外网的情况既做端口转换,也做地址转换,即只有当报文的源IP地址和端口号同时匹配NAT Static规则里的内网IP地址和端口号时,才会转换报文的源IP地址和端口号。
配置内网主机访问外网示例
组网需求
某公司A区和B区的内网用户通过路由器和Internet相连,A区和B区的内网用户都有访问外网Internet的需求。公司为A区用户规划的外网IP地址较多,A区用户希望使用外网地址池中(2.2.2.100~2.2.2.200)的地址和A区内部主机的地址(网段为192.168.20.0/24)进行一对一转换后,访问Internet。公司为B区用户规划的外网IP地址较少,B区用户希望使用外网地址池中的地址(2.2.2.80~2.2.2.83)和B区内部主机的地址(网段为10.0.0.0/24)进行一对多转换后,访问Internet。公司为路由器WAN侧接口规划的外网IP地址为2.2.2.1/24,对端运营商侧IP地址为2.2.2.2/24。
配置思路
配置内网主机访问外网的思路如下:
1.配置接口IP地址、缺省路由,实现内部主机和外网Internet之间路由可达。
2.在WAN侧接口下为A区用户配置不带端口转换的NAT Outbound,实现A区内部主机经过一对一地址转换后访问外网Internet。
3.在WAN侧接口下为B区用户配置带端口转换的NAT Outbound,实现B区内部主机经过一对多地址转换后访问外网Internet。
操作步骤
1. 在Router上配置接口IP地址
system-view
[Huawei] sysname Router
[Router] vlan 100
[Router-vlan100] quit
[Router] interface vlanif 100
[Router-Vlanif100] ip address 192.168.20.1 24
[Router-Vlanif100] quit
[Router] interface ethernet 2/0/0
[Router-Ethernet2/0/0] port link-type access
[Router-Ethernet2/0/0] port default vlan 100
[Router-Ethernet2/0/0] quit
[Router] vlan 200
[Router-vlan200] quit
[Router] interface vlanif 200
[Router-Vlanif200] ip address 10.0.0.1 24
[Router-Vlanif200] quit
[Router] interface ethernet 2/0/1
[Router-Ethernet2/0/1] port link-type access
[Router-Ethernet2/0/1] port default vlan 200
[Router-Ethernet2/0/1] quit
[Router] interface gigabitethernet 3/0/0
[Router-GigabitEthernet3/0/0] ip address 2.2.2.1 24
[Router-GigabitEthernet3/0/0] quit
2. 在Router上配置缺省路由,指定下一跳地址为2.2.2.2
[Router] ip route-static 0.0.0.0 0.0.0.0 2.2.2.2
3. 在Router上配置不带端口转换的NAT Outbound
在Router上配置不带端口转换的NAT Outbound
[Router] nat address-group 1 2.2.2.100 2.2.2.200
[Router] acl 2000
[Router-acl-basic-2000] rule 5 permit source 192.168.20.0 0.0.0.255
[Router-acl-basic-2000] quit
[Router] interface gigabitethernet 3/0/0
[Router-GigabitEthernet3/0/0] nat outbound 2000 address-group 1 no-pat
[Router-GigabitEthernet3/0/0] quit
4. 在Router上配置带端口转换的NAT Outbound
[Router] nat address-group 2 2.2.2.80 2.2.2.83
[Router] acl 2001
[Router-acl-basic-2001] rule 5 permit source 10.0.0.0 0.0.0.255
[Router-acl-basic-2001] quit
[Router] interface gigabitethernet 3/0/0
[Router-GigabitEthernet3/0/0] nat outbound 2001 address-group 2
[Router-GigabitEthernet3/0/0] quit
[Router] quit
5. 验证配置结果
# 在Router上执行命令display nat outbound,查看地址池配置。
display nat outbound
NAT Outbound Information:
-----------------------------------------------------------------
Interface Acl Address-group/IP/Interface Type
-----------------------------------------------------------------
GigabitEthernet3/0/0 2000 1 no-pat
GigabitEthernet3/0/0 2001 2 pat
-----------------------------------------------------------------
Total : 2
# 在Router上执行命令ping,验证内网可以访问Internet。
ping -a 192.168.20.1 2.2.2.2
PING 2.2.2.2: 56 data bytes, press CTRL_C to break
Reply from 2.2.2.2: bytes=56 Sequence=1 ttl=255 time=1 ms
Reply from 2.2.2.2: bytes=56 Sequence=2 ttl=255 time=1 ms
Reply from 2.2.2.2: bytes=56 Sequence=3 ttl=255 time=1 ms
Reply from 2.2.2.2: bytes=56 Sequence=4 ttl=255 time=1 ms
Reply from 2.2.2.2: bytes=56 Sequence=5 ttl=255 time=1 ms
-- 2.2.2.2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 1/1/2 ms
配置外网主机访问内网服务器示例
组网需求
公司的内网部署了一台服务器,公司外部网络Internet上的一台主机希望能通过一个外网IP地址访问该服务器。公司为该服务器规划的内网IP地址为192.168.0.2/24,外网IP地址为2.2.2.3/24。路由器的WAN侧接口的IP地址为2.2.2.1/24,LAN侧网关IP地址为192.168.0.1/24,对端运营商侧IP地址为2.2.2.2/24,外网主机IP地址为1.1.1.1/24。
配置思路
配置外网主机访问内网服务器的思路如下:
1.配置接口IP地址、缺省路由,实现内网服务器和外网主机之间路由可达。
2.在WAN侧接口下配置NAT Static,实现外网主机使用外网IP地址2.2.2.3访问内网服务器。
操作步骤
1.在Router上配置接口IP地址
system-view
[Huawei] sysname Router
[Router] interface gigabitethernet 2/0/0
[Router-GigabitEthernet2/0/0] ip address 2.2.2.1 24
[Router-GigabitEthernet2/0/0] quit
[Router] interface gigabitethernet 1/0/0
[Router-GigabitEthernet1/0/0] ip address 192.168.0.1 24
[Router-GigabitEthernet1/0/0] quit
2.在Router上配置缺省路由,指定下一跳地址为2.2.2.2
[Router] ip route-static 0.0.0.0 0.0.0.0 2.2.2.2
3.在Router的WAN侧接口GE2/0/0上配置一对一的静态NAT
[Router] interface gigabitethernet 2/0/0
[Router-GigabitEthernet2/0/0] nat static global 2.2.2.3 inside 192.168.0.2
[Router-GigabitEthernet2/0/0] quit
[Router] quit
4.验证配置结果
在Router上执行display nat static命令查看地址池映射关系。
display nat static
Static Nat Information:
Interface : GigabitEthernet2/0/0
Global IP/Port : 2.2.2.3/----
Inside IP/Port : 192.168.0.2/----
Protocol : ----
VPN instance-name : ----
Acl number : ----
Vrrp id : ----
Netmask : 255.255.255.255
Description : ----
Total : 1