一、 NAT简介
NAT(Network Address Translation)的功能,就是指在一个网络内部,根据需要可以随意自定义的IP地址,而不需要经过申请。在网络内部,
各计算机间通过内部的IP地址进行通讯。而当内部的计算机要与外部internet网络进行通讯时,具有NAT功能的设备(比如:路由器)负责将其内部的IP地址转换为合法的IP地址(即经过申请的IP地址)进行通信。
 
二、 关于NAT的几个概念:
1   内部本地地址(Inside Local Address
分配给内部网络中的PC机的私有IP地址,一般都是我们常见的10.0.0.0/172.16.0.0/192.168.0.0
2   内部全局地址(Inside Global Address
对外进行IP通信时,代表一个或多个内部本地地址的合法IP地址
3   外部本地地址(Outside Local Address
由主机的拥有者分配给在外部网上的主机的IP地址.该地址不一定是属于合法的IP地址,但一定是可以路由的IP地址.
4   外部全局地址 (outside global address)
外部网络使用的地址.它是一个公有的IP地址
 
三、 优点与缺点
1、节省IP。有了NAT技术,我们可以让一个企业内部的PC机共用少量的公网IP来连上Internet,而不需要为每一台PC都申请一个IP。这样做太浪费了,大家都知道,私有地址是不能在公网上路由的,如果要想拿到公网IP,有一个办法就是花钱申请,对外部网络屏蔽了内部的网络拓扑。
2、内部网络中的PC机和外部通信的时候,在边缘经过NAT转换才把数据包交出去,速度上会稍微慢一些
 
 
 

 
实验一:配置静态NAT
用途:可以把企业内某一台服务器或计算机内部IP地址单独映射到外网地址,
使其可以对外提供服务。

 
 
拓扑如下
 
 
 
具体配置:
 
 
R1
Router>en
Router#conf t
Router(config)#hostname R1
R1(config)#interface f0/0
R1(config-if)#ip address 192.168.1.254 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#interface f0/1
R1(config-if)#ip address 218.87.18.23 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#ip nat inside source static 192.168.1.1 218.87.18.23
--这条语句说明把内部本地地址192.168.1.1静态映射内部全局地址218.87.18.23 (也就是下面那台PC的地址)
R1(config)#interface f0/0
R1(config-if)#ip nat inside    --使用NAT标识内部接口
R1(config-if)#interface f0/1
R1(config-if)#ip nat outside     --使用NAT标识外部接口
 
R1(config-if)#end
R1#
 
 
 
ISP
Router>en
Router#conf t
Router(config)#hostname ISP
ISP(config)#interface f0/1
ISP(config-if)#ip address 218.87.18.24 255.255.255.0
ISP(config-if)#no sh
ISP(config-if)#end
ISP#
 
 
 
验证在PCISP
PC>ping 218.87.18.24
 
Pinging 218.87.18.24 with 32 bytes of data:
 
Reply from 218.87.18.24: bytes=32 time=73ms TTL=254
Reply from 218.87.18.24: bytes=32 time=41ms TTL=254
Reply from 218.87.18.24: bytes=32 time=36ms TTL=254
Reply from 218.87.18.24: bytes=32 time=39ms TTL=254
 
Ping statistics for 218.87.18.24:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 36ms, Maximum = 73ms, Average = 47ms
PC>
 
 
 
查看NAT转换表:
R1#show ip nat translations
/协议  /内部全局地址   /内部本地地址       /外部全局地址
Pro  Inside global     Inside local       Outside local      Outside global
icmp 218.87.18.23:3    192.168.1.1:3      218.87.18.24:3     218.87.18.24:3
icmp 218.87.18.23:4    192.168.1.1:4      218.87.18.24:4     218.87.18.24:4
icmp 218.87.18.23:5    192.168.1.1:5      218.87.18.24:5     218.87.18.24:5
icmp 218.87.18.23:6    192.168.1.1:6      218.87.18.24:6     218.87.18.24:6
---  218.87.18.23      192.168.1.1        ---                ---
 
R1#
 
 
 
 
实验二:配置动态NAT
用途:如果企业当中向服务提供商申请了多个或者一串公网地址,使企业内成员都能访问因特网或者提供服务
 
拓扑如下:
 
 
具体配置:
 
R1
Router>
Router>en
Router#conf t
Router(config)#hostname R1
R1(config)#interface f0/0
R1(config-if)#ip address 192.168.1.254 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int f0/1
R1(config-if)#ip address 218.87.18.23 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255     --定义允许的流量
R1(config)#ip nat pool lab 218.87.18.21 218.87.18.23 netmask 255.255.255.0
--定义名为lab的公网IP地址池,范围为:218.87.18.21 – 218.87.18.23
R1(config)#ip nat inside source list 1 pool lab overload
--定义允许访问控制列表1的流量从lab地址池中转发出去,overload表示多路复用
R1(config)#interface f0/0
R1(config-if)#ip nat inside      --使用NAT标识内部接口
R1(config-if)#interface f0/1     --使用NAT标识外部接口
R1(config-if)#ip nat outside
R1(config-if)#end
R1#
 
 
ISP
Router>en
Router#conf t
Router(config)#hostname ISP
ISP(config)#interface f0/1
ISP(config-if)#ip address 218.87.18.24 255.255.255.0
ISP(config-if)#no sh
ISP(config-if)#end
ISP#
 
 
 
验证在PCISP
PC>ping 218.87.18.24
 
Pinging 218.87.18.24 with 32 bytes of data:
 
Reply from 218.87.18.24: bytes=32 time=53ms TTL=254
Reply from 218.87.18.24: bytes=32 time=21ms TTL=254
Reply from 218.87.18.24: bytes=32 time=36ms TTL=254
Reply from 218.87.18.24: bytes=32 time=39ms TTL=254
 
Ping statistics for 218.87.18.24:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 36ms, Maximum = 73ms, Average = 47ms
 
PC>
 
 
 
查看NAT转换表:
R1#show ip nat translations
Pro  Inside global     Inside local       Outside local      Outside global
icmp 218.87.18.21:30   192.168.1.1:30     218.87.18.24:30    218.87.18.24:30
icmp 218.87.18.21:31   192.168.1.1:31     218.87.18.24:31    218.87.18.24:31
icmp 218.87.18.21:32   192.168.1.1:32     218.87.18.24:32    218.87.18.24:32
icmp 218.87.18.21:33   192.168.1.1:33     218.87.18.24:33    218.87.18.24:33
icmp 218.87.18.21:34   192.168.1.1:34     218.87.18.24:34    218.87.18.24:34
icmp 218.87.18.21:35   192.168.1.1:35     218.87.18.24:35    218.87.18.24:35
icmp 218.87.18.21:36   192.168.1.1:36     218.87.18.24:36    218.87.18.24:36
R1#
 
注:由于下面只有一台PC,从以上表中不能看出所有的公网IP都被使用,大家用实验时可以下面挂两台或多台计算机.
 
 
 
实验三:配置PAT(端口地址转换)     ----拓扑为实验一拓扑
用途:这种方式是最普遍,也是最常用的方法,当企业仅只有申请了一个公网IP地址的情况下,我们可以使用PAT方式来实现企业内部能够访问因特网.
 
 
具体配置:
 
R1
Router>
Router>en
Router#conf t
Router(config)#hostname R1
R1(config)#interface f0/0
R1(config-if)#ip address 192.168.1.254 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int f0/1
R1(config-if)#ip address 218.87.18.23 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255     --定义允许的流量
R1(config)#ip nat inside source list 1 interface f0/1 overload
--定义所有符合访问控制列表1的流量,全部从F0/1接口转发出去.
R1(config)#interface f0/0
R1(config-if)#ip nat inside
R1(config-if)#interface f0/1
R1(config-if)#ip nat outside
R1(config-if)#end
R1#
 
 
 
ISP
Router>en
Router#conf t
Router(config)#hostname ISP
ISP(config)#interface f0/1
ISP(config-if)#ip address 218.87.18.24 255.255.255.0
ISP(config-if)#no sh
ISP(config-if)#end
ISP#
 
 
验证在PCISP
 
PC>ping 218.87.18.24
 
Pinging 218.87.18.24 with 32 bytes of data:
 
Reply from 218.87.18.24: bytes=32 time=86ms TTL=254
Reply from 218.87.18.24: bytes=32 time=45ms TTL=254
Reply from 218.87.18.24: bytes=32 time=49ms TTL=254
Reply from 218.87.18.24: bytes=32 time=35ms TTL=254
 
Ping statistics for 218.87.18.24:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 35ms, Maximum = 86ms, Average = 53ms
 
 
 
查看NAT转换表:
 
R1#show ip nat translations
Pro  Inside global     Inside local       Outside local      Outside global
icmp 218.87.18.23:43   192.168.1.1:43     218.87.18.24:43    218.87.18.24:43
icmp 218.87.18.23:44   192.168.1.1:44     218.87.18.24:44    218.87.18.24:44
icmp 218.87.18.23:45   192.168.1.1:45     218.87.18.24:45    218.87.18.24:45
icmp 218.87.18.23:46   192.168.1.1:46     218.87.18.24:46    218.87.18.24:46
 
R1#
 
 
 
总结:
网络地址转换就是将一个IP地址用另一个IP地址代替。尽管最初设计网络地址转换的目的是为了增加在专用网络中可使用的IP地址数,但是它有一个隐蔽的安全特性,如内部主机隐蔽等,保证了网络的一定安全。网络地址转换主要用在两个方面:
1)网络管理员希望隐藏内部网络的IP地址。这样,互联网上的主机无法判断内部网络的情况; 
2内部网络的IP地址是无效的。这种情况主要是因为现在的IP地址不够用,要申请到足够多的合法IP地址很难办到,因此需要转换IP地址。

    
在上面两种情况下,内部网对外面是不可见的,互联网不能访问内部网,但是内部网主机之间可以相互访问。