上传CCNA 学习指南 网络地址转换NAT协议详解.docx
《上传CCNA 学习指南 网络地址转换NAT协议详解.docx》由会员分享,可在线阅读,更多相关《上传CCNA 学习指南 网络地址转换NAT协议详解.docx(27页珍藏版)》请在冰点文库上搜索。
上传CCNA学习指南网络地址转换NAT协议详解
CCNA学习指南-640-02
第11章网络地址转换
在本章中,我打算简要介绍网络地址转换(NetworkAddressTranslation,NAT)、动态网络地址转换和端口地址转换(PortAddressTranslation,PAT),也称为网络地址转换复用。
当然,我将使用本书中已经用过的网络结构来举例说明网络地址转换,接着以使用SDM结束本章,你将看到使用SDM配置NAT是非常容易的。
在开始本章之前,阅读第10章将很有帮助,因为在我们的NAT配置中需要
使用访问列表。
CCNA学习指南-640-802
何时使用NAT
类似于无类域间路由选择(ClasslessInterDomainRouting,CIDR),NAT的最初目的是允许把私有IP地址映射到外部网络的合法IP地址,以减缓可用IP地址空间的消耗。
从那时开始发现,在移植和合并网络、服务器负载共享以及创建“虚拟服务器”中,NAT是一个很有用的工具。
因此本章中,我打算描述NAT的基本功能
和NAT的常用术语。
有些时候,NAT真的减少了网络环境对公网IP地址数量的需要。
当两个具有相同内网地址配置的公司网络合并时,NAT必不可少。
当一个组织更换它的互联网服务提供商(InternetServiceProvider,ISP),而网络管理员不希望更改内网配置方案时,NAT同样很有用处。
以下是适于使用NAT的各种情况:
Ø你需要连接到因特网,但是你的主机没有公网IP地址。
Ø你更换了一个新的ISP,需要重新组织网络
Ø你需要合并两个具有相同网络地址的内网。
NAT一般应用在边界路由器中。
图11.1说明了NAT的应用位置。
现在你可能认为:
“NAT真的很棒。
它是最帅、最好的网络配件,我要拥有
它。
”好的,等一会儿。
在NAT使用中有一些真正的障碍。
哦—不要搞错我的意思:
有时我真的可以挽救你,但是有一些悲观的方面你必须要知道。
关于使用NAT的优缺点,请对照表11.1。
图11.1配置NAT的地方
CCNA学习指南-640-802
表11.1实施NAT的优点和缺点
优点
缺点
节约合法注册地址减少地址重叠出现增加连接因特网的灵活性
网络变更时避免地址的重新分配
地址转换产生交换延迟无法进行端到端的IP跟踪
某些应用无法在实施NAT的网络中运行
说明:
NAT的最显著优点是节约你的合法注册地址。
这也是我们为什么没有
用完IPv4地址的原因—想一想。
CCNA学习指南-640-802
网络地址类型转换
在这一节,我打算和你一起学习三种类型的NAT。
静态NAT这种类型的NAT是为了在本地和全球地址间允许一对一映射而设计的。
需要记住的是,静态NAT需要网络中的每台主机都拥有一个真实的因特网IP地址。
动态NAT这种类型的NAT可以实现映射一个未注册IP地址到注册IP地址池中的一个注册IP地址。
你不必要像使用静态NAT那样,在路由器上静态映射内部到外部的地址,但是你必须保证拥有足够的真实IP,保证每个在因特网中收发包的用户都有真实的IP可用。
复用这是最流行的NAT配置类型。
复用实际上是动态NAT的一种形式,
它映射多个未注册的IP地址到单独一个注册的IP地址—一多对—通过使用不同的端口。
现在,这种方式为什么这么特别?
好的,因为它也被称为端口地址映射
(PAT)。
通过使用PAT(NAT复用),可实现上千个用户仅通过一个真实的全球IP地址连接到因特网—多么聪明,不是吗?
认真地讲,使用NAT复用是我们至今在互联网上没有使用完合法IP地址的真实原囚。
真的—我不是在开玩笑。
说明:
别担心,在本章的后面将展示如何配臵这三种类型的NAT。
CCNA学习指南-640-802
NAT命名
在NAT中,使用的地址的名字描述起来很简单。
在NAT转换后使用的地址叫做全局地址。
它们通常是使用在因特网上的公网地址,但是请记住,如果你不进入因特网,就不需要公网地址。
在NAT转换之前的地址叫做本地地址。
因此,内部本地地址实际上是尝试连接到因特网的发送端主机的私有地址,而外部本地地址则是目标主机的地址。
目标主机地址通常是一个公网地址(网页地址、E-mail服务器,等等),并且也是数据包如何开始其旅程的地方。
在转换之后,内部本地地址叫做内部全局地址,而且外部全局地址变为目标主机的名字。
查看表11.2,表中列出了所有这些术语,让你对NAT中使用的各种名字有一个更清晰的认识。
表11.2NAT术语
名字
意义
内部本地外部本地内部全局
外部全局
转换之前内部源地址的名字转换之前目标主机的名字转换之后内部主机的名字
转换之后外部目标主机的名字
CCNA学习指南-640-802
NAT工作原理
好的,现在我们看一下整个NAT的工作过程。
图11.2描述了NAT的基本转换。
在图11.2展示的例子中,主机10.1.1.1发送一个外出数据包到配置了NAT的边界路由器。
边界路由器识别出此IP地址为内部本地IP地址。
目标是外部网络,它要转换内部本地IP地址,并把转换结果记录到NAT表中。
图11.2基本的NAT转换这个数据包使用转换后新的源地址被发送到外部接口。
外部主机返回此包到
目标主机,NAT路由器使用NAT表转换内部全局IP地址为内部本地IP地址。
整个过程就是这么简单。
让我们看一个使用复用或被称为端口地址转换的比较复杂的配置。
我将使用图11.3示范PAT如何工作。
使用复用,全部的内部主机被转换为一个单独的IP地址,因此叫做复用。
再次强调,我们没有使用完因特网上可用IP地址的原因就是因为复用(PAT)。
再看一次图11.3的NAT表。
除了内部本地IP地址和外部全局IP地址外,
我们用到了端口号。
这些端口号帮助路由器识别哪一台主机接收返回的流量。
在此例中,端口号被用在传输层,用于识别本地主机。
如果我们必须要使用
IP地址来识别源主机,那将被称为静态NAT,而且我们将会使用完所有可用IP
地址。
PAT允许我们使用传输层来识别主机,同时允许多达65000台主机(理论
CCNA学习指南-640-802
上)使用一个真实的IP。
图11.3NAT复用示例(PAT)
静态NAT配置
让我们来看一个简单的基本静态NAT配置:
ipnatinsidesourcestatic10.1.1.1170.46.2.2
!
interfaceEthernet0
ipaddress10.1.1.10255.255.255.0
ipnatinside
!
interfaceSerial0
ipaddress170.46.2.1255.255.255.0
ipnatoutside
!
在上面的路由器输出中,ipnatinsidesource命令识别哪一个IP地址将被转换。
在这个配置例子中,ipnatinsidesource命令在内部本地IP地址10.1.1.1与外部全局IP地址170.46.2.2之间配置了一个静态转换。
在配置中继续向下看,我们会看到每个接口下方都有ipnat命令。
命令ipnatinside识别接口为内部接口,命令ipnatoutside识别接口为外部接口。
当你回过去看ipnatinsidesource命令,会看到这个命令把内部接口作为源地址或转换的
CCNA学习指南-640-802
开始点。
这个命令也可能这样使用—ipnatoutsidesource—把你指定的接口作为
外部接口,并把这个外部接口作为源地址或是转换的开始点。
动态NAT配置
动态NAT意味着我们可以为内部的用户组提供真实的IP地址池。
我们不使用端口号,因此我们必须为每个尝试连接外网的用户提供真实的IP地址。
下面是一个动态NAT配置的示例输出:
ipnatpooltodd170.168.2.2170.168.2.254netmask255.255.255.0
ipnatinsidesourcelist1pooltodd
!
interfaceEthernet0
ipaddress10.1.1.10255.255.255.0
ipnatinside
!
interfaceSerial0
ipaddress170.168.2.1255.255.255.0
ipnatoutside
!
access-list1permit10.1.1.00.0.0.255
!
命令ipnatinsidesourcelist1pooltodd告诉路由器把匹配access-list的IP地址转换为名字叫todd的IPNAT地址池中的一个地址。
在此情况中,访问列表并不像以往那样,为了安全原因通过允许或拒绝来过滤流量。
在这里,访问列表被用来选择或指定触发流量。
当触发流量与访问列表匹配时,触发流量被放入NAT过程进行转换。
这是访问列表常见的使用方法,访问列表并不是始终只在接口上做阻塞流量这种枯燥的工作。
命令ipnatpooltodd170.168.2.2170.168.2.254创建了一个地址池,这个地址池为那些需要NAT的主机提供地址。
PAT(复用)配置
最后一个示例展示如何配置内部全局地址复用。
这是今天我们使用的典型的
NAT。
现在很少使用静态或动态NAT,除非我们静态地映射一个服务器。
CCNA学习指南-640-802
下面是一个PAT配置的示例输出:
ipnatpoolglobalnet170.168.2.1170.168.2.1
netmask255.255.255.0
ipnatinsidesourcelist1poolglobalnetoverload
!
interfaceEthernet0/0
ipaddress10.1.1.10255.255.255.0
ipnatinside
!
interfaceSerial0/0
ipaddress170.168.2.1255.255.255.0
ipnatoutside
!
access-list1permit10.1.1.00.0.0.255
PAT的好处是,存在于这种配置和前面的动态NAT配置间的仅有差异是IP地址池被缩减为一个IP地址,并且在ipnatinsidesource命令之后包含overload命令。
注意,在示例中被用做地址池的那个IP地址是外部接口IP地址。
在家里或是一个小的办公室里,你的ISP仅为你提供一个ip,配置NAT复用真的很棒。
然而,你可以使用如170.168.2.2这样的另外一个地址,如果地址是可用的。
这在拥有很多内部用户以至于必须在外部接口有一个以上的复用IP地址的大规模网络配置中非常有用。
NAT的简单验证
一旦你配置一种需要类型的NAT,典型的是复用(PAT),你就要有能力对配置进行验证。
为了查看基本IP地址转换信息,使用下面的命令:
Router#showipnattranslation
当查看IPNAT转换信息的时候,你将看到许多转换是从相同的主机到相同的目的主机之间的转换。
这是典型的到Web的多个连接。
另外,可以使用debugipnat命令验证NAT配置。
输出结果中的每个调试行将显示发送端地址、转换、目的地址:
CCNA学习指南-640-802
Router#debugipnat
如何从转换表中清除NAT条目?
使用clearipnattranslation命令。
为了从
NAT表中清除所有的条目,在命令的结尾使用星号(*)。
CCNA学习指南-640-802
测试并诊断NAT故障
Cisco的NAT给你一些重要的能力—并且不需要费太多的力气,因为配置真的比较简单。
但是我们都知道,没有什么事是完美的,因此为了防止出现错误,你需要对下列可能的障碍做出判断:
Ø检查动态地址池—它们是否由正确的地址范围组成
Ø检查动态地址池是否有重叠
Ø检查被用来静态映射的地址与动态地址池中的地址是否重叠
Ø确定你的访问列表指定正确的转换地址
Ø确信列表中该出现的地址没有遗漏,不该出现的地址没有被加入
Ø确信内部和外部接口都已经恰当地界定
需要记住的一点是,在配置新的NAT时,最常见的问题和NAT没有特别的关系—它通常涉及到路由选择的问题。
因此,确信那是因为你正在改变包中的源和目的地址,路由器在转换后才知道如何处理新的地址!
想像NAT表可以控制没有限制数量的映射。
实际上,无论如何,这涉及到类似内存和CPU或是可用地址或端口的边界设置等,实事上,正是这些因素导致在条目数量上有一些限制。
每个NAT映射占用大约160字节的内存,并且有时候—但是不是很经常—条目的数景由于性能或是因为策略约束而必须被限制。
对于此类情况,需要使用ipnattranslationmax-entries命令来帮助。
另一个便于用来排除故障的命令是showipnatstatistics。
执行此命令你会得
到NAT配置的汇总情况,并且对活动的转换类型进行计数。
同时,会把计数结果与存在的映射匹配,对于没有的—后来会为它尝试创建一个映射。
这个命令也会显示超过期限的转换。
如果你想检查动态地址池,包括它们的类型、可用地址的总数、已经分配了多少地址和失败了多少,加上已经转换的个数,可使用pool(refcount)命令。
你知道可以手工从NAT表中清除动态NAT条目吗?
这样做非常方便,如果
你需要去除一个特定的无用条目,就不用坐着等待其过期。
手工清除在清除整个
NAT表重新配置地址池的时候非常有用。
你同样也需要知道,如果地址池中的地址已经被映射,CiscoIOS软件便不
允许你更改或删除NAT表中的地址池。
命令clearipnattranslations用来清除条
CCNA学习指南-640-802
目—经由全局或本地地址,或是通过TCP和UDP转换(包括端口)指定一个单独
条目,或者输入星号(*)删除整个条目表。
但是要知道,如果你这么做了,仅动态条目被删除,因为此命令不删除静态条目。
哦,还有更多—对任何内部设备有响应的任何外部设备的数据包目的地址就是通常所说的IG地址。
这意味必须在NAT表中保存初始化映射,这样,所有从特定连接到达的数据包才能一直被转换。
在NAT表中保存条目也将减少相同的机器发送数据包到相同的外部目标时进行重复查找的次数。
这就是我要表达的意思:
当一个条目第一次被放入NAT表中,计时器开始计时,计时器持续的时间就是转换的有效时间。
每次包经过路由器被特定条目转换后,计时器被重置。
如果计时器计时期满,条目将从NAT表中删除,并且动态分配的地址将回到地址池中等待再次分配。
Cisco默认转换超时为86400秒(24小时),但是可以使用ipnattranslationtimeout命令对此进行更改。
在我们继续介绍配置内容之前,实际使用一下刚刚讲到的命令,通过一些
NAT示例看看你是否可以根据需求规划配置。
正式开始,观察图11.4并且问自己两个问题:
此例中在哪里实施NAT,配置何种类型的NAT?
图11.4NAT示例
在图11.4中,NAT配置被放在公司路由器上,并且使用动态NAT复用(PAT)
配置。
在这个NAT示例中,使用了何种类型NAT?
ipnatpooltodd-nat170.168.10.10170.168.10.20netmask255.255.255.0
上面的命令使用动态NAT。
命令中pool给出了答案,另外在地址池中有不止一个地址,也意味着我们可能不使用PAT配置。
在下一个NAT示例中,我们在图11.5中观察,测试是否可以规划出所需的配置。
CCNA学习指南-640-802
图11.5的示例中展示了需要配置NAT的边界路由器,并且允许使用6个公
网IP地址,192.1.2.109~192.1.2.114。
然而,在内部网络中,我们拥有63台主机,使用的私有地址为192.168.10.65~192.168.10.126。
在边界路由器上应该使用什么NAT配置呢?
图11.5另一个NAT示例这里两个不同的答案都可以工作,但是下面的将是我的第一选择:
ipnatpoolTodd192.1.2.109192.1.2.109netmask255.255.255.248
access-list1permit192.168.10.640.0.0.63
ipnatinsidesourcelist1poolToddoverload
命令ipnatpoolTodd192.1.2.109192.1.2.109netmask255.255.255.248设置地址池的名字为Todd,并且为NAT使用地址192.1.2.109创建了一个动态地址池。
为了替换netmask命令,你可以使用prefix-length29语句(我知道你在想什么,但是不行,不能在路由器的接口上也这么做)。
第二个答案将与第一个具有相同的结果,也仅使用192.1.2.109作为你的内部全局地址,但是你可以这么输入并使它工作:
ipnatpoolTodd192.1.2.109192.1.2.114netmask255.255.255.248。
这么做是在浪费,因为第二个到第六个地址只有在TCP端口号冲突的情况下才会被使用。
如果你不理解设置access-list的第二行命令,请查看第10章“安全”。
命令ipnatinsidesourcelist1poolToddoverload通过overload命令使用端口地址转换(PAT)设置了动态地址池。
但是要根据适当的接口确定添加ipnatinside和ipnatoutside语句。
CCNA学习指南-640-802
在网络中配置NAT
好的,现在继续开始配置,并且使用64.1.1.4/30网络连接Corp路由器和R3路由器,使用64.1.l.8/30网络把LANF0/0连接至R3路由器。
在NAT开始工作后,通过本章,你将学会如何使用验证命令。
网络如图11.6所示,在表11.3中列出了正在使用的内部本地地址。
图11.6用新地址的互联网络
我知道—图11.6展示了我们曾使用的相同的网络,但是这里有一些不同。
在Corp路由器和R3路由器之间的连接现在使用了全局PAT地址。
它们不能通信,因为其他的Corp连接使用私有IP地址。
(在真实的环境中,ISP将会阻塞这些私
有IP地址,对吗?
所以让我们使它们工作吧!
)记住,当使用NAT时,我们称
它们为“内部本地”,意思是在转换之前,我们的ISP阻塞私有IP地址范围。
我们将怎么办?
我们首先需要在Corp路由器上配置NAT,让我们开始吧。
CCNA学习指南-640-802
表11.3IP网络中的网络地址
路由器
网络地址
接口
地址
CorpCorpCorpCorpCorpCorpR1
R1
R1
R1
R1
R2
R2
R2
R2
R3
R3
R3
R3
871W
871W
871W
1242AP
1242AP
10.1.1.0
10.1.2.0
10.1.3.0
10.1.4.0
64.1.1.4/30
10.1.2.0
10.1.3.0
10.1.6.0
10.1.7.0
10.1.4.0
10.1.8.0
10.1.9.0
64.1.1.4/30
64.1.1.8/30
10.1.11
10.1.11.0
10.1.12.0
10.1.1.0
F0/1
S0/0/0
S0/0/1(DCE)S0/1/0
S0/2/0
S0/0/0(DCE)S0/0/1
F0/0
F0/1
S0/2/0(DCE)D0/3/0
F0/0
S0/0/1(DCE)F0/0
F0/1
Vlan1
Dot11radio0
BVI1
10.1.1.1
10.1.2.1
10.1.3.1
10.1.4.1
64.1.1.5/30
10.1.2.2
10.1.3.2
10.1.6.1
10.1.7.1
10.1.4.2
10.1.8.1
10.1.9.1
64.1.1.6/30
64.1.1.9/30
10.1.11.1
10.1.11.2
10.1.12.1
10.1.1.2
现在我们都知道,我们需要所有连接到Corp路由器的网络可以和所有连接
到使用64.1.1.5/30新全局地址的R3路由器的网络进行通信,对吗?
你点头认为是—好的!
我们开始吧:
Corp#configt
Corp(config)#ipnatpoolTodd64.1.1.564.1.1.5net255.255.255.252
Corp(config)#access-list1permit10.1.0.00.0.255.255
Corp(config)#ipnatinsidesourcelist1poolToddoverload
在添加接口配置之前,注意我使用Corp路由器的外部接口的IP地址64.1.1.5
作为地址池的开始和结束地址。
我这么做是因为,使用PAT时它可以很好地工
CCNA学习指南-640-802
作。
无论如何,不要忘记