1. 网络地址转换(NAT)
1.1 NAT的应用场景
(1)应用场景:允许将私有IP地址映射到公网地址,以减缓IP地址空间的消耗
①需要连接Internet,但主机没有公网IP地址
②更换了一个新的ISP,需要重新组织网络时,可使用NAT转换
③需要合并两个具有相同网络地址的内网
(2)NAT的优缺点
优点 |
缺点 |
①节约合法的公网IP地址 ②减少地址重叠现象 ③增加连接Internet的灵活性 ④增加内网的安全性 |
①地址转换产生交换延迟,也就是消耗路由器性能。 ②无法进行端到端的IP跟踪 ③某些应用无法在NAT的网络中运行 |
1.2 NAT的类型
(1)静态NAT
指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,即两个地址的映射关系己绑定死了。某个私有IP地址只转换为某个公有IP地址,借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。
(2)动态NAT
①指将内部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的,而是随机的。所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址池中一个IP地址。如果地址池的IP地址做映射用完了,剩余的内网计算机将不能再访问外网(本质上,也是一对一的关系,只不过这种关系是动态绑定的!)。
②当要与外界进行通信的内部节点,如果还没有建立转换映射,边缘路由器将会动态的从公网IP地址池中选择IP对内部地址进行转化。每个转换条目在连接建立时动态建立,而在连接终止时会被回收。因此,外网的计算机不能访问内网的计算机(因为映射关系是内网计算机发起且连接终止时就回收了!)。
③动态NAT,一般用在当内部网络中只有少数节点与外界建立连接的场合时,因为只有少数的内部地址需要被转化成全局地址,可以减少对合法地址的需求。
(3)PAT
①这是最流行的NAT配置类型,实际上是动态NAT的一种形式,它映射多个私有网IP地址到一个公网IP地址,通过使用不同的端口来区分内网主机,被称为端口地址转换(PAT,Port Address Translation)。(见后面实验部分的分析,怎么用端口区分内网主机?)
②使用PAT时,internet的主机无法访问内网主机。如果需要这种访问,则需要做端口映射(注意,端口映射和端口地址转换PAT是两个概念!PAT是使得多个内网主机可以通过一个公网IP同时访问Internet,而端口映射则可以让internet主机访问内网主机!见后面《端口映射》的内容)
2. 实现网络地址转换
2.1 配置静态NAT
(1)网络拓扑
映射关系:PCx(10.0.0.y)映射到131.107.0.y;
(2)静态NAT映射数据包转换过程
①PC0访问Internet的Server,数据包经CPE路由器,根据配置的静态映射,数据包的源地址被131.107.0.2地址替换。
②Server向131.107.0.2发送返回的数据包,在进入内网时,根据静态映射表,将会使用PC0的IP地址替换数据包的目标地址(10.0.0.2)。
(3)在CPE路由器上配置静态映射表
//1. 静态NAT Router#conf t Router(config)#access-list 12 permit 192.168.1.0 0.0.0.255 //定义ACL,只允许192.168.1.0/24网段 Router(config)#line vty 0 15 //进入VTY虚接口,0和15分别表示起始和结束的vty的0-15号接口。 Router(config-line)#access-class 12 in //将编号为12的ACL绑定到vty Router(config-line)# CPE#conf t CPE(config)#ip nat inside source static 10.0.0.2 131.107.0.2 CPE(config)#ip nat inside source static 10.0.0.3 131.107.0.3 CPE(config)#ip nat inside source static 10.0.0.4 131.107.0.4 CPE(config)#ip nat inside source static 10.0.0.5 131.107.0.5 CPE(config)#ip nat inside source static 10.0.0.6 131.107.0.6 CPE(config)#interface fastEthernet 0/1 CPE(config-if)#ip nat inside //指定该接口为NAT的内部端口 CPE(config-if)#ex CPE(config)#interface serial 0/0 CPE(config-if)#ip nat outside //指定该接口为NAT的外网端口 CPE(config-if)#ex CPE(config)#exit CPE#debug ip nat //让路由器显示NAT信息
(4)验证:PCO主机ping 202.99.160.2,同时观察CPE路由器显示的NAT信息(要事先debug ip NAT开启这个功能!)。同时,由于配置了静态映射,外网的计算机可能通过访问131.107.0.6直接访问内网的WebServer的网站。
2.2 配置动态NAT
(1)网络拓扑
(2)在路由器上配置动态NAT
//1. 在CPE路由器上配置动态NAT CPE>en CPE#config t //定义ACL,如果内网有多个网段需要NAT,则需要在ACL都添加上 CPE(config)#access-list 10 permit 10.0.0.0 0.0.0.255 //指定公网地址池:名称为mypool,起始和结束地址以及子网掩码 CPE(config)#ip nat pool mypool 131.107.0.1 131.107.0.3 netmask 255.255.255.0 //将公网地址池与ACL绑定 CPE(config)#ip nat inside source list 10 pool mypool CPE(config)#interface serial 0/0 CPE(config-if)#ip nat outside //指定S0/0为NAT的外网接口 CPE(config-if)#ex CPE(config)#interface fastEthernet 0/1 CPE(config-if)#ip nat inside //指定f0/1为NAT的内网接口 CPE(config-if)#exit CPE(config)#exit //2. 在路由器上查看NAT配置状态 CPE#show ip nat statistics //3. 查看NAT地址转换信息(要先从内网ping外网主机) CPE#show ip nat translations //4. 清转转换表中的NAT条目 CPE#clear ip nat translations *
(3)验证:让pc0、pc1、pc2、pc3四台计算机同时ping 202.99.160.2。(只有3台能ping通,因为地址池只有3个公网IP可被拿来映射!)
2.3 配置PAT
(1)网络拓扑图(与前面例相同)
(2)端口地址转换(PAT):源端口的替换
①假设PC0和PC1都是使用1723端口访问外网的Server。如果数据包只做地址转换(即端口不转换),那么返回的数据目标地址都是131.107.0.1,目标端口都是1723,路由器就没有办法确定这个数据包应发送给PC0还是PC1。
②如果使用一个公网IP地址让很多内网计算机访问Internet,必须由路由器对访问Internet的数据包进行统一的源端口替换,将源端口替换成不同的端口出去(如4000、4001),这样路由器就可以根据返回的数据包目标端口确定数据包应该转发给哪一个内网计算机,这就是端口地址转换的原理!
(3)在路由器上配置PAT
//1. 在CPE路由器上配置PAT CPE>en CPE#config t //将内网需要PAT出去的网段添加到ACL中 CPE(config)#access-list 10 permit 10.0.0.0 0.0.0.255 //添加公网IP地址池(名称为mypool,前后IP一样,即只有一个公网IP)。 CPE(config)#ip nat pool mypool 131.107.0.1 131.107.0.1 netmask 255.255.255.0 //将公网地址池与ACL绑定(注意overload参数会启用PAT) CPE(config)#ip nat inside source list 10 pool mypool overload CPE(config)#interface serial 0/0 CPE(config-if)#ip nat outside //指定NAT的外网接口 CPE(config-if)#ex CPE(config)#interface fastEthernet 0/1 CPE(config-if)#ip nat inside //指定NAT的内网接口 CPE(config-if)#ex CPE(config)#ex CPE#show ip nat statistics //查看NAT配置状态 Total translations: 0 (0 static, 0 dynamic, 0 extended) Outside Interfaces: Serial0/0 Inside Interfaces: FastEthernet0/1 Hits: 0 Misses: 0 Expired translations: 0 Dynamic mappings: -- Inside Source access-list 10 pool mypool refCount 0 pool mypool: netmask 255.255.255.0 start 131.107.0.1 end 131.107.0.1 type generic, total addresses 1 , allocated 0 (0%), misses 0 CPE#
(4)验证:使用内网中的任何一台主机都可以ping通internet上的server。
2.4 配置端口映射
(1)PAT存在的的问题:通过配置PAT,只能实现内网主机使用公网IP地址访问internet,但internet的主机无法访问内网主机(如内网的WebServer),这时可以通过端口映射来解决这一问题。
(2)网络拓扑图
(3)在路由器上配置端口映射
//1. 在CPE路由器上配置端口映射 CPE>en CPE#conf t //静态端口映射 CPE(config)#ip nat inside source static tcp 10.0.0.5 80 131.107.0.1 80 CPE(config)#ip nat inside source static tcp 10.0.0.6 80 131.107.0.1 81 CPE(config)#ip nat inside source static tcp 10.0.0.4 25 131.107.0.1 25 CPE(config)#ip nat inside source static tcp 10.0.0.4 110 131.107.0.1 110 CPE(config)#interface fastEthernet 0/1 CPE(config-if)#ip nat inside //指定NAT的内网接口 CPE(config-if)#ex CPE(config)#interface serial 0/0 CPE(config-if)#ip nat outside //指定NAT的外网接口 CPE(config-if)#ex CPE(config)#
(4)验证:通过internet上的PC5访问内网的WebServer、邮件服务器。