网络地址转换(NAT)

160阅读 0评论2013-07-11 wfeng
分类:系统运维

1)的概述:
(1)转换提出的背景;
合法的IP地址资源日益短缺;
对于一个局域网有很多台主机,
不可能每台主机都有合法的IP地址
(成本过高、资源短缺),
为了使所有内部主机都可以连接因特网,
需要使用地址转换;
地址转换技术,
可以有效地‘隐藏’内部局域网中的主机,
具有一定的安全保护作用;
地址转换技术,
可以在局域网内部提供给外部FTP、WWW、Telnet服务;
(2)NAT的原理;
自动修改IP包头,
使目的地址、源地址
或两个地址在包头中被不同地址替换
(对于ip地址校验,
则在NAT处理过程中自动完成;)
(3)NAT的3种实现方式;
A、静态转换;
将内部网络的私有ip转换为公有合法的ip;
ip的对应关系是一对一的,是不变的;
也即是将私有ip转换为某个‘固定的’公有ip;
借助静态转换,
可以实现外部网络对内部网络中
某些特定设备(如web、ftp服务器)的访问;
B、动态转换;
将内部网络的私有ip转换为公有合法的ip时,
ip关系是不确定的、随机的,
所有被授权访问Internet的私有地址
可以‘随机’转换为任何指定的合法地址;
当ISP提供的合法地址‘少于’网络内部的pc数量时,
即可以采用动态地址转换的方式,
但同时只能固定数量的pc访问Internet;
C、端口‘多路复用’;
其是改变外出数据包的‘源ip和源端口’
并进行‘端口转换’;
也即‘端口地址’转换采用多路复用方式;
对于内部网络的所有主机,
可‘共享一个合法的外部ip’实现Internet的访问;
从而可以最大限度地节约ip地址资源;
同时,又可以隐藏网络内部的所有主机,
有效地避免来自Internet的攻击;
2)NAT的术语;
(1)使用‘双向NAT’,
可以处理地址交叉的情况;
对于原来两个独立的网络要合并
(在分属于不同网络的内部网络中,
A网络10.1.1.0;B网络10.1.1.0;)
如图(606)



现将A、B网络进行合并,
会存在有‘相同ip地址’10.1.1.1的情况,
也即发生了地址的交叉;
对于以上情况,
最好的解决办法就是重新规划这个合并的网络,
但是,这个过程是相当麻烦的;
对于NAT可以作为连接两个网络的过度方案,
会涉及到‘外部局部地址以及外部全局地址’之间的转换;
对于一般的NAT,
不会涉及到以上二者的转换;
对于以上两个合并的网络之间通信,
则必须进行‘双向’转换;
A网络中的内部局部地址10.1.1.1
必须转换为内部全局地址192.2.2.1才能访问外部子网;
而对于外部B网络中的外部全局地址10.1.1.1
必须转换成外部局部地址193.3.3.1,
才能够被A网络中的主机10.1.1.1识别;
这样两个网络之间才能进行通信;
会有以下4个过程:
a、A网络中的主机10.1.1.1发包
(在发包之前,会执行DNS查询,
查找B网络中的主机10.1.1.1;
与此同时,
实施NAT的路由器就进行‘偷天换日’;
因此,NAT转换发生在DNS查询之后;)
SA=10.1.1.1(内部局部),DA=193.3.3.1(外部局部)
b、实施NAT的路由器转换,发包,
SA=192.2.2.1(内部全局),DA=10.1.1.1(外部全局)
c、外部主机回应包,
SA=10.1.1.1(外部全局),DA=192.2.2.1(内部全局)
d、实施NAT的路由器转换,发包,
SA=193.3.3.1(外部局部),DA=10.1.1.1(内部局部);
(2)使用‘两个方向’上的动态NAT;
(3)会用到‘4种类型’的地址;
a、内部局部地址,
在‘内部网络’中分配给主机使用的ip;
(注意参考点)
该地址是从RFC1918(私有Internet空间地址分配)
所定义的私有地址空间中分配的,或随机选择的;
b、内部全局地址,
一个合法的ip;
由NIC或ISP所分配;
其代表一个或多个内部局部ip;
c、外部全局地址,
外部网络上主机使用的ip;
(参考点,相对于内部网络)
其也是从‘全球统一可寻址’的地址空间中分配的;
d、外部局部地址,
外部主机‘表现在’内部网络的ip;
其是从‘内部可寻址’空间中分配的,
很可能是从RFC1918中定义的保留地址空间中分配的;
简单转换条目,
将一个ip映射到另一个ip的转换条目;
扩展转换条目,
映射‘ip和端口’到另一个ip和端口的条目;

3)NAT的优缺点;
(1)NAT的优点;
节省公有合法IP地址;
处理地址交叉;
增强灵活性;
安全性;
(2)NAT的缺点;
延迟增大;
因为其要转换每个数据包头中的ip,
自然就会增加延迟;
配置和维护的复杂性;
使用实施NAT时,
无法实现‘ip端到端’的路径跟踪;
不支持某些应用;
NAT可能会使某些,
需要使用内嵌ip地址的应用不能正常工作,
因为其隐藏了端到端的ip;
对于某些直接使用ip,
而不通过合法的域名进行寻址的应用,
可能也无法与外部网络进行通信,
解决这个问题可以通过实施静态NAT来实现,
如,在内部网络中部署FTP、web服务器,
为外部网络提供服务;

4)NAT的应用;
(1)NAT支持的数据流;

支持的业务类和应用        支持在数据流中有

                                                 IP地址的业务类型         不支持的业务类型

 

任何应用数据流中

不承载源/目的IP地址的

TCP/UDP业务           ICMP                                      路由表更新

HTTP                    FTP(包括PORT PASV)        DNS区域传送

TFTP                    TCP/IP上的NetBIOS

                     (数据报、名称和会话服务)           BOOTP(类似于DHCP

Telnet                    DNSAPTR查询)                 talkntalk

NTP                      H.323/NetMeeting                         SNMP

NFS                      IP多播(只转换源地址)          Netshow

(2)转换LAN内部地址;
也即是在内部网络地址和内部全局地址之间
建立一个映射关系;
(3)‘复用’LAN的内部地址(PAT);
也即是复用内部全局地址;
通过准许对tcp连接或udp会话的‘端口进行转换’,
从而节省合法的内部全局地址;
当‘多个’不同的内部局部地址
映射到同一个内部全局地址时,
使用各个内部主机的‘tcp或udp端口号’来区分它们;
使用‘内部全局地址+端口号’来区分内部的主机,
因此内部主机的端口号可以相同;
(4)TCP‘负载均衡’;
利用NAT技术,
使用一个‘内部全局地址’(一台虚拟主机)
来代表多个同样的服务器,
就如同它们是一个服务器一样;
虚拟主机通过‘循环方式’
轮流转换为3个相同服务器的实际ip地址;
实际上,
内部有3个与之对应的服务器,
NAT以循环方式轮流在它们之间分配对话;

5)NAT配置;
NAT配置一般步骤:
1、接口IP地址配置;
2、使用访问控制列表(指定内部局部地址范围),
定义哪些内部主机能做NAT;
3、决定采用什么公有地址,
静态或地址池(通过pool指定内部全局地址范围);
4、指定‘地址转换映射’;
5、在内部和外部端口上启用NAT;
(1)静态NAT配置;
在内部本地和内部合法地址之间,建立静态地址转换,
Router(config)#
ip nat inside source static 192.168.100.2 61.159.62.130
Router(config)#
ip nat inside source static 192.168.100.3 61.159.62.131
在内部和外部端口上启用NAT,
Router(config)#interface serial 0/0
(连接外部网络)
Router(config-if)#ip nat outside
Router(config)#interface fastethernet 0/0
(连接内网)
Router(config-if)#ip nat inside
(2)动态NAT配置;
定义内部网络中允许访问外部的访问控制列表,
Router(config)#
access-list 1 permit 172.168.100.0 0.0.0.255
定义合法IP地址池,
Router(config)#
ip nat pool test0 61.159.62.130 61.159.62.190 network 255.255.255.192   
指定网络地址转换映射,
Router(config)#ip nat inside source list 1 pool test0
(3)PAT配置;
定义内部网络中允许访问外部的访问控制列表,
Router(config)#access-list 1 permit 10.1.1.0 0.0.0.255
定义合法IP地址池,
Router(config)#
ip nat pool onlyone ‘61.159.62.130 61.159.62.130’ netmask 255.255.255.248
(此内部全局地址并非路由器外部接口的ip,为自定义)
指定网络地址转换映射,
Router(config)#
ip nat inside source list 1 pool onlyone ‘overload’
有时,只有一个外部ip地址,
这个地址已经被路由器的外部接口使用,
在这种情况下
地址转换过程中,
也可以直接‘使用接口地址’作为转换后的源地址;
也即将路由器外部接口地址作为内部全局地址;

定义内部网络中允许访问外部的访问控制列表,
Router(config)#access-list 1 permit 10.1.1.0 0.0.0.255
定义合法IP地址池,
直接使用‘路由器的接口地址’,不用定义地址池;
指定网络地址转换映射
Router(config)#
ip nat inside source list 1 ‘interface serial0/0’ overload
(当路由器外部接口的ip为动态时,
直接指定接口地址;)
(4)负载均衡配置;
为‘虚拟主机’定义一个标准的IP访问控制列表,
Router(config)#access-list 2 permit 10.1.1.127
(指定一个内部全局地址)
给‘真实主机’(服务器)定义一个NAT地址集,
Router(config)#
ip nat pool real-host 10.1.1.1 10.1.1.3 prefix-length 24 type ‘rotary’
(rotary,表示该地址段为循环型)
设置访问控制列表和NAT地址集之间的映射,
Router(config)#
ip nat ‘inside destination’ list 2 pool real-host
6)NAT检查与排错;
常见问题:
动态地址池中是否有正确的范围的地址;
动态地址池中是否有重复的地址;
静态映射的地址,
与动态地址池中的地址之间是否有重复;
访问列表是否指明了要转换的正确地址,
是否漏掉一些地址,
是否包括了一些不该包括的地址;
是否指明了正确的内部和外部接口;
不对称路由问题
(指明inside port以及outside port);
(1)测试联通性验证NAT配置,
使用命令:
show ip nat translations,
查看当前存在的转换;
show ip nat statistics,
查看nat的统计信息,
显示nat配置的总结和激活类型的条目,
现有映射选中的次数、
未选中的次数以及超时的转换;
在‘没有配置地址复用’的情况下,
简单转换条目的超时时间为24小时;
若配置了pat,默认的nat超时值:
udp,5分钟;
dns,1分钟;
tcp,24小时;
结束和复位值(tcp连接的结束和复位包),1分钟;
(2)从理论上说,
nat表中的条目是没有数量限制的,
但实际上,
内存和cpu或可用地址范围或端口空间对条目都有限制,
可以使用命令ip nat translation max-entries来自定义
条目的数量;
(3)清除NAT表的条目;
clear ip nat translation *,
清除NAT转换表中的‘所有条目’;
clear ip nat translation
inside local-ip global-ip ,
清除包含‘内部转换’的简单转换条目;
clear ip nat translation
outside local-ip global-ip,
清除包含‘外部转换’的简单转换条目;
(4)监控PAT;
使用命令
show ip nat translations [verbose]
来进行监控;

上一篇:光纤 网络中传输介质
下一篇:Cisco CBCA 小解