网络地址转换nat协议原理 (华为nat地址转换)

一、什么是NAT

网络地址转换(Network Address Translation,缩写:NAT)在计算机网络中是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。

1990年代中期,NAT是作为一种解决IPv4地址短缺以避免保留IP地址困难的方案而流行起来的。网络地址转换在很多国家广泛使用。所以NAT就成了家庭和小型办公室网络连接上的路由器的一个标准特征,因为对他们来说,申请独立的IP地址的代价要高于所带来的效益。

二、NAT的工作原理

NAT对IP数据报文中的IP地址进行转换,是一种在现网中被广泛部署的技术,一般部署在网络出口设备,例如路由器或防火墙上。

  • NAT的典型应用场景

在私有网络内部(园区、家庭)使用私有地址,出口设备部署NAT,对于“从内到外”的流量,网络设备通过NAT将数据包的源地址进行转换(转换成特定的公有地址),而对于“从外到内的”流量,则对数据包的目的地址进行转换。通过私有地址的使用结合NAT技术,可以有效节约公网IPv4地址。

网络地址转换二进制,网络地址转换nat的作用是什么

  • NAT分类

1)出云(企业或者家庭内部访问公网或者其他企业网络)

静态NAT: 内部主机占用一个公网IP,这种方式被称为一对一模型。这种方式对解决IP地址短缺没有帮助,只在特定的组网环境中使用。主要作用是隐藏内部主机的真实IP,但公网IP资源珍贵,几乎没人使用这种模式。

动态NAT: 内部主机的私有地址在NAT网关中被转换为地址池中的一个(Easy IP模式,端口不同,家庭或者企业访问公网的最常用模式)或者多个共有地址(地址池模式,端口可以不同,多个外部地址;例如爬虫场景,可以避免请求过多导致单IP被封)。PAT模式,最多可让65535台主机共用一个IP,端口不同。

2)入云(作为服务提供商,给互联网用户访问的场景)

NAT Server模式: 提供Web、SFTP、媒体流等服务给互联网用户场景使用,外部一般开放域名,便于用户访问;域名通过域名服务器可以映射到Web、SFTP、媒体流等服务的公网IP。此公网IP需要是静态IP,并在DNS配置解析记录。

三、配置实例 - 公司内部提供Web服务,员工需要访问互联网信息,实战组网

网络地址转换二进制,网络地址转换nat的作用是什么

3.1 公司内部网络互通部署配置

由于使用简易拓扑,VLAN未做隔离、设备可靠性,实际应用可以参考数通网络之交换技术详解,网络安全访问控制工具-ACL详解,轻松划分子网(IPv4)做详细拓扑优化。

  • 核心交换机配置(VLAN网关配置、与边界路由器互联IP配置)
<Huawei>system-view
[Huawei]sysname coresw #改个名字,避免配置时候搞错窗口
[coresw]undo info-center enable #交换机日志好多,可以选择性关闭或者启用
[coresw]vlan batch 100 10 20 30
#配置Vlanif,用于三层通信;首条同类命令使用完整,后续使用简写
[coresw]interface Vlanif 100
[coresw-Vlanif100]ip add 10.1.1.2 24
[coresw-Vlanif100]int vlanif 10 #简写命令
[coresw-Vlanif10]ip add 172.17.10.254 24
[coresw-Vlanif10]int vlanif 20
[coresw-Vlanif20]ip add 172.17.20.254 24
[coresw-Vlanif20]int vlanif 30
[coresw-Vlanif30]ip add 172.17.30.254 24
[coresw-Vlanif30]quit
[coresw]interface GigabitEthernet 0/0/1
#配置接口VLAN和类型,用于VLAN通信;首条同类命令使用完整,后续使用简写
[coresw-GigabitEthernet0/0/1]port link-type access
[coresw-GigabitEthernet0/0/1]port default vlan 100
[coresw-GigabitEthernet0/0/1]int g 0/0/11 #简写命令
[coresw-GigabitEthernet0/0/11]p l a #简写命令
[coresw-GigabitEthernet0/0/11]p d v 10 #简写命令
[coresw-GigabitEthernet0/0/11]int g 0/0/12
[coresw-GigabitEthernet0/0/12]p l a
[coresw-GigabitEthernet0/0/12]p d v 20
[coresw-GigabitEthernet0/0/12]int g 0/0/13
[coresw-GigabitEthernet0/0/13]p l a
[coresw-GigabitEthernet0/0/13]p d v 30
[coresw-GigabitEthernet0/0/13]int
[coresw-GigabitEthernet0/0/13]quit
#配置和边界路由器互联,使用OSPF动态协议演示
[coresw]int loopback 1
[coresw-LoopBack1]ip add 2.2.2.2 24 #逻辑接口不会宕机,可以用于OSPF协议通信
[coresw-LoopBack1]ospf 1 router-id 2.2.2.2
[coresw-ospf-1]area 0
[coresw-ospf-1-area-0.0.0.0]network 172.17.10.0 0.0.0.255
[coresw-ospf-1-area-0.0.0.0]network 172.17.20.0 0.0.0.255
[coresw-ospf-1-area-0.0.0.0]network 172.17.30.0 0.0.0.255
[coresw-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[coresw-ospf-1-area-0.0.0.0]quit
[coresw-ospf-1]quit
  • 边界路由器BDR配置(外网出口配置,内网路由汇聚)
<Huawei>system-view
[Huawei]sysname bdr
[bdr]]int loopback 1
[bdr-LoopBack1]ip add 1.1.1.1 24 #逻辑接口不会宕机,可以用于OSPF协议通信
[bdr-LoopBack1]quit
[bdr]int g 0/0/0
[bdr-GigabitEthernet0/0/0]ip add 200.1.1.2 24
[bdr-GigabitEthernet0/0/0]int g 0/0
[bdr-GigabitEthernet0/0/1]ip add 10.1.1.1 24
[bdr-GigabitEthernet0/0/1]quit
[bdr]ospf 1 router-id 1.1.1.1
[bdr-ospf-1]
[bdr-ospf-1]area 0
[bdr-ospf-1-area-0.0.0.0]
[bdr-ospf-1-area-0.0.0.0]network 10.1.1.0 0.0.0.255
[bdr-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[bdr-LoopBack1]quit
[bdr]ip route-static 0.0.0.0 0 200.1.1.1 #配置出公网默认路由。
  • PC配置,用于ping验证( 尚未配置NAT,DNS服务器暂时访问不通

网络地址转换二进制,网络地址转换nat的作用是什么

  • 客户端配置,用于Web访问验证( 尚未配置NAT,DNS和互联网暂时访问不通

网络地址转换二进制,网络地址转换nat的作用是什么

  • Web Server配置用于提供服务( 尚未配置NAT Server,外部无法被访问域名和I P)

网络地址转换二进制,网络地址转换nat的作用是什么

  • 结果验证

1)核心交换机路由表

<coresw>display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 13 Routes : 13
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 OSPF 10 1 D 10.1.1.1 Vlanif100
2.2.2.0/24 Direct 0 0 D 2.2.2.2 LoopBack1
2.2.2.2/32 Direct 0 0 D 127.0.0.1 LoopBack1
10.1.1.0/24 Direct 0 0 D 10.1.1.2 Vlanif100
10.1.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif100
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.17.10.0/24 Direct 0 0 D 172.17.10.254 Vlanif10
172.17.10.254/32 Direct 0 0 D 127.0.0.1 Vlanif10
172.17.20.0/24 Direct 0 0 D 172.17.20.254 Vlanif20
172.17.20.254/32 Direct 0 0 D 127.0.0.1 Vlanif20
172.17.30.0/24 Direct 0 0 D 172.17.30.254 Vlanif30
172.17.30.254/32 Direct 0 0 D 127.0.0.1 Vlanif30

2)边界路由器路由表(BDR)

[bdr]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 18 Routes : 18
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 Static 60 0 RD 200.1.1.1 GigabitEthernet 0/0/0
1.1.1.0/24 Direct 0 0 D 1.1.1.1 LoopBack1
1.1.1.1/32 Direct 0 0 D 127.0.0.1 LoopBack1
1.1.1.255/32 Direct 0 0 D 127.0.0.1 LoopBack1
2.2.2.2/32 OSPF 10 1 D 10.1.1.2 GigabitEthernet 0/0/1
10.1.1.0/24 Direct 0 0 D 10.1.1.1 GigabitEthernet 0/0/1
10.1.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/1
10.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.17.10.0/24 OSPF 10 2 D 10.1.1.2 GigabitEthernet 0/0/1
172.17.20.0/24 OSPF 10 2 D 10.1.1.2 GigabitEthernet 0/0/1
172.17.30.0/24 OSPF 10 2 D 10.1.1.2 GigabitEthernet 0/0/1
200.1.1.0/24 Direct 0 0 D 200.1.1.2 GigabitEthernet 0/0/0
200.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/0
200.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet 0/0/0
255.255.255.255/32 Direct 0 0 D 127.0.0.1InLoopBack0

3)互通测试(网关OK,内部互通OK,边界路由器OK)

PC>ping 172.17.30.254
Ping 172.17.30.254: 32 data bytes, Press Ctrl_C to break
From 172.17.30.254: bytes=32 seq=1 ttl=255 time=31 ms
From 172.17.30.254: bytes=32 seq=2 ttl=255 time=15 ms
From 172.17.30.254: bytes=32 seq=3 ttl=255 time=16 ms
From 172.17.30.254: bytes=32 seq=4 ttl=255 time=16 ms
From 172.17.30.254: bytes=32 seq=5 ttl=255 time=16 ms
--- 172.17.30.254 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 15/18/31 ms
PC>ping 172.17.10.1
Ping 172.17.10.1: 32 data bytes, Press Ctrl_C to break
From 172.17.10.1: bytes=32 seq=1 ttl=254 time=47 ms
From 172.17.10.1: bytes=32 seq=2 ttl=254 time=15 ms
From 172.17.10.1: bytes=32 seq=3 ttl=254 time=31 ms
From 172.17.10.1: bytes=32 seq=4 ttl=254 time=32 ms
From 172.17.10.1: bytes=32 seq=5 ttl=254 time=31 ms
--- 172.17.10.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 15/31/47 ms
PC>ping 10.1.1.1
Ping 10.1.1.1: 32 data bytes, Press Ctrl_C to break
From 10.1.1.1: bytes=32 seq=1 ttl=254 time=63 ms
From 10.1.1.1: bytes=32 seq=2 ttl=254 time=31 ms
From 10.1.1.1: bytes=32 seq=3 ttl=254 time=78 ms
From 10.1.1.1: bytes=32 seq=4 ttl=254 time=31 ms
From 10.1.1.1: bytes=32 seq=5 ttl=254 time=32 ms
--- 10.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 31/47/78 ms

3.2 公网部分模拟部署配置

公网服务器、DNS服务器、终端用户一般都是在公司内网出来的,与3.1公司内部配置组网大同小异。这里仅做模拟将NAT部分就省略掉了。

  • 公网模拟ISP路由器配置(互联网无需配置与公司网络相连的路由)
<Huawei>system-view
[Huawei]sysname isp
[isp]int g 0/0/0
[isp-GigabitEthernet0/0/0]ip add 200.1.1.1 24
[isp-GigabitEthernet0/0/0]int g 0/0/1
[isp-GigabitEthernet0/0/1]ip add 100.1.1.254 24
[isp-GigabitEthernet0/0/1]int g 0/0/2
[isp-GigabitEthernet0/0/2]ip add 122.14.229.254 24
[isp-GigabitEthernet0/0/2]quit
  • 互通验证
<isp>ping 200.1.1.2
PING 200.1.1.2: 56 data bytes, press CTRL_C to break
Reply from 200.1.1.2: bytes=56 Sequence=1 ttl=255 time=210 ms
Reply from 200.1.1.2: bytes=56 Sequence=2 ttl=255 time=30 ms
Reply from 200.1.1.2: bytes=56 Sequence=3 ttl=255 time=50 ms
Reply from 200.1.1.2: bytes=56 Sequence=4 ttl=255 time=30 ms
Reply from 200.1.1.2: bytes=56 Sequence=5 ttl=255 time=20 ms
--- 200.1.1.2 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/68/210 ms

3.3 NAT、DNS、Web Server互联互通部署配置

  • 边界路由器NAT配置
[bdr]nat address-group 1 200.1.1.100 200.1.1.120 #配置地址池
[bdr]acl 2000
[bdr-acl-basic-2000]
[bdr-acl-basic-2000]rule permit source 172.17.20.0 0.0.0.255
[bdr-acl-basic-2000]acl 2001
[bdr-acl-basic-2001]rule permit source 172.17.30.0 0.0.0.255
[bdr-acl-basic-2001]int g 0/0/0
#出云,访问公网动态NAT演示 - 使用地址池
[bdr-GigabitEthernet0/0/0]nat outbound 2000 address-group 1
#出云,访问公网easy ip NAT模式
[bdr-GigabitEthernet0/0/0]nat outbound 2001
#入云,访问
[bdr-GigabitEthernet0/0/0]nat server protocol tcp global current-interface 8080 inside 172.17.10.1 www
[bdr-GigabitEthernet0/0/0]quit
  • 核心交换机配置默认路由

#访问外网IP地址的时候,并没有特定路由表,需增加默认路由到边界路由器

[coresw]ip route-static 0.0.0.0 0 10.1.1.1
  • DNS配置

实际DNS配置模拟,一般在权威DNS厂商上配置,如腾讯DNS Pod,华为云智能DNS等,关于域名解析的详细原理,请参考域名与DNS解析原理简介

网络地址转换二进制,网络地址转换nat的作用是什么

  • Web Server配置

网络地址转换二进制,网络地址转换nat的作用是什么

网络地址转换二进制,网络地址转换nat的作用是什么

  • 互联互通验证

1)出云,Easy IP NAT模式(内部访问外部ping)

PC1(172.17.30.1) ping DNS服务器(122.14.229.100 ):

网络地址转换二进制,网络地址转换nat的作用是什么

边界路由器中的NAT回话查询:

<bdr>display nat session all
NAT Session Table Information:
Protocol : ICMP(1)
SrcAddr Vpn : 172.17.30.1
DestAddr Vpn : 122.14.229.100
Type Code IcmpId : 0 8 22863
NAT-Info
New SrcAddr : 200.1.1.2
New DestAddr : ----
New IcmpId : 10269

BDR GE 0/0/1口抓包(公司内部互联):

网络地址转换二进制,网络地址转换nat的作用是什么

BDR GE 0/0/0口抓包(公网互联):

网络地址转换二进制,网络地址转换nat的作用是什么

2)出云,动态地址池NAT模式(内部访问外部DNS和Web Server)

Client1( 172.17.20.1 ) 访问Web Server(www.toutiao.com ):

网络地址转换二进制,网络地址转换nat的作用是什么

BDR GE 0/0/1口抓包(公司内部互联), NAT原理是一样的,可以看一下DNS协议报文, 关于域名解析的详细原理,请参考 域名与DNS解析原理简介:

网络地址转换二进制,网络地址转换nat的作用是什么

BDR GE 0/0/0口抓包(公网互联),外部转换地址是地址池中的地址(200.1.1.115):

网络地址转换二进制,网络地址转换nat的作用是什么

3)入云,NAT Server模式(外部访问公司内部服务)

Client11(100.1.1.2) 访问Web Server(www.shangouxuehui.com ):

网络地址转换二进制,网络地址转换nat的作用是什么

BDR GE 0/0/0口抓包(公网互联),外部转换地址是静态地址转换(200.1.1.2):

网络地址转换二进制,网络地址转换nat的作用是什么

BDR GE 0/0/1口抓包(公司内部互联):

网络地址转换二进制,网络地址转换nat的作用是什么