CCNA24-NAT,PAT详解

简单的来说,NAT是将私有IP地址通过边界路由转换成外网IP地址,在边界路由的NAT地址转换表中记录下这个转换,当外部数据返回时,路由使用NAT技术查询NAT转换表,再将目标地址替换成内网用户IP地址。

RFC1918规定了三块专有的地址,作为私有的内部组网使用:

A类:10.0.0.0―10.255.255.255
B类:172.16.0.0―172.31.255.255
C类:192.168.0.0―192.168.255.255

这三块私有地址本身是可路由的,只是公网上的路由器不会转发这三块私有地址的流量;当一个公司内部配置了这些私有地址后,内部的计算机在和外网通信时,公司的边界路由会通过NAT或者PAT技术,将内部的私有地址转换成外网IP,外部看到的源地址是公司边界路由转换过的公网IP地址,这在某种意义上也增加了内部网络的安全性。

这里介绍三种常用的NAT技术:

  • 静态NAT:静态NAT就是一对一的NAT,内部有多少私有地址需要和外部通信,就要配置多少外网IP地址与其对应。

  • 动态NAT:动态NAT是在路由器上配置一个外网IP地址池,当内部有计算机需要和外部通信时,就从地址池里动态的取出一个外网IP,并将他们的对应关系绑定到NAT表中,通信结束后,这个外网地址被释放,可供其他内部IP转换使用,这和DHCP租约IP有相似之处。

  • PAT(Port address Translation,端口地址转换,也叫端口地址复用):这是最常用的NAT技术,也是IPv4能维持到今天的最重要原因之一,它提供了一种多对一的方式,针对多个内网IP地址,边界路由可以给他们分配一个外网IP,利用这个外网IP的不同端口(不同的端口对应不同的内网IP)和外部进行通信。

内部本地地址(Inside Local Address):内部网络主机使用的IP地址。这些地址一般为私有IP地址,它们不能直接在Internet上路由,因而就不能直接用于对Internet的访问,必须通过网络地址转换,以合法的IP地址的身份来访问Internet。
内部全局地址(Inside Global Address):内部网络使用的公有IP地址,这些地址是向ICANN申请才可取得的公有IP地址。当使用内部本地地址的主机要与Internet通信时,NAT转换时使用的地址。
外部本地地址(Outside Local Address):外部网络主机使用的IP地址,这些地址不一定是公有IP地址。
外部全局地址(Outside Global Address):外部网络主机使用的IP地址。这些地址是全局可路由的公有IP地址。

[*1*].NAT的原理和在Cisco路由器上配置NAT

****1例子说明原理

1.此时当PC 1访问PC 2时,它需要发送数据包,以Y.Y.Y.Y为目的,以10.0.0.1为源。

2.到达gatewaygateway会转发数据包给外部网络,并把数据包修改为以Y.Y.Y.Y为目的,以X.X.X.X为源。

3PC 2接收到此数据包,会以X.X.X.X为目的,以Y.Y.Y.Y为源,发送返回数据包。

4.到达gatewaygateway会转发数据包给内部网络,并把数据包修改为以10.0.0.1为目的,以Y.Y.Y.Y为源。

144445592.jpg


10.0.0.0就是PC 1的内部本地地址。
X.X.X.X是PC 1的内部全局地址。
Y.Y.Y.Y是PC 2的外部全局地址。
10.0.0.2是PC 2的外部本地地址

145117105.jpg


****2在Cisco路由器上配置静态NAT

拓扑图如下

它们处于一个内网环境,R3是这个内网的边界路由,R4是公网上的一台路由器(可以看做是ISP的路由器),各设备IP配置如图所示:

153353464.png


Server1和Server2是两台服务器,一般的我们在做静态NAT的时候,是将服务器的IP地址做成静态的NAT,其他的普通的PC机不会这么做。那么在上述拓扑搭建好,ping通的情况下,我们进行在R3上配置静态的NAT

/*这个接口是内网接口,需要配置成NAT对内接口*/

/*配置成NAT对外接口*/

/*配置静态转换条目,每个内网IP需要和一个外网IP对应*/

R3(config)#interface  e0/0
R3(config-if)#ip nat inside
R3(config-if)#int   s1/0
R3(config-if)#ip nat outside
R3(config)#ip nat inside source static  192.168.1.2 12.1.1.100
R3(config)#ip nat inside source static  192.168.1.3 12.1.1.200

我们来查看NAT地址转换表

只有在进行了通信之后,才可以看到如下的结果
R3#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 12.1.1.100:2      192.168.1.2:2      12.1.1.2:2         12.1.1.2:2
--- 12.1.1.100         192.168.1.2        ---                ---
--- 12.1.1.200         192.168.1.3        ---                ---



****3在Cisco路由器上配置动态NAT

201053674.jpg


配置动态NAT

R3(config)#interface  f0/0
R3(config-if)#ip add 192.168.1.1 255.255.255.0
R3(config-if)#ip nat inside
R3(config-if)#no shutdown
R3(config-if)#int  s1/0
R3(config-if)#ip add 12.1.1.1 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#ip nat outside
/*
     * 配置外网地址池,CCNA是这个地址池的名称,
     * 外网地址池范围从12.1.1.200-12.1.1.205,6个可用于转换的IP地址,
     * 子网掩码24位。
     */
R3(config)#ip nat pool CCNA  12.1.1.200 12.1.1.205 netmask 255.255.255.0
/*
 * 设置一个ACL来允许那些内网IP被转换,
     * 这里是192.168.1.0/24网段都允许被转换。
 */
R3(config)#access-list 1 permit 192.168.1.0 0.0.0.255
/*开启动态NAT,允许ACL 1中的私有地址转换成CCNA中的外网IP*/
R3(config)#ip nat inside source list 1 pool CCNA

测试:

Server1(192.168.1.2)----------ping-----------R4(12.1.1.2)
/*R4给Server1回送echo reply的时候的源地址是12.1.1.200,而不是192.168.1.2,那么可想而知NAT已经将内网的192.168.1.2转换成了12.1.1.200,**/
R4#debug ip  icmp
ICMP packet debugging is on
R4#
*Nov 18 20:24:14.295: ICMP: echo reply sent, src 12.1.1.2, dst 12.1.1.200, topology BASE, dscp 0 topoid 0
/查看NAT的转换表/
R3#show  ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
--- 12.1.1.200         192.168.1.2        ---                ---

注意:只有当内网访问了外网之后,外网才可以访问内网,因为在NAT被创建的时候是空的,只有当内网的IP访问外网之后才有相应的转换表项




[*2*].在Cisco路由器上配置PAT

如上图所示的拓扑

配置PAT

R3#configure terminal
R3(config)#interface  f0/0
R3(config-if)#ip nat inside
R3(config-if)#int  s1/0
R3(config-if)#ip nat outside
R3(config-if)#exit
//这里定义了一个IP地址的NAT地址池,因为有时候我们或许只能申请到一个IPv4地址//
R3(config)#ip nat  pool PAT 12.1.1.254 12.1.1.254 prefix-length 24
//定义访问控制列表允许内网进行访问//
R3(config)#access-list 20 permit 192.168.1.0 0.0.0.255
//实行IP地址的端口复用//
R3(config)#ip nat inside source list 20 pool PAT overload


测试

Server1---------------ping-------------R4
查看NAT表,有对应的IP地址和端口号
R3#show ip  nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 12.1.1.254:8      192.168.1.2:8      12.1.1.2:8         12.1.1.2:8



[*3*].我们可以将公网的IP地址配置在连接外网的接口上吗?

 也就是说,我们可以将公网的IP地址配置在R3的S1/0 接口上吗????

210204484.jpg


配置

R3(config)#interface f0/0
R3(config-if)#ip nat  inside
R3(config-if)#int s1/0
R3(config-if)#ip nat outside
R3(config-if)#exit
//定义如下的访问控制列表允许内网NAT//
R3(config)#access-list 50 permit 192.168.1.0 0.0.0.255
//直接将内网的IP地址转换成R3上的s1/0的接口IP地址//
R3(config)#ip nat inside source list 50 interface s1/0 overload
 
 

测试

Server1--------ping-------R4
Server2--------ping-------R4
//查看R3上的NAT转换表项,R3上的S1/0接口IP地址是12.1.1.1,server1和server2访问外网的时候都被转换成了12.1.1.1//
R3#show  ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 12.1.1.1:11       192.168.1.2:11     12.1.1.2:11        12.1.1.2:11
icmp 12.1.1.1:3        192.168.1.3:3      12.1.1.2:3         12.1.1.2:3
//但是我们来想一想,如果我们从外网来访问内网12.1.1.1呢,我们就永远都不可能访问内网了,因为R3不知道这个数据是发给那个内网的IP地址的//



[*4*].在企业中如果我们外网的IP地址不和连接外网路由器IP地址在同一网段该如何处理?

我们内网1向ISP申请IP地址是200.1.1.200,内网2向ISP申请的IP地址是201.1.1.201,这个IP地址不在10 .1.1.0/24网段,那么这个时候,我们应该怎么办呢?

103322890.jpg


 解决方法是:在R1和R2上创建换回口地址分别为200.1.1.254和201.1.1.254,然后将这两个网段通过路由协议通告出去。

///如下是在R1上做的NAT和路由协议发布///
R1(config)#interface  f0/0
R1(config-if)#ip nat inside
R1(config-if)#int s1/0
R1(config-if)#ip nat outside
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R1(config)#ip nat pool PAT 200.1.1.200 200.1.1.200 netmask  255.255.255.0
R1(config)#ip nat inside source list 1 pool PAT overload
R1(config)#interface loopback 0
R1(config-if)#ip add 200.1.1.254   255.255.255.0
R1(config-if)#no shutdown
//通过EIGRP将网段发布出去//
R1(config)#router eigrp 100
R1(config-router)#no auto-summary
R1(config-router)#network 10.1.1.0 0.0.0.255
R1(config-router)#network 200.1.1.0 0.0.0.255
///如下是在R2上做的NAT和路由协议发布///
R2(config)#interface  f0/0
R2(config-if)#ip nat inside
R2(config-if)#int s1/0
R2(config-if)#ip nat  outside
R2(config)#interface  loopback 0
R2(config-if)#ip add 201.1.1.254   255.255.255.0
R2(config-if)#no shutdown
R2(config)#access-list 1 permit 192.168.0.0 0.0.0.255
R2(config)#ip nat pool PAT 201.1.1.201 201.1.1.201 netmask 255.255.255.0
R2(config)#ip nat inside source list 1 pool PAT overload
////通过EIGRP将网段发布出去////
R2(config)#router eigrp 100
R2(config-router)#no auto-summary
R2(config-router)#network 10.1.1.0 0.0.0.255
R2(config-router)#network 201.1.1.0 0.0.0.255






本文出自 “好好活着” 博客,转载请与作者联系!

你可能感兴趣的:(安全性,计算机,路由器,IP地址,一对一)