您的位置:首页 > 其它

NAT技术详解及配置实例

2007-02-26 22:17 447 查看
NAT作为一种减轻IPv4地址空间耗尽速度的方法,最早出现在Cisco IOS 11.2版本中。

[align=left]为什么要使用NAT[/align]
[align=left]1 内网中主机过多,没有足够的合法IP地址可用。[/align]
[align=left]2 当ISP发生变化时,使用NAT技术避免了IP地址的重新编址。[/align]
[align=left]3 当两个合并的网络中出现了重复地址的时候。[/align]
[align=left]4 利用NAT来解决TCP的负载均衡问题。[/align]
[align=left]5 隐藏内部网络,增强安全性。[/align]
[align=left] [/align]
[align=left]NAT就是将内网中使用的私有地址转换成可在Internet上进行路由的合法地址的技术。[/align]
[align=left]私有地址范围:[/align]
[align=left]10.0.0.0 ~ 10.255.255.255[/align]
[align=left]172.16.0.0 ~ 172..31.255.255[/align]
[align=left]192.168.0.0 ~ 192.168.255.255[/align]
[align=left] [/align]
[align=left]NAT技术主要分为NAT和PAT。[/align]
[align=left]NAT是从内部本地地址到内部全局地址的一对一转换。[/align]
[align=left]PAT是从多个内部本地地址到内部全局地址的多对一转换。通过端口号确定其多个内部主机的唯一性。[/align]
[align=left] [/align]
[align=left]NAT术语[/align]
[align=left]Inside network:需要翻译成外部地址的内部网络。[/align]
[align=left]Outside network:使用合法地址进行通信的外部网络。[/align]
[align=left]Local address:内部网络使用的地址。[/align]
[align=left]Global address:外部网络使用的地址。[/align]
[align=left]Inside local address:内部本地地址。数据在内部网络使用的地址,一般为private ip address。[/align]
[align=left]Inside global address:内部全局地址。数据为了到达外部网络,用来代表inside local address的地址,一般为ISP提供的合法地址。[/align]
[align=left]Outside local address:外部本地地址,不必是合法地址。当外部网络数据到达内部网络,外部网络中的主机IP地址与内部网络中的主机处在同一网段时,为防止内部主机误认外部主机与自己在同一网段而广播ARP请求,造成无法通信,将外部主机的地址转换成外部本地地址之后再与内部主机进行通信。[/align]
[align=left]Outside global address:数据在外部网络使用的地址,是个合法地址。[/align]
[align=left]Simple translation entry:把一个IP地址映射到另外一个地址上的一对一的翻译方式。[/align]
[align=left]Extended translation entry:把IP地址和端口(port)的组合翻译成另外一个地址和端口的组合。[/align]
[align=left]Static address translation:静态地址翻译,把一个local对应到一个global上去。[/align]
[align=left]Dynamic address translation:动态翻译,local和global池(pool)建立动态对应关系。[/align]
[align=left]Port address translation(PAT):通过使用地址和端口的结合来达到多个local对应一个global的状态。端口号用来确定每个local的唯一性。这样的技术也叫超载(overloading)。[/align]
[align=left] [/align]
[align=left]NAT的优缺点[/align]
[align=left]优点:[/align]
[align=left]1 极大的节省了合法的IP地址。[/align]
[align=left]2 能够处理地址重复情况,避免了地址的重新编号,增加了编址的灵活性。[/align]
[align=left]3 隐藏了内部网络地址,增强了安全性。[/align]
[align=left]4 可以使多个使用TCP负载特性的服务器之间实现基本的数据包负载均衡。[/align]
[align=left]缺点:[/align]
[align=left]1 由于NAT要在边界路由器上进行地址的转换,增大了传输的延迟。[/align]
[align=left]2 由于NAT改动了IP地址,失去了跟踪端到端IP流量的能力。当出现恶意流量时,会使故障排除和流量跟踪变的更加棘手。[/align]
[align=left]3 不支持一些特定的应用程序。如早期版本的MSN。[/align]
[align=left]4 增大了资源开销。处理NAT进程增加了CPU的负荷,并需要更多内存来存储NAT表项。[/align]
[align=left] [/align]
[align=left]配置NAT[/align]
[align=left]inside & outside[/align]
[align=left]每个包含了NAT进程的接口必须被指定为内部接口或外部接口,但不能被同时指定为这两个接口。在路由器上,必须至少有一个接口被配置成内部接口,一个接口被配置成外部接口。这样路由器就知道怎样在接口上处理入站和出站流量了。[/align]
[align=left]D-Lab(config)#int e0 //进入接口模式[/align]
[align=left]D-Lab(config-if)#ip nat inside //指定inside接口出站[/align]
[align=left]D-Lab(config-if)#int s0[/align]
[align=left]D-Lab(config-if)#ip nat outside //指定outside接口入站[/align]
[align=left] [/align]
[align=left]静态NAT[/align]
[align=left]inside|outside local和inside|outside global的一对一映射[/align]
[align=left]D-Lab(config)#ip nat {inside|outside} source static <inside local> < inside global>[/align]
[align=left]这样就在NAT表中创建了一个永久表项。[/align]
[align=left]配置示例:[/align]
[align=left]D-Lab#config t[/align]
[align=left]D-Lab(config)#int e0[/align]
[align=left]D-Lab(config-if)#ip nat inside[/align]
[align=left]D-Lab(config-if)#int s0[/align]
[align=left]D-Lab(config-if)#ip nat outside[/align]
[align=left]D-Lab(config)#ip nat inside source static 192.168.1.1 210.83.202.1[/align]
[align=left]D-Lab(config)#ip nat outside source static 210.83.202.2 192.168.2.3[/align]
[align=left] [/align]
[align=left]静态PAT[/align]
[align=left]D-Lab(config)#ip nat {inside|outside} source static <protocol> <inside local> < port> < inside global> < port>[/align]
[align=left]配置示例:[/align]
[align=left]D-Lab(config)#ip nat inside source static tcp 10.1.1.1 80 214.118.21.121 80[/align]
[align=left] [/align]
[align=left]动态NAT[/align]
[align=left]动态NAT用来将inside local快速映射到inside global上。这些inside local放在可用的IP地址池中。同样,必须给参与NAT进程的路由器接口分配IP地址。[/align]
[align=left]当内部网络主机要与Internet上的主机进行通信时,NAT边界路由器会从标记为“NAT内部”的接口接收数据包。[/align]
[align=left]D-Lab(config)#ip nat pool <pool-name> <start-ip> <end-ip> netmask xxxx[/align]
[align=left]D-Lab(config)#ip nat pool <pool-name> <start-ip> <end-ip> prefix-length xx //掩码长度[/align]
[align=left]例:[/align]
[align=left]D-Lab(config)#ip nat pool dyn-nat-pool 211.10.121.1 211.10.121.254 netmask 255.255.255.0[/align]
[align=left]D-Lab(config)#ip nat pool dyn-nat-pool 211.10.121.1 211.10.121.254 prefix-length 24[/align]
[align=left]配置示例:[/align]
[align=left]D-Lab(config)#inter e0 [/align]
[align=left]D-Lab(config-if)#ip add 192.168.1.1 255.255.255.0 [/align]
[align=left]D-Lab(config-if)#ip nat inside //指定内部接口[/align]
[align=left]D-Lab(config-if)#inter s0[/align]
[align=left]D-Lab(config-if)#ip add 210.83.202.1 255.255.255.192[/align]
[align=left]D-Lab(config-if)#ip nat outside //指定外部接口[/align]
[align=left]D-Lab(config-if)#exit [/align]
[align=left]D-Lab(config)#access-list 1 permit 192.168.1.0 0.0.0.255 //标记inside local范围[/align]
[align=left]D-Lab(config)#ip nat pool in-out210.83.202.2 210.83.202.8 prefix 24 //设置inside global地址池 [/align]
[align=left]![/align]
[align=left]D-Lab(config)#ip nat inside source list 1 pool in-out //启用inside源地址翻译,把标记的inside local范围与inside global池关联起来[/align]
[align=left] [/align]
[align=left]动态PAT(多对一映射)[/align]
[align=left]路由器为每个转换表项添加第四层协议和端口信息[/align]
[align=left]D-Lab(config)#ip nat inside source list 1 pool in-out overload[/align]
[align=left]如果不知道出站IP地址,可在命令中指定出站接口[/align]
[align=left]D-Lab(config)#ip nat inside source list 1 e0 overload[/align]
[align=left]//如果接口shut或者接口没有设置IP地址的话,NAT不会生效[/align]
[align=left]配置实例:[/align]
[align=left]D-Lab(config)#inter e0[/align]
[align=left]D-Lab(config-if)#ip add 192.168.1.1 255.255.255.0[/align]
[align=left]D-Lab(config-if)#ip nat inside[/align]
[align=left]D-Lab(config)#inter s0[/align]
[align=left]D-Lab(config-if)#ip add 210.83.202.1 255.255.255.192[/align]
[align=left]D-Lab(config-if)#ip nat outside[/align]
[align=left]![/align]
[align=left]![/align]
[align=left]![/align]
[align=left]D-Lab(config)#ip nat pool test210.83.202.2 210.83.202.8 prefix 24[/align]
[align=left]![/align]
[align=left]D-Lab(config)#ip nat inside source list 9 pool test overload[/align]
[align=left]D-Lab(config)#access-list 9 permit 192.168.1.0 0.0.0.255[/align]
[align=left] [/align]
[align=left]为重复地址配置NAT[/align]
[align=left]D-Lab(config)#ip nat pool in-out211.121.1.1 211.121.1.254 prefix-length 24 //设置local global池[/align]
[align=left]D-Lab(config)#ip nat pool out-in10.1.2.1 10.1.2.254 prefix-length 24 //设置outside local池[/align]
[align=left]D-Lab(config)#ip nat inside source list 1 pool in-out //启用inside源地址翻译,把标记的inside local范围与inside global池关联起来[/align]
[align=left]D-Lab(config)#ip nat inside source list 1 pool out-in //将在标记的inside local范围里的outside global转换成outside local池里的地址[/align]
[align=left]D-Lab(config)#int fa0/0[/align]
[align=left]D-Lab(config-if)#ip nat inside //指定出站接口[/align]
[align=left]D-Lab(config-if)#int s1/1[/align]
[align=left]D-Lab(config-if)#ip nat outside //指定入站接口[/align]
[align=left]D-Lab(config-if)#exit[/align]
[align=left]D-Lab(config)#access-list 1 permit 10.1.1.0 0.0.0.255 //标记inside local地址范围[/align]
[align=left] [/align]
[align=left]更灵活的地址池的配置:[/align]
[align=left]ip nat pool <name> { netmask <mask> | prefix-length <length> } [ type { rotary } ] [/align]
[align=left]这样可以允许定义不连续地址池,接下来定义地址空间:[/align]
[align=left]address <start> <end>[/align]
[align=left]例:[/align]
[align=left]D-Lab(config)#ip nat pool D-lab prefix-length 24 [/align]
[align=left]D-Lab(config-ipnat-pool)#address 11.69.73.12 11.69.73.14 [/align]
[align=left]D-Lab(config-ipnat-pool)#address 11.69.73.18 11.69.73.244 [/align]
[align=left]这样就定义了一个11.69.73.12 ~ 11.69.73.14和11.69.73.18~11.69.73.244的地址池[/align]
[align=left] [/align]
[align=left]NAT关联routemap的配置:[/align]
[align=left]ip nat inside source route-map <name> pool <name>[/align]
[align=left]例:[/align]
[align=left]ip nat pool d-1 173.26.232.1 173.26.232.254 prefix-length 24 [/align]
[align=left]ip nat pool d-2 24.10.12.1 24.10.12.254 prefix-length 24 [/align]
[align=left]ip nat inside source route-map d1-map pool d-1[/align]
[align=left]ip nat inside source route-map d2-map pool d-2[/align]
[align=left]! [/align]
[align=left]interface Serial0/0 [/align]
[align=left]ip nat outside [/align]
[align=left]! [/align]
[align=left]interface Serial0/1 [/align]
[align=left]ip nat outside [/align]
[align=left]! [/align]
[align=left]route-map d1-map permit 10 [/align]
[align=left]match ip address 1 [/align]
[align=left]match interface Serial0/0 [/align]
[align=left]! [/align]
[align=left]route-map d2-map permit 10 [/align]
[align=left]match ip address 1 [/align]
[align=left]match interface Serial0/1[/align]
[align=left] [/align]
[align=left]配置NAT超时设置:[/align]
[align=left]ip nat translation timeout <seconds> //特权模式下[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]NAT配置的验证和故障排除[/align]
[align=left]sh ip nat translations //查看生效的NAT表项[/align]
[align=left]sh ip nat translations verbose //查看生效的NAT表项的详细信息[/align]
[align=left]sh ip nat statistics //显示NAT的统计数字和配置信息[/align]
[align=left] [/align]
[align=left]clear ip nat translation * //清除所有NAT表项[/align]
[align=left]clear ip nat translation inside <global-ip> //清除指定的内部NAT表项 : [/align]
[align=left]clear ip nat translation <protocol> <global-ip> <local-ip> <global-port> <local-port> //清除指定的NAT表项[/align]
[align=left] [/align]
[align=left]debug ip nat [ <list> ] [ detailed ] //调试NAT进程[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: