网络地址转换NAT(Network Address Translation)技术作为延缓IPv4地址枯竭的方法之一,目前已经普遍流行于各种企业网络之中。NAT技术的出现改变了原来简答的网络结构变得复杂,在节省IP地址和保护网络的同时,也给网络追踪和网络安全带来了困难。本章主要学习NAT的基本配置,掌握NAT的工作原理以及在企业网络部署中的应用。
(1)理解NAT的工作原理与用途
(2)理解NAT的分类
(3)理解ip nat inside 和ip nat outside的使用
(4)掌握静态NAT的配置
NAT最初定义在RFC1631,用在接入广域网中,通过修改IP报文的地址信息,实现将内部网络的私有地址到外部网络的公有地址的转换。NAT的产生原因和无分类域间路由(CIDR)一样,都是为了减缓IPv4地址耗竭的问题。NAT实现了私有地址到公有地址的转换,使得企业内部网络可以使用相同的私有地址,但在对外通信的时候却可以使用公有地址通信,降低了企业对公有地址的需求。
RFC1918定义了Internet中的私有地址,主要包含以下几类:
l A类:10.0.0.0~10.255.255.255
l B类:172.16.0.0~172.31.255.255
l C类:192.168.0.0~192.168.255.255
私有地址只能用于企业网络的内部通信,不用于Internet的通信,Internet上的路由器会丢弃目的IP为私有地址的报文。私有地址的出现使得每台主机的通信不必都申请公有地址,从而节省了IP地址,有助于缓解IPv4地址的枯竭。
NAT的相关术语:
NAT的一些术语
l 内部本地地址(Inside Local, IL),是指分配给内部网络主机的IP地址,该地址可能是非法的未向相关机构注册的IP地址,也可能是合法的私有网络地址。
l 内部全局地址(Inside Global,IG),合法的全局可路由地址,在外部网络代表着一个或多个内部本地地址。
l 外部本地地址(Outside Local,OL),外部网络的主机在内部网络中表现的IP地址,该地址是内部可路由地址,一般不是注册的全局唯一地址。
l 外部全局地址(Outside Global,OG),外部网络分配给外部主机的IP地址,该地址为全局可路由地址。
NAT除了应用在地址转换外,在网络的迁移和合并、服务器负载均衡、创建虚拟主机等方面也有很好的应用。
NAT根据其应用主要分成以下几类:静态地址映射NAT,动态地址映射NAT、端口映射NAPT、NAT负载均衡。
NAT类型 |
特点 |
静态NAT |
一个私有IP固定映射一个公有IP地址,提供内网服务器的对外访问服务 |
动态NAT |
私有IP映射地址池中的公有IP,映射关系是动态的,临时的 |
NAPT |
私有IP地址和端口号与同一个公有地址加端口进行映射 |
静态转换NAT是最简单的方式,它在NAT表中为每个需要转换的内部地址创建了固定的转换条目,映射了唯一的全局地址。内部地址与全局地址一一对应。如:192.168.12.2 ---- 200.268.12.2。
如图9-1所示,内网主机A:172.16.10.10发送数据外网主机B:210.38.224.20。在数据到达网络边缘NAT路由器之前,报文的源IP为A的IP地址:172.16.10.10,目的IP为B的IP地址:210.38.224.20。报文到达路由器后,路由器会查找NAT映射表,取得172.16.10.10映射的内部全局地址202.80.20.1,继而将报文的源IP地址替换为202.80.20.1,如图中数据包2所示。在外网主机B和内网主机A的通信过程中,则会将报文的目的IP地址进行替换。
静态映射对外隐藏了内部主机的真实IP地址,起到保护内部主机的作用。静态NAT还可以让外部主机通过内部全局地址访问内部的服务器,在内网需要向外提供网络服务而又不愿意暴露真实IP地址通常使用该类NAT技术。
其他类型的NAT工作原理在本章的其他小节另有讲解。
NAT技术的出现从一定程度上缓解了IPv4地址衰竭问题,但是NAT也让主机之间的通信变得复杂,导致通信效率的降低。NAT的应用带来了以下限制:
l 影响网络速度,NAT的应用会使NAT设备变成网络的瓶颈
l 跟某些应用不兼容,如果一些应用在有效载荷中协商下次会话的IP地址和端口号,NAT将无法对内嵌IP地址进行地址转换,造成这些程序不能正常运行
l 地址转换不能处理IP报头加密的报文
无法实现对IP端到端的路径跟踪,经过NAT地址转换后,对数据包的路径跟踪变得非常困难
4.静态NAT配置步骤表1 静态NAT的配置步骤
|
配置说明 |
命令 |
步骤1 |
配置内部接口、和外部接口 |
//进入外部接口接口模式 Router(config-if)#interface interface-id Router(config-if)#ip nat outside //进入内部接口接口模式 Router (config-if)#interface interface-id Router (config-if)#ip nat inside |
步骤2 |
配置本地地址和全局地址的静态映射 |
Router (config)#ip nat inside source static x.x.x.x(本地地址) x.x.x.x(全局地址) |
步骤4 |
检查NAT的运行结果 |
Router #show ip nat translations |
命令详解:
(1)例1:置内网主机192.168.20.100能够被外网主机访问,外部访问地址为:200.30.2.100,NAT映射命令如下:
Router(config)# ip nat inside source static 192.168.20.100 00.30.2.100
(2)例2:配置内网主机192.168.20.100的Web服务80端口能够被外网访问,外部访问地址为200.30.2.100,NAT映射命令如下:
Router(config)# ip nat tcp inside source static 192.168.20.100 80 00.30.2.100 80
(3) ip nat inside source与ip nat outside source的区别
ip nat inside source表示转换IP包的源地址,当数据包从内部发往外部;或者转换IP包的目的地址,当数据包从外部传输到内部。
Ip nat outside source表示转换IP包的源地址,当数据包从外部传输到内部;或者转换IP包的目的地址,当数据包从内部发往外部。
网络拓扑图如图2所示。
表2静态NAT网络IP地址表
设备 |
接口 |
IP地址 |
子网掩码 |
R1 |
Fa 0/0 |
192.168.1.1 |
/24 |
S2/0(DCE) |
210.38.220.1 |
/24 |
|
R2 |
S2/0 |
210.38.220.2 |
/24 |
PC1 |
NIC |
192.168.1.10 |
/24 |
PC2 |
NIC |
192.168.1.20 |
/24 |
背景说明:
某公司需要访问外部网络,但是有需要向外隐藏内部的具体IP地址。同时,本公司的PC1主机192.168.1.10需要能够被外部主机访问,映射的本地全局地址为210.38.220.10。要求根据上述要求,配置R1和R2路由器,使得PC1能够访问外网,PC2不能够访问外网,外部网络可以访问PC1。
实验步骤:
步骤1:R1配置(1)测试内网主机到外网通信。PC1上ping 路由器的接口。
C:\>ping 210.38.220.2
Pinging 210.38.220.2 with 32 bytes of data:
Reply from 210.38.220.2: bytes=32 time=94ms TTL=254
Reply from 210.38.220.2: bytes=32 time=93ms TTL=254
Reply from 210.38.220.2: bytes=32 time=78ms TTL=254
Reply from 210.38.220.2: bytes=32 time=78ms TTL=254
Ping statistics for 210.38.220.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 78ms, Maximum = 94ms, Average = 85ms
(2)测试外网主机访问内网。
(3)使用debug命名查看IP地址变化。
R2#debug ip icmp
ICMP: echo reply sent, src 210.38.220.2, dst 210.38.220.10
ICMP: echo reply sent, src 210.38.220.2, dst 210.38.220.10
ICMP: echo reply sent, src 210.38.220.2, dst 210.38.220.10
ICMP: echo reply sent, src 210.38.220.2, dst 210.38.220.10
在R2上使用debug命令查看来自于PC1的ICMP报文,可以观察到报文的源地址已经变成210.38.220.2,说明完成了静态映射功能。
(4)查看路由器的NAT地址转换表。
R1#sh ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 210.38.220.10 192.168.1.10 --- ---
在R1上使用show ip nat translations查看路由器中的静态映射表,可以看到Inside local(本地局部地址)和Inside global(本地全局地址)的映射关系已经建立。