什么是网络地址转换
网络地址转换是用于将一个专用地址域(局域网内部或Intranet)与另一个地址域(如Internet)建立起对应关系的技术。这种对应关系称为映射。NAT允许一个机构的专用Intranet或局域网中的主机透明地连接到公共域中的主机,不用内部主机拥有注册的Internet地址。使用内部地址的主机在访问Internet时,或者被Internet上的主机访问时,数据包均需要进行内部专用地址与Internet公用地址之问的转换。
网络地址转换的特点
(1)将内部网络连接到Internet。NAT可以用少数几个甚至一个合法的IP地址映射多个内部主机地址,这样就可大大减缓合法IP地址耗尽的问题。而且NAT修改了数据包的源地址,使外部设备看不到内部设备的地址,因此网络的安全性也得到了一定的保障。
(2)当变更ISP时,虽然ISP分配给用户的地址变了,但是用户仍无须改变内部设备的地址,只需在NAT路由器上做出相应的修改就可以轻松完成网络的升级,并且NAT在网络合并方面也有着很大的应用场合。
(3)支持TCP负载均衡。通过使用NAT,可以把内部的几台服务器捆绑成一台虚拟服务器,这些服务器在外部设备看来只是一台服务器。当流量进入内部网络时,NAT可以在这几台服务器之间自动进行分流,这样就增加了网络的可靠性。
网络地址转换的工作原理
图1“服务和端口”选项卡
如图1所示,NAT将网络分为内、外两部分,位于内部网络和外部网络边界的NAT路由器执行着地址翻译的操作。
顾名思义,NAT是一种把内部私有网络地址翻译成合法网络地址的技术。简单地说,NAT就是在局域网内部使用私有IP地址,当需要与外部网络进行通信时,就在网关处将内部地址替换成公用地址。通过使用NAT技术,可以只申请一个合法IP地址,就把整个局域网中的计算机接人Internet中。这时,NAT屏蔽了内部网络,所有内网资源对于公共网络来说是不可见的,而内部用户通常也不会意识到NAT的存在。
NAT功能通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中。网络管理员只需在路由器的IOS中设置NAT功能,就可以实现对内部网络的屏蔽。另外,对小型企业来说,通过软件也可以实现这一功能,例如5.1.5节中介绍的WindowsServer2003接人服务中也包含了这一功能。
网络地址转换的过程
(1)内部主机x用本地地址IPX和因特网上主机Y通信所发送的数据报必须经过NAT路由器。
(2)NAT路由器将数据报的源地址IP转换成全球地址IPG,但目的地址IPY保持不变,然后发送到因特网。
(3)NAT路由器收到主机Y发回的数据报时,知道数据报中的源地址是IPY,而目的地址是IPG。
(4)根据NAT转换表,NAT路由器将目的地址IPG转换为IPx,转发给最终的内部主机X。
网络地址转换的实现方式
NAT的实现方式有三种,即静态转换StaticNat、动态转换DynamicNat和端口多路复用PAT。
静态转换是指将内部网络的私有IP地址转换为公有IP地址,口地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。
动态转换是指将内部网络的私有Ip地址转换为公用IP地址时,IP地址是不确定的,而是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时,可以采用动态转换的方式。
端口多路复用是指改变外出数据包的源端口并进行端口转换,即端口地址转换。它采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部口地址实现对Intemet的访问,从而可以最大限度地节约Ⅲ地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自Intemet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。
网络地址转换NAT配置
按转换方式的不同,NAT包括静态NAT和动态NAT两种方式,动态NAT又分为地址池转换(PoolNAT)和端口地址转换(PortNAT),分别介绍如下。
1.静态NAT
静态NAT用于在专用IP地址与公用IP地址之间进行一对一的转换。其配置过程如下:
!指定参与转换的专用地址与公用地址
Router(config)#ip nat inside soure static local—ip global—ip
!指定参与转换的局域网接口
Route(config)#interface E 0
Router(config—if)#ip address ip—address submask
!定义此为网络的内部接口
Router(config—if)# ip nat inside
!指定参与转换的广域网接口
Router(config)#interface S 0
Router(config—if)#ip address ip—address submask
!定义此为网络的外部接口
Router(COnfig-if)#ip nat outside
2.动态地址转换
(1)PoolNAT配置
PoolNAT执行专用地址与公用地址的一对一转换,但是公用地址与专用地址的对应关系不是一成不变的,它是从公用地址池(Pool)中动态地选择一个公用地址与一个内部专用地址相对应。
定义公用地址池(申请到的合法IP地址的范围)的命令格式为
IP nat pool name start—ip end—ip netmask
定义一个标准访问列表,指定哪些专用地址被允许进行转换,其命令格式为
access—list access—list-number permit source—ip—address
其中,access—list—number取值为1~99;通配符掩码的作用与子网掩码类似,但它是子网掩码的反码。例如,若允许202.173.96.o/24网络的全部主机进行动态地址转换,则可以使用下列命令:
access—list 1 permit 202.173.96.00.0.0.255
在专用地址与公用地址之间建立动态地址转换pool NAT,可以使用下列命令:
ip nat inside soure list access一list—number pool pool一name
若地址池名称为aaa,则命令“ip nat inside source list 1 pool aaa”表示把“access—list l”允许的内部地址映射为地址池aaa定义的公用地址。
(2)Port NAT配置
Port NAT是把专用地址映射到公用地址的不同端口上,因为一个IP地址的端口数有65535个,即一个公用地址可以和最多达65535个内部地址建立映射,故从理论上说,一个公用地址可以供六万多个内部地址通过NAT连接Internet。
这里仍需要使用ip nat pool命令定义一个公用地址池,然后利用access—list命令配置访问列表,指定哪些专用地址被允许进行转换。最后使用ip nat inside命令,在专用地址与公用地址之间建立端口地址转换,但是其格式与pool NAT有所不同,格式为:
ip nat inside source list access—list—number pool pool—name over load
;3.NAT配置示例
企业网Intranet通过DDN专线共享公用地址访问Internet。已知Intranet内部采用网络地址192.168.1.0 255.255.255.0,申请到的公用Internet地址为202.128.62.33~202.128.62.62,子网掩码为255.255.255.224,广域网口地址为201.6.2.5,子网掩码为255.255.255.252,广域网口封装HDLC协议。要求通过动态地址转换,使内网的主机可以访问Internet。
根据要求,对Intranet和Internet之间连接的路由器的动态PortNAT配置如下:
!配置局域网口IP地址
Router(config)#interface E 0
Router(config—if)# ip address 192.168.1.1255.255.255.0
!配置广域网口IP地址
Router(config)#interfaceS 0
Router(config—if)#ip201.6.2.5255.255.255.252
!封装HDLC协议
Router(config—if)#encapsulation hdlc
!设置keepalive时延为10s
Router(config—if)# keepalire10
Router(config—if)# no shutdown
!设置允许访问的内部IP地址列表
Router(config)#access一1ist 1 permit 192.168.1.00.0.0.255
!配置公用IP地址池aaa
Router(config)#ip nat pool aaa 202.128.62.33202.128.62.62255.255.255.224
!配置端口地址转换
Router(config)#ip nat inside source list 1 pool aaa overload
!启用RIP版本2,配置RIP路由
Router(config)# router rip
Router(config—router)# version 2
Router(config—router)#network 192.168.1.0
Router(config—router)#network 201.6.2.4
!配置默认IP路由
Router(config)#iproute0.0.0.00.0.0.0serial 0
网络地址转换的作用
NAT有两个主要的作用:首先,多个内部地址可以共享一个公用地址上网,从而节约了公用地址的使用。另外,因为采用NAT的内部主机不直接使用公用地址,所以,在Internet上不直接可见,可以在一定程度上减少被攻击的风险,增强网络的安全性。
网络地址转换功能存在的不足
虽然NAT为网络带来了不少好处,但是NAT也存在一些不足,主要表现为:
(1)NAT路由器必须保持对每个连接状态的记录。对于每次翻译的流量,NAT都必须记住其转换的地址和端口,所以当NAT设备出现故障或NAT邻近的链路出现故障时,路由难以快速收敛。NAT也会耗尽大量的CPU和内存资源,进而影响网络的性能和数据包的处理,大大增加了网络的延时,这对于部分网络应用程序也是不可接受的。
(2)在进行一些网络安全的设计和实施时,一些加密方法必须对IP包头的完整性进行校验,这样就要求包头在从源到目的地址之间传输时不能被改变。任何在路途中对包头部分的转换都会破坏完整性检查,而NAT重写了第三层包头信息,很难实现IP包头的完整性。因此在做IPSecVPN时,IPSec不能对NAT流量实施端到端的安全保护。
(3)NAT只能支持有限的程序,NAT支持的IP业务和应用有H1vrP、TFTP、Telnet、NTP、NFS、RCP、RSH、ACHIE、FTP、ICMP、DNS等。NAT不支持的IP业务和应用有BOOTP、SNMP、NETSHOW等,特别是各种动态路由协议的路由表更新和DNS数据库的相互更新。