NAT配置详解

一、NAT简介:
 
  1. NAT(Network Address Translation)网络地址转换。
  2. 最早出现在思科11.2 IOS中,定义在RFC1631和RFC3022中。
  3. NAT最主要的作用是为了缓解IPv4地址空间的不足。
  4. 同时也带来了一些问题,如每个数据包到达路由器后都要进行包头的转换操作,所以增加了延迟;DNS区域传送,BOOTP/DHCP等协议不可穿越NAT路由器;
  5. 改动了源IP,失去了跟踪到端IP流量的能力,所以使责任不明确了。
  6. 但是利还是要大于弊的,不然也不会学习它了!最新的CCNA640-802学习指南中依然有专门的一章来讲解NAT,它的重要性可见一斑。
二、NAT术语:比较难理解,所以这里用最明了的语言总结如下
 
  1. 内部本地地址( inside local address ):局域网内部主机的地址,通常是RFC1918地址空间中的地址,称为私有地址。(待转换的地址)
  2. 内部全局地址(inside global address):内部本地地址被NAT路由器转换后的地址,通常是一个可路由的公网地址。
  3. 外部全局地址(outside global address):是与内部主机通信的目标主机的地址,通常是一个可路由的公网地址。
  4. 外部本地地址(outside local address):是目标主机可路由的公网地址被转换之后的地址,通常是RFC1918地址空间中的地址。
三、NAT配置详解:
 
  1. 静态NAT:将一个私有地址和一个公网地址一对一映射的配置方法,这种方式不能节省IP,通常只为需要向外网提供服务的内网服务器配置。
如图所示: PC1地址:192.168.0.2/24
          PC2地址:192.168.0.3/24
          R1 E0/0地址:192.168.0.1/24  
          R1 S0/0地址:202.106.0.1/24
          R2 S0/0地址:202.106.0.2/24
          R2 E0/0地址:202.106.1.1/24
          PC3地址:202.106.1.2/24 (模拟公网服务器)
各接口地址按上面配置好之后,在R1和R2上配置路由(注意不要为192.168.0.0网络增加路由项,因为私有网络不可以出现在公网路由表中,不然也不叫私有地址了)
路由配置好之后在R1上可以ping通PC3,但是PC1只能ping到R1的S0/0,再向前就ping不通了。因为没有192.168.0.0网络的路由表项,所以被丢弃了!下面在R1上配置静态NAT让PC1可以和PC3通信。
Router(config)#int fa0/0
Router(config-if)#ip nat inside  // 将该接口标记为内部接口
Router(config-if)#int s0
Router(config-if)#ip nat outside // 将该接口标记为外部接口
Router(config-if)#exit
Router(config)#ip nat inside source static 192.168.0.2 202.106.0.3 // 将来自标记为内部接口的地址做为转换源,将 192.168.0.2 一对一的转换成 202.106.0.3
        2、动态NAT: 现在PC1就可以和PC3通信了。但是PC2不能,因为R1并没有为PC2提供地址转换。当然我们可以在R1上像给PC1做静态转换一样也给PC2做一个,可如果我们有100台机器工作量就太大了。下面在R1上再继续配置:
Router(config)#access-list 10 permit 192.168.0.0 0.0.0 .255  // 定义标准访问控制列表 10 只允许定义的地址能够被转换
Router(config)#ip nat pool out 202.106.0.4 202.106.0.24 netmask 255.255.255.0  // 定义名称为 out 的地址池。
Router(config)#ip nat inside source list 10 pool out // 将访问控制列表定义的地址和地址池关联这样就有前 21 个内部主机能够得到公网地址。
现在PC2也可以和PC3通信了。这就是动态NAT,这种方式也不能节约IP地址。有一百台主机就要100个公网IP,不常用。
 
       3、PAT Port Address Translation )端口地址转换: 用一个或多个公网 IP 为多个私有地址提供转换,能够节省大量 IP 地址,这种方式在现实网络环境中最常用。
Router(config)#ip nat inside source list 10 pool out  overload //只需要在动态NAT的基础上多出一个“overload”就可以让上面的21个公网地址反复使用。
 
如果我们只有一个公网地址且已经分配给了R1的S0/0口,可以使用下面的命令来对这仅有的一个公网地址反复利用或叫超载。
Router(config)#ip nat inside source list 10 interface serial 0 overload //就是在R1上不设置地址池,因为只有一个公网地址,而只对S0/0接口的地址超载。
注意:一条NAT转换条目要占用160字节内存,因此NAT的转换数目受路由器的内存限制。
 
    4、配置端口映射:看配置就明白了
还是上面的图和IP,看下面的配置
 
Router(config)#int fa0/0
Router(config-if)#ip nat inside  // 将该接口标记为内部接口
Router(config-if)#int s0
Router(config-if)#ip nat outside // 将该接口标记为外部接口
Router(config-if)#exit
Router(config)#ip nat inside source static tcp 192.168.0.2 80 202.106.0.3 80 // 192.168.0.2的80端口 一对一的转换成 202.106.0.3的80端口,也就外网用户在浏览器里输入202.106.0.3时,会打开192.168.0.2上的WWW服务。这里公网地址也可以改成interface Serial1/0 80,如下:
Router(config)#ip nat inside source static tcp 192.168.0.3 21  interface Serial1/0 21 //如果只有一个公网地址还可以这样来转换。这样外网访问的不同服务就会定向到不同的内网服务器。
 
    5、配置TCP负载平衡:还是上图IP也不变,假如PC1和PC2提供的是相同的WWW服务,为了实现负载平衡可以做如下配置:
Router(config)#ip nat pool www 192.168.0.2 192.168.0.3 netmask 255.255.255.0 type rotary //配置地址池www并设成旋转。
Router(config)#access-list 10 permit 202.106.0.3
Router(config)#ip nat inside destination list 10 pool www //这样当外网主机访问202.106.0.3的时候路由器会自动定向到192.168.0.2再有请求就定向到192.168.0.3如果地址池里还有别的地址会依次循环,实现负载平衡的目的。注意,地址有了,网络中还要有对应的主机存在,否则会使对方第一次连接失败。
               (2)
 
  
1.静态NAT的配置:
Router(config)#hostname r1
r1(config)#interface fa 0/0
r1(config-if)#ip address 192.168.1.1 255.255.255.0
r1(config-if)#ip nat inside     //表明为内部端口
r1(config-if)#no shut
r1(config)#interface s 1/1
r1(config-if)#ip address 193.1.1.1 255.255.255.0
r1(config-if)#ip nat outside     //表明为外部端口
r1(config-if)#clock rate 64000
r1(config-if)#no shut
r1(config-if)#router rip
r1(config-router)#network 192.168.1.0
r1(config-router)#network 193.1.1.0
r1(config-router)#exit
r1(config)#ip nat inside source static 192.168.1.2 194.1.1.2    //以下三行为静态NAT的设置
r1(config)#ip nat inside source static 192.168.1.3 194.1.1.3
r1(config)#ip nat inside source static 192.168.1.4 194.1.1.4
r1(config)#exit
r1#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
--- 194.1.1.2          192.168.1.2        ---                ---
--- 194.1.1.3          192.168.1.3        ---                ---
--- 194.1.1.4          192.168.1.4        ---                ---
如上所示,可以看出我设定的静态NAT的翻译表信息
2.动态NAT的配置:
Router(config)#hostname r1
r1(config)#interface fa 0/0
r1(config-if)#ip address 192.168.1.1 255.255.255.0
r1(config-if)#ip nat inside
r1(config-if)#no shut
r1(config-if)#interface s1/1
r1(config-if)#ip address 193.1.1.1 255.255.255.0
r1(config-if)#ip nat outside
r1(config-if)#clock rate 64000
r1(config-if)#no shut
r1(config-if)#router rip
r1(config-router)#network 192.168.1.0
r1(config-router)#network 193.1.1.0
r1(config-router)#exit
r1(config)#ip nat pool p1 194.1.1.1 194.1.1.10 prefix-length 24   //定义内部全局地址池,命令格式为ip nat pool name start-ip end-ip {prefix-length }
r1(config)#ip nat inside source list 1 pool p1     //在内部和外部之间建立转换关系
r1(config)#access-list 1 permit 192.168.1.0 0.0.0.255    //建立标准acl来允许某些内部地址可以进行动态地址转换

你可能感兴趣的:(技术,Cisco,路由,休闲,交换)