NAT/NPAT技术一、NAT概述NAT是将一个IP地址转换为另一个IP地址的功能。通常,一个局域网由于申请不到足够多的IP地址,或者只是为了编址方便,在局域网内部采用私有IP地址为设备编址,当设备访问外网时,再通过NAT将私有地址翻译为合法地址。Internet192.168.1.10200.1.25.6私有地址注册地址NAT网关局域网专用IP地址局域网专用IP地址是Internet特别划分出来的,它们不会注册给任何组织。IP地址范围网络类型网络个数10.0.0.0~10.255.255.255A1172.16.0.0~172.31.255.255B16192.168.0.0~192.168.255.255C256实际上,用户可以使用任意IP作为私有地址,但有可能导致某些外网的站点无法访问。使用私有地址的注意事项:私有地址不需要经过注册就可以使用,这导致这些地址是不唯一的。所以私有地址只能限制在局域网内部使用,不能把它们路由到外网中去。R1E0S0192.168.*.*192.168.1.1/24200.1.1.1/24InternetR1是局域网和外网的边界路由器。局域网中使用私有IP地址进行编址。如果在R1上启用RIP协议,则:R1(config)#routerripR1(config-router)#network200.1.1.0R1(config-router)#network192.168.1.0×这里不应该在私有地址上启用路由,它会导致私有地址被外网路由器学习到,扩大了它的有效范围。NAT基本原理当一个使用私有地址的数据包到达NAT设备时,NAT设备负责把私有IP地址翻译成外部合法IP地址,然后再转发数据包,反之亦然。端口多路复用技术:NAT支持把多个私有IP地址映射为一个合法IP地址的技术,这时各个主机通过端口进行区分,这就是端口多路复用技术。利用端口多路复用技术可节省合法IP地址的使用量,但会加大NAT设备的负担,影响其转发速度。NAT4种地址类型NATInternetPC192.168.1.2目的IP=192.168.1.2源IP=203.51.23.55经过路由器后的包目的IP=203.51.23.55源IP=192.168.1.2PC访问服务器的包目的IP=125.25.65.3源IP=203.51.23.55服务器返回PC的包203.51.23.55目的IP=203.51.23.55源IP=125.25.65.3经过路由器后的包转换转换内部外部内部局部地址外部局部地址外部全局地址内部全局地址Internet10.1.1.110.1.1.2172.20.7.3外部主机BSA10.1.1.1SA193.108.2.2DA193.108.2.2DA10.1.1.1NATNAT转换表协议内部用局部IP地址内部用全局IP地址外部用全局IP地址TCP10.1.1.1193.108.2.2172.20.7.3:2312345静态转换PATInternet10.1.1.110.1.1.2172.20.7.3外部主机BSA10.1.1.1SA193.108.2.2DA193.108.2.2DA10.1.1.1NATNAT转换表协议内部用局部IP地址内部用全局IP地址外部用全局IP地址TCP10.1.1.1:1492193.108.2.2:1492172.20.7.3:23TCP10.1.1.2:1493193.108.2.2:1493172.20.7.3:8012345NAT转换类型1、静态NAT:将内部地址和外部地址进行一对一的转换。这种方法要求申请到的合法IP地址足够多,可以与内部IP地址一一对应。静态NAT一般用于那些需要固定的合法IP地址的主机,比如Web服务器、FTP服务器、E-mail服务器等。192.168.1.1192.168.1.2200.10.1.5200.10.1.61、静态NAT:Internet192.168.100.3155.34.2.3SA192.168.100.2SA61.159.62.131DA61.159.62.131DA192.168.100.2NATNAT转换表协议内部用局部IP地址内部用全局IP地址外部用全局IP地址TCP192.168.100.261.159.62.131155.34.2.3TCP192.168.100.361.159.62.132155.34.2.3192.168.100.161.159.62.130192.168.100.22、NAT池(动态NAT):将多个合法IP地址统一的组织起来,构成一个IP地址池,当有主机需要访问外网时,就分配一个合法IP地址与内部地址进行转换,当主机用完后,就归还该地址。对于NAT池,如果同时联网用户太多,可能出现地址耗尽的问题。192.168.1.1192.168.1.2200.10.1.5200.10.1.6NAT池3、PAT(端口NAT):使用端口多路复用技术,将多个内部地址映射为一个合法地址,用不同的端口号区分各个内部地址。这种方法只需要一个合法IP地址。路由器支持的PAT会话数是有限制的,所以使用PAT的局域网,其网络的规模不应该太大。192.168.1.1192.168.1.2S0:200.1.1.1/24Internet155.34.2.3SA10.1.1.2SA61.159.62.131DA61.159.62.131DA10.1.1.2NATNAT转换表协议内部用局部IP地址内部用全局IP地址外部用全局IP地址TCP10.1.1.2:102861.159.62.131:1028155.34.2.3TCP10.1.1.2:1121261.159.62.131:11212155.34.2.310.1.1.161.159.62.1301410.1.1.210.1.1.34、复用NAT池(复用动态NAT):将多个合法IP地址构成一个NAT池,使用复用技术映射其中的地址,每个地址有可以对应多台主机,各主机用端口进行区分。复用NAT池是NAT池和PAT技术的结合,可用于大规模的局域网。说明:在端口复用技术中,用端口区分的不是一台主机,而是一个网络连接(会话),当一台主机同时建立了多个会话时,它的每个会话会占用一个端口映射。假如一台路由器支持4000个会话,那么它支持的主机数量会远少于4000台。5、TCP负载均衡:如果一个服务器的访问量非常大,我们通常会建立多台映像服务器对访问进行分流。从外部来看,这些服务器的IP地址相同,NAT设备会把多个对服务器的访问映射到不同的服务器上,实现负载均衡。192.168.1.1192.168.1.2S0:200.1.1.1/24TCP负载均衡与其它NAT的主要区别在于,它是把来自外网的同一合法IP地址翻译成不同的内网IP地址。二、常用NAT设备实现NAT可以使用不同的设备,它们的基本功能相同,但功能强弱有别,应根据需要进行选用。常用的设备有:1、路由器:功能强,支持多种NAT设置;2、防火墙:除NAT转换外,还提供多种保护功能;3、代理服务器:提供局域网接入功能;4、双网卡计算机:功能较弱,多用于小型网络。三、NAT的配置1、静态NAT把私有地址和合法地址作一对一地转换。192.168.1.1192.168.1.2200.10.1.5200.10.1.6E0S0配置命令:Router(config)#ipnatinsidesourcestatic内部地址外部地址另外,还需要把E0口指定为NAT内部接口,S0口指定为NAT外部接口。例:Router(config)#ipnatinsidesourcestatic192.168.1.1200.10.1.5Router(config)#ipnatinsidesourcestatic192.168.1.2200.10.1.6Router(config)#interfacee0Router(config-if)#ipnatinsideRouter(config-if)#interfaces0Router(config-if)#ipnatoutside2、NAT池(动态NAT)192.168.1.1192.168.1.2200.10.1.5200.10.1.6NAT池主要工作:建立一个IP地址池。设定被转换的IP地址范围。建立转换关系。设定转换的入口和出口。1)建立IP地址池Router(config)#ipnatpool地址池名字起始IP结束IPnetmask子网掩码例:建立一个地址范围为200.1.1.1~200.1.1.10/24的IP地址池。Router(config)#ipnatpoolP1200.1.1.1200.1.1.10netmask255.255.255.0P1是地址池的名字。说明:地址池中的地址应该是经过注册的合法IP地址。2)设定被转换的地址范围:被转换的地址范围使用标准访问控制列表进行定义。比如:被转换的地址是形如192.168.*.*/24的地址,则可定义:Router(config)#access-list1permit192.168.0.00.0.255.255说明:这里定义的ACL不是用于数据过滤的,它只是用于指定参与NAT转换的私有地址范围的。所以,我们不必把它用在一个接口上。3)建立被转换的地址和地址池间的关系:Router(config)#ipnatinsidesourcelistACL表号pool地址池名字例:把1号ACL定义的地址与名为P1的地址池建立NAT转换关系。Router(config)#ipnatinsidesourcelist1poolP1说明:经此定义后,每当路由器收到一个数据包,就检测它的源地址,如果和1号ACL相匹配,就使用P1中的地址进行NAT转换。4)指定NAT转换的入口和出口:Router(config)#interface内部接口Router(config-if)#ipnatinsideRouter(config)#interface外部接口Router(config-if)#ipnatoutside说明:每种NAT都需要指定内部接口和外部接口。例:NAT池200.1.1.1-200.1.1.254/2410.0.0.0/8内部网络地址为10.0.0.0/8,注册的IP地址是200.1.1.1-200.1.1.254,用这些地址为内网的各个访问提供NAT翻译。R1f0/0s0/0R1(config)#ipnatpoolippool200.1.1.1200.1.1.254netmask255.255.255.0R1(config)#access-list30permit10.0.0.00.255.255.255R1(config)#ipnatinsidesourcelist30poolippoolR1(config)#interfacef0/0R1(config-if)#ipnatinsideR1(config-if)#interfaces0/0R1(config-if)#ipnatoutside3、复用NAT池当NAT池中的地址耗尽时,会导致后来的主机无法上网。所以当内网的主机数超过NAT池中的地址数时,通常应配置成复用NAT池,这样每个IP地址可对应多个会话,各个会话用端口号进行区分。理论上讲,一个IP地址可以映射约65000个会话,但实际的路由器往往只支持几千个会话(Cisco支持约4000个)。在复用NAT池中,Cisco首先复用地址池中的第一个地址,达到能力极限后,再复用第二个地址,依此类推。复用NAT池的配置方法与NAT池的配置方法基本相同,只是:Router(config)#ipnatinsidesourcelistACL表号pool地址池名字overload在上面的命令中加上overload关键字表示使用端口复用技术。4、PATPAT是复用NAT池的特例,它是通过端口复用技术用于一个合法IP地址映射内网的所有私有IP地址,这个地址往往就是路由器出口的I