陆军,刘佳,杨俊叶
(石家庄理工职业学院,河北石家庄050228)
NAT技术的具体应用与实践
陆军,刘佳,杨俊叶
(石家庄理工职业学院,河北石家庄050228)
本文阐述了NAT技术产生的原因,分析了NAT的工作原理和类型,并举例说明在思科路由器上如何配置网络地址端口转换,以实现局域网主机访问互联网上的服务器。
NAT;PAT;路由器
随着网络用户的迅猛增长,IPv4的地址空间日趋紧张,在将地址空间从IPv4转到IPv6之前,需要将日益增多的单位内部网络接入外部网。在申请不到足够的公网IP地址的情况下,要使单位主机都能连接到Internet上,必须使用NAT技术。
NAT英文全称是NetworkAddress Translation,称为网络地址转换,它是一个IETF标准,允许一个用户众多的机构仅用少量的公网地址连接到Internet上。
(1)内部网络(Inside):指那些由单位所拥有的网络,与NAT路由器上被定义为inside的接口相连接。
(2)外部网络(Outside):指除了内部网络之外的所有网络,称为Internet网络,与NAT路由器上被定义为outside的接口相连接。
(3)内部本地地址(InsideLocalAddress):内部网络主机使用的IP地址。这些地址一般为私有IP地址,它们不能直接在Internet上路由,因而也就不能直接用于对Internet的访问,必须通过网络地址转换,以合法的公网IP地址的身份来访问Internet。
(4)内部全局地址(InsideGlobal Address):内部网络使用的公有IP地址,这些地址是向ICANN申请才可取得的公有IP地址。当使用内部本地地址的主机要与Internet通信时,NAT转换时使用的地址。
(5)外部本地地址(OutsideLocal Address):外部网络主机使用的IP地址,这些地址不一定是公有IP地址。
(6)外部全局地址(OutsideGlobal Address):外部网络主机使用的IP地址。这些地址是全局可路由的公有IP地址。
NAT进行地址转换的过程就是本地地址与全局地址之间的转换过程,无论数据包是从内部网络发往外部网络,还是从外部网络发往内部网络。不同的只是本地地址和全局地址所对应的网络不同,以及数据包重新封装的源和目的地址不同。
在转换过程中,当数据包还在内部网络位置时有一个作为源地址的内部本地地址和一个作为目的地址的外部本地地址。此数据包首先发往路由器连接内部网络的接口中。当数据包被转发到外部网络时,数据包的源地址就会转变为内部全局地址,而目的地址被转变为外部全局地址。也就是把数据包的所有源和目的地址全部由本地地址转换为全局地址。这个过程是通过NAT中的本地地址与全局地址映射条目来实现的,所以事先要在NAT路由器上配置这样的映射条目。
相反,当数据包是从外部网络位置发来,并且仍位于外部网络中时,则它的源地址就是外部全局地址,目的地址就是内部全局地址。相当于由内部网络向外部网络发送数据包时,外部网络主机接收到的数据包中的源地址和目的地址的互换。而当数据包被路由器转发到本地网络时,源地址被转变为外部本地地址,目的地址被转变为内部本地地址,也相当于由内部网络向外部网络发送数据包时,内部网络主机发送的数据包中的源地址和目的地址的互换。
NAT有三种类型:静态NAT(StaticNAT)、动态NAT(DynamicNAT)和网络地址端口转换PAT(PortAddressTranslation)。
(1)静态地址转换:局域网内部的私网地址,一对一地映射为一个公网地址。
(2)动态地址转换:有一个供转换用的公网地址池,从地址池中选择未用的公网地址,实现私网地址与公网地址间一对一对映射转换。可提高公网地址的利用率。
(3)网络地址端口转换:用一个公网地址的一个端口来对应一个私网地址,从而建立起基于IP地址和端口的一一对应关系。对于一个公网IP地址,由于有6万多个TCP端口,因此,理论上可代理6万多台使用私网地址的主机访问因特网。但实际上,用户访问一个网站,通常要建立多个TCP连接,实际能代理的主机数通常为4000台左右。
4.1 在思科路由器配置NAT的命令
在企业、学校的局域网访问Internet时,广泛使用的是网络地址端口转换,网络地址端口转换在思科路由器上配置的命令为:
ipnatinside|
ipnatoutside
ipnatpoolnamestart-ipend-ipnetmasknetmask
access-list access-list-numberpermitsource
source-wildcard
ipnatinsidesourcelistaccess–list-number pool
nameoverload
4.2 一个应用NAT配置的实例
网络拓扑结构如图所示:
主机0的ip地址为:172.16.1.2/24默认网关:172.16.1.1
主机1的ip地址为:172.16.1.3/24默认网关:172.16.1.1。
主机2的ip地址为:172.16.1.4/24默认网关:172.16.1.1。
服务器0的ip地址为:135.128.1.2/24默认网关:135.128.1.1。
具体配置步骤如下:在路由器0上操作:
Router>en
Router#conf t
Router(config)#host A
A(config)#int f0/0
A(config-if)#ipadd 172.16.1.1 255.255.255.0
A(config-if)#noshut
A(config-if)#intf0/1
A(config-if)#ipadd 210.28.1.2 255.255.255.252
A(config-if)#noshut
A(config-if)#exit
A(config)#iproute 0.0.0.0 0.0.0.0 f0/1
A(config)#intf0/0
A(config-if)#ipnatinside
A(config-if)#intf0/1
A(config-if)#ipnatoutside
A(config-if)#exit
A(config)#ip nat pool jspinj 210.28.1.2 210.28.1.2
netmask 255.255.255.252
A(config)#acc 10 per 172.16.1.0 0.0.0.255
A(config)#ip nat inside source list 10 pool jspi-nj
overload
A(config)#end
A#wri
在路由器1上操作:
Router>en
Router#conf t
Router(config)#host B
B(config)#int f0/0
B(config-if)#ip add 135.128.1.1 255.255.255.0
B(config-if)#no shut
B(config-if)#int f0/1
B(config-if)#ip add 210.28.1.1 255.255.255.252
B(config-if)#no shut
B(config-if)#end
B#wri
用主机0访问服务器0的内容,在路由器0上执行show ip nat translations可查看NAT转换情况。
(1)NAT使得IP协议从面向无连接变成面向连接。NAT必须维护专用IP地址与公用IP地址以及端口号的映射关系。在TCP/IP协议体系中,如果一个路由器出现故障,不会影响到TCP协议的执行。因为只要几秒收不到应答,发送进程就会进入超时重传处理。而当存在NAT时,最初设计的TCP/IP协议过程将发生变化,Internet可能变得比较脆弱。
(2)NAT违反了基本的网络分层结构模型的设计原则。因为在传统的网络分层结构模型中,第N层是不能修改第N+1层的报头内容的。NAT破坏了这种各层独立的原则。
(3)有些应用是将IP地址插入到正文的内容中,例如标准的FTP协议与IPPhone协议H.323。如果NAT与这一类协议一起工作,那么NAT协议一定要做适当地修正。同时,网络的传输层也可能使用TCP与UDP协议之外的其他协议,那么NAT协议必须知道并且做相应的修改。由于NAT的存在,使得P2P应用实现出现困难,因为P2P的文件共享与语音共享都是建立在IP协议的基础上的。
总的来说,NAT带来了很大的优越性,可以节约地址空间、可以简化配置、使网络规划更灵活。但是,它对网络应用带来了一定的影响,也给网络管理带来了一定的复杂性,并且会潜在的影响网络安全性,所以在使用时一定要仔细的规划。
[1]冯昊.交换机/路由器配置与管理[M].北京:清华大学大学出版社,2010
[2]胡芝.计算机网络实验指南[M].杭州:浙江大学出版社,2011
[3]蒋玲.网络工程师培训教程[M].成都:四川大学出版社,2010
TP393.2
A
JL01-0229(2013)04-0015-03
2013-09-26
责任编辑:封军来
校对:曹军校
陆军(1969-),男,汉族,河北石家庄市人,网络与信息学院,高级工程师,主要从事计算机网络教学与研究工作。