总结NAT.docx

上传人:b****3 文档编号:24899896 上传时间:2023-06-02 格式:DOCX 页数:21 大小:53.48KB
下载 相关 举报
总结NAT.docx_第1页
第1页 / 共21页
总结NAT.docx_第2页
第2页 / 共21页
总结NAT.docx_第3页
第3页 / 共21页
总结NAT.docx_第4页
第4页 / 共21页
总结NAT.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

总结NAT.docx

《总结NAT.docx》由会员分享,可在线阅读,更多相关《总结NAT.docx(21页珍藏版)》请在冰豆网上搜索。

总结NAT.docx

总结NAT

NAT总结

为什么要使用NAT?

RFC1631中对NAT进行了描述。

NAT最初的目的是通过允许使用较少的公有IP地址代表多数专用的IP地址,以减缓可用IP地址的枯竭速度。

私网IP地址是不能够在公共网络里进行路由的。

NAT技术让使用私有IP的私有网络能够连接到公共网络,如INTERNET。

通常在位于末节区域(内网)和公共网络(外网)之间的路由器上配置NAT。

将分组发送给外网之前,NAT将内部本地地址转换为全局唯一的IP地址。

几对NAT的重要概念和术语:

1.insidedevice/outsidedevice:

内部设备/外部设备

2.local/global:

私网/公网

3.ipnatinside/ipnatoutside:

内口/外口

 

下图便于大家理解这些概念:

Ipnatoutside

Ipnatinside

4.IL,insidelocal:

分配给内部设备的地址,这些地址不会向外公布。

5.IG,insideglobal:

通过这个地址,让外部设备可以知道内部设备。

6.OL,outsidelocal:

通过这个地址,让内部设备可以知道外部设备。

7.OG,outsideglobal:

分配给外部设备的地址,这些地址不会对内公布。

NAT的原理:

(以动态转换内部源地址为例:

ipnatinsidesourcelist1poolDY)

当从内部发起一个向外部的连接时,NAT路由器通过查看路由表,知道这是一个以内部为源去往外部的连接,并发现源地址符合访问列表的设定,于是NAT从pool中取出一个IG地址,对该IL地址进行翻译,将分组的源IL地址改为IG地址后继续转发,并将翻译条目写入NAT表。

外部目标设备再收到该分组后,以IG地址为目标地址进行应答。

NAT收到应答分组后,查NAT表将应答分组的目标地址(刚刚的IG地址)翻译成IL地址然后转发往发起连接的那个主机。

NAT的基本命令:

1.配置内/外口:

在接口配置模式下:

ipnatinside/ipnatoutside

2.配置动态映射时的地址池:

在全局配置模式下:

ipnatpoolpool-namestart-ipend-ipnetmasknetmask

3.地址映射命令:

静态(转换内部源地址):

ipnatinsidesourcestatic(tcp)IL地址IG地址

动态(转换内部源地址):

ipnatinsidesourcelistlist-namepoolpool-name

动态(转换外部源地址):

ipnatoutsidesourcelistlist-namepoolpool-name

动态(转换内部目的地址):

ipnatinsidedestinationlistlist-namepoolpool-name(多用在虚拟服务器中)

4.查看NAT表:

showipnattranslation

5.显示NAT统计:

showipnatstatistics

6.NAT超时:

ipnattranslationtimeout

7.对NAT条目数目限制和更改:

ipnattranslationmax-entries

8.清除NAT表中的动态条目:

clearipnattranslation*

实验部分:

其中:

1.R1/R2/R3/SW的以太网网段是123.0.0.0/24,R1/R2/R3都是以E0/0连接到SW上,地址分别为:

123.0.0.1/123.0.0.2/123.0.0.3

2.R3/R4之间都以S1/0相连,网段是34.0.0.0/24,地址分别是34.0.0.3/34.0.0.4

3.R3/R5之间都以S1/1相连,网段是35.0.0.0/24,地址分别是35.0.0.3/35.0.0.5

4.R1和R2上有一条默认路由下一跳指向123.0.0.3

5.R4上:

iproute200.1.4.0255.255.255.034.0.0.3

6.R5上:

iproute200.1.5.0255.255.255.035.0.0.3

下面是开始时所有路由器的配置:

(假设给定的IG地址段是POOLR4:

200.1.4.1~200.1.4.3,POOLR5:

200.1.5.1~200.1.5.3)

R1:

interfaceEthernet0/0

ipaddress123.0.0.1255.255.255.0

!

iproute0.0.0.00.0.0.0123.0.0.3

R2:

interfaceEthernet0/0

ipaddress123.0.0.2255.255.255.0

!

iproute0.0.0.00.0.0.0123.0.0.3

R3:

interfaceEthernet0/0

ipaddress123.0.0.3255.255.255.0

!

interfaceSerial1/0

ipaddress34.0.0.3255.255.255.0

!

interfaceSerial1/1

ipaddress35.0.0.3255.255.255.0

R4:

interfaceSerial1/0

ipaddress34.0.0.4255.255.255.0

!

iproute200.1.4.0255.255.255.034.0.0.3

R5:

interfaceSerial1/1

ipaddress35.0.0.5255.255.255.0

!

iproute200.1.5.0255.255.255.035.0.0.3

第一:

静态的NAT:

使用R1,R3,R4

在NAT路由器R3上进行配置:

interfaceEthernet0/0

ipaddress123.0.0.3255.255.255.0

ipnatinside

!

interfaceSerial1/0

ipaddress34.0.0.3255.255.255.0

ipnatoutside

!

interfaceSerial1/1

ipaddress35.0.0.3255.255.255.0

!

ipnatinsidesourcestatic123.0.0.1200.1.4.1

查看R3的NAT表:

R3(config)#doshowipnattranslation

ProInsideglobalInsidelocalOutsidelocalOutsideglobal

---200.1.4.1123.0.0.1------

此时,从R1的123.0.0.1去pingR4的34.0.0.4或者从R4的34.0.0.4去ping200.1.4.1都是可以通的,这是因为NAT表中有翻译条目:

200.1.4.1(IG)--------123.0.0.1(IL)

第二:

动态的NAT:

使用R1,R3,R4

在NAT路由器R3上进行配置:

interfaceEthernet0/0

ipaddress123.0.0.3255.255.255.0

ipnatinside

!

interfaceSerial1/0

ipaddress34.0.0.3255.255.255.0

ipnatoutside

!

interfaceSerial1/1

ipaddress35.0.0.3255.255.255.0

!

!

ipnatpoolDY200.1.4.1200.1.4.3netmask255.255.255.0

ipnatinsidesourcelist1poolDY

!

access-list1permit123.0.0.1

在第一次连接发起之前showipnattranslation可以发现NAT表是空的,然后用R1的123.0.0.1去pingR4的34.0.0.4,可以PING通,此时NAT表有200.1.4.1到123.0.0.1的映射了。

然后我们使用命令doclearipnattranslation*清楚表中的动态映射,再从R4去PING200.1.4.1,可以发现:

R4(config)#doping200.1.4.1

Typeescapesequencetoabort.

Sending5,100-byteICMPEchosto200.1.4.1,timeoutis2seconds:

U.U.U

Successrateis0percent(0/5)

这是因为NAT表中已经没有了200.1.4.1这个地址的翻译条目,并在R3的路由表中也没有有关于200.1.4.1的路由,所以显示路由不可达。

第三:

RoutingloopwhenuseingdynamicNAT:

使用R1,R3,R4

从上面的例子中我们可以大概看出NAT的一个执行步骤:

1.从inside到outside:

先查找路由表,发现这是一个以内部地址为源到外部的连接,并且源符合list1圈定的范围,于是NAT将地址翻译,把翻译条目保存进NAT表中。

2.从outside到inside:

先查NAT表,将IG地址翻译成IL地址,再查路由表。

所以上个例子中,NAT表中没有翻译条目,无法将IG翻译IL,因为R3的路由表中没有200路由(IG),只有123路由(IL),所以显示不可达了。

如果说R3有能力为200去路由又会发生什么呢?

我们在R3上多配置一条指向R4的默认路由:

iproute0.0.0.00.0.0.034.0.0.4,然后打开debugippacket,debugipnat后在R4上PING200.1.4.1,以下是R3的显示:

*Mar101:

02:

13.779:

IP:

tableid=0,s=34.0.0.4(Serial1/0),d=200.1.4.1(Serial1/0),routedviaFIB

*Mar101:

02:

13.779:

IP:

s=34.0.0.4(Serial1/0),d=200.1.4.1(Serial1/0),len100,redirected

*Mar101:

02:

13.783:

IP:

tableid=0,s=34.0.0.3(local),d=34.0.0.4(Serial1/0),routedviaFIB

*Mar101:

02:

13.783:

IP:

s=34.0.0.3(local),d=34.0.0.4(Serial1/0),len56,sending

*Mar101:

02:

13.787:

IP:

s=34.0.0.4(Serial1/0),d=200.1.4.1(Serial1/0),g=34.0.0.4,len100,forward

我们可以比较清楚的看到,从s=34.0.0.4,d=200.1.4.1在做了一个路由重定向后又以s=34.0.0.3,d=34.0.0.4发回了R4,网络在这里出现了打环的现象。

第四:

PAT:

使用R1,R2,R3,R4(在R3上noiproute0.0.0.00.0.0.034.0.0.4)

interfaceEthernet0/0

ipaddress123.0.0.3255.255.255.0

ipnatinside

!

interfaceSerial1/0

ipaddress34.0.0.3255.255.255.0

ipnatoutside

!

!

!

ipnatinsidesourcelist1interfaceSerial1/0overload

access-list1permit123.0.0.00.0.0.3

在R1,R2上用PING和telnet对R4发起连接,然后查看NAT表如下:

icmp34.0.0.3:

6123.0.0.1:

634.0.0.4:

634.0.0.4:

6

tcp34.0.0.3:

39855123.0.0.1:

3985534.0.0.4:

2334.0.0.4:

23

icmp34.0.0.3:

0123.0.0.2:

034.0.0.4:

034.0.0.4:

0

tcp34.0.0.3:

48670123.0.0.2:

4867034.0.0.4:

2334.0.0.4:

23

可以看到,两个不同的IL地址被映射到同一个IG地址上,但是所用的端口号是不同的,以标识不同的IL地址。

NAT试图保留BSD的语法,在可能的情况下将IL的端口号映射到同样的IG端口号,不同的IG端口号只在与IL相关的端口号在另一个映射中被占用时使用。

第五:

NAT的TCP负载分配:

使用R1,R2,R3,R4

外部看来有一个IG地址的单独的服务器,实际上R3将R1和R2两个IL地址轮流翻译。

为了方便实验结果的观察,我们先在R1/R2上做如下配置:

R1(config)#linevty04

R1(config-line)#passwordR1

R1(config-line)#login

R2(config)#linevty04

R2(config-line)#passwordR2

R2(config-line)#login

在R3上做的配置如下:

interfaceEthernet0/0

ipaddress123.0.0.3255.255.255.0

ipnatinside

!

interfaceSerial1/0

ipaddress34.0.0.3255.255.255.0

ipnatoutside

!

ipnatpoolVS123.0.0.1123.0.0.2prefix-length24typerotary

ipnatinsidedestinationlist1poolVS

!

access-list1permit200.1.4.1

做完以后我们在R4上telnet200.1.4.1:

R4(config)#dotel200.1.4.1

Trying200.1.4.1...Open

 

UserAccessVerification

Password:

R1>

R1>

R4(config)#dodisc1

Closingconnectionto200.1.4.1[confirm]

==============================================

R4(config)#dotel200.1.4.1

Trying200.1.4.1...Open

 

UserAccessVerification

Password:

R2>

R2>

R4(config)#dodisc1

Closingconnectionto200.1.4.1[confirm]

==============================================

R4(config)#dotel200.1.4.1

Trying200.1.4.1...Open

 

UserAccessVerification

Password:

R1>

R1>

R4(config)#dodisc1

Closingconnectionto200.1.4.1[confirm]

==============================================

R4(config)#dotel200.1.4.1

Trying200.1.4.1...Open

 

UserAccessVerification

Password:

R2>

R2>

我们只是TELNET了200.1.4.1这个地址,却被轮流的连接到R1和R2上。

另外要提及的两点就是当POOL中的地址不连续怎么办,前面的例子中我们的POOL中的地址都是连续的

R3(config)#ipnatpoolVS?

A.B.C.DStartIPaddress

netmaskSpecifythenetworkmask

prefix-lengthSpecifytheprefixlength

此时如果打A.B.C.D就表示接下来的地址段是连续的,如果选后两个,就可以圈出不连续的地址段,比如200.1.4.1到200.1.4.100中的34和69必须拿出来做DNS的静态地址映射而不能进入地址池。

那么我们可以这样去定义POOL:

R3(config)#ipnatpoolVSprefix-length24

R3(config-ipnat-pool)#address200.1.4.1200.1.4.33

R3(config-ipnat-pool)#address200.1.4.35200.1.4.68

R3(config-ipnat-pool)#address200.1.4.70200.1.4.100

还有一个就是:

R3(config)#ipnatpoolVS2123.0.0.1123.0.0.2prefix-length24type?

match-hostKeephostnumbersthesameaftertranslation

rotaryRotaryaddresspool

rotary这个关键字我们已经知道了,就是让POOL中的地址轮流的被翻译;而match-host这个关键字和rotary是不能共存的,后一个打上去的会把前面的覆盖掉,match-host的意思是让IL的主机位与IG的主机位相同,如123.0.0.2/24的IL就翻译成200.1.4.2/24的IG。

rotary需要轮流翻译而match-host将IL和IG主机位对应起来。

第六:

NAT的服务分配:

使用R1,R2,R3,R4

假设R3来为R4提供服务,80端口提供WWW服务,而21端口提供FTP服务(R4看来),而实际上WWW服务是由R1来提供的,FTP服务由R2提供。

为了便于观察,我们用R1的TELNET来模拟WWW,用R2的TELNET来模拟FTP。

R3上的配置如下:

interfaceEthernet0/0

ipaddress123.0.0.3255.255.255.0

ipnatinside

!

interfaceSerial1/0

ipaddress34.0.0.3255.255.255.0

ipnatoutside

!

ipnatinsidesourcestatictcp123.0.0.223interfaceSerial1/021

ipnatinsidesourcestatictcp123.0.0.123interfaceSerial1/080

在R4上进行演示:

R4(config)#dotelnet34.0.0.380

Trying34.0.0.3,80...Open

 

UserAccessVerification

Password:

R1>

R1>

R1>

R4(config)#dodisc1

Closingconnectionto34.0.0.3[confirm]

=============================================

R4(config)#dotelnet34.0.0.321

Trying34.0.0.3,21...Open

 

UserAccessVerification

Password:

R2>

R2>

R2>

第七:

用ROUTE-MAP实现双出口的NAT:

使用R1,R3,R4,R5

1.我们先看看如果使用的是扩展列表时的情况:

interfaceEthernet0/0

ipaddress123.0.0.3255.255.255.0

ipnatinside

!

interfaceSerial1/0

ipaddress34.0.0.3255.255.255.0

ipnatoutside

!

interfaceSerial1/1

ipaddress35.0.0.3255.255.255.0

ipnatoutside

!

ipnatpoolR4200.1.4.1200.1.4.3netmask255.255.255.0

ipnatpoolR5200.1.5.1200.1.5.3prefix-length24

ipnatinsidesourcelist101poolR4

ipnatinsidesourcelist102poolR5

!

access-list101permitiphost123.0.0.1host34.0.0.4

access-list102permitiphost123.0.0.1host35.0.0.5

下面我们从R1上先PINGR4再PINGR5:

R1(config)#doping34.0.0.4

Typeescapesequencetoabort.

Sending5,100-byteICMPEchosto34.0.0.4,timeoutis2seconds:

!

!

!

!

!

Successrateis100percent(5/5),round-tripmin/avg/max=24/63/104ms

R1(config)#doping35.0.0.5

Typeescapesequencetoabort.

Sending5,100-byteICMPEchosto35.0.0.5,timeoutis2seconds:

.....

Successrateis0percent(0/5)

发现R4可以通而R5不通

在R3上打开DEBUGIPNAT:

R3#

*Mar102:

22:

29.527:

NAT*:

s=123.0.0.1->200.1.4.1,d=35.0.0.5[45]

R3#

*Mar102:

22:

31.535:

NAT*:

s=123.0.0.1->200.1.4.1,d=35.0.0.5[46]

R3#

*Mar102:

22:

33.559:

NAT*:

s=123.0.0.1->200.1.4.1,d=35.0.0.5[47]

R3#

*Mar102:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1