Cisco PT模拟实验(19) 路由器的NAT功能配置html
实验目的: 服务器
掌握NAT网络地址转换的原理及功能网络
掌握NAT地址映射和端口映射的配置方法并发
掌握广域网(WAN)接入技术的原理tcp
实验背景:ide
情景一:A公司企业网计划接入互联网,向 ISP申请了一条专线并拥有足够的公有IP地址,现要求在路由器上配置动态NAT,从而实现公司内部主机都能访问外网。同时,为适应公司不断增加的业务需求,公司欲经过Web服务器发布网站,现要求将内网的服务器IP地址映射为固定的全局IP地址,实现外网访问该服务器www服务。 学习
情景二:B公司一样计划接入互联网,但只申请了一个公有IP,不足以分配至内网全部主机,要求实现公司内部主机访问外网,且外网可以访问内网服务器的www服务。测试
技术原理:网站
在互联网中,公有地址用于不一样外网之间通讯,全球惟一而且能在公网上被路由;而私有地址用于网络内部,对于不一样内网,私有地址可重用,但私有地址没法实现不一样”外网-内网“或"内网-内网"之间通讯,由于私有地址不能被路由。它要与外网通讯,必须通过NAT设备(如网关,路由器)。spa
网络地址转换(NAT,Network Address Translation)属于接入广域网(WAN)技术,是一种将私有IP地址转化为公有IP地址的转换技术,主要用于实现内部网络主机访问外部网络的功能。根据转换方式有基于地址映射(三层技术,双向通讯)和基于地址端口映射(四层技术,单向通讯)两种,常见NAT类型包括:
静态NAT:将私网中的主机地址永久地、映射为公网中的固定合法IP地址(一对一)。
动态NAT:经过定义一系列的合法公有地址池,将每一个内部本地地址动态地、一一映射为合法的内部全局地址。
NAPT:将多个内部地址都映射到一个合法公网地址(外网接口或公有地址池),以不一样的协议端口号与不一样的内部地址相对应(多对一)。
端口映射:经过静态配置,将私网中的主机地址及端口映射为一个固定的公有地址及端口(一对一)。
根据NAT模型定义,可将路由器所链接的网络分别视为内部网络(内网)和外部网络(外网)。注意"内网与外网","私网与公网"的区别;
内部地址和外部地址:分别对应于NAT定义的内部网络和外部网络的全部地址;
本地地址:出如今“某个网络”内部的全部地址,包括内部本地地址(Inside Local)和外部本地地址(Inside Global);
全局地址:出如今“某个网络”外部的全部地址,包括内部全局地址(Outside Local)和外部全局地址(Outside Global);
NAT设备在公网和私网之间扮演代理的角色,其特色有:
NAT网关设置在私网到公网的路由出口位置,双向流量必须都要通过NAT网关;
网络访问只能先由私网侧发起,公网没法主动访问私网主机;
NAT网关在两个访问方向上完成两次地址的转换或翻译,出方向作源信息替换,入方向作目的信息替换;
NAT网关的存在对通讯双方是保持透明的;
NAT网关为了实现双向翻译的功能,须要维护一张关联表,把会话的信息保存下来
与通常NAT不一样,NAPT采用TCP端口多路复用方式,经过不一样的协议端口号与不一样的内部地址一一对应提供并发性,内网全部主机都可共享一个公有IP地址以实现对Internet的访问。NAPT能最大限度地节约IP地址资源,同时可隐藏内网主机,有效避免来自外网的***,所以被普遍应用于各类类型Internet接入方式和各类类型的网络中,是最经常使用的NAT类型。
NAPT也称“多对一”的NAT、端口地址转换(Port Address Translations, PAT)、地址重载(Address Overloading)
与动态NAT的区别:NAPT至关于“开启了地址重载的动态NAT”,扩展了对TCP和UDP的端口号的转换
优点:可以使用一个全球有效IP地址得到通用性
缺点:其通讯仅限于TCP或UDP协议
NAT配置基本步骤:①定义NAT内部和外部接口;②定义您想用NAT实现的目标;③配置NAT以实现您在步骤2中所定义的目标;④验证 NAT的运行状况。
Cisco命令 | 命令描述 |
ip nat inside|outside | 定义NAT内部接口或外部接口 |
ip nat pool {name} {Start IP address} {End IP address} |
定义NAT地址池(内部全局地址) |
ip nat inside source |
转换正从内部流往外部的 IP 数据包的源; 转换正从外部流入内部的 IP 数据包的目的。 |
ip nat outside source |
转换正从外部流入内部的 IP 数据包的源; 转换正从内部流往外部的 IP 数据包的目的。 |
Cisco NAT执行顺序(不一样厂商则状况也不一样):对于inside->outside,先路由后NAT;对于outside->inside,先NAT后路由;
Cisco ACL默认拒绝全部未匹配到规则的数据包,在流量控制方面通常会在规则后添加permit any一项,而在NAT容许列表中则不建议使用 permit any,NAT可能消耗过多路由器资源而引起网络故障。
实验设备:Router-PT 3台;Switch_2960 2台;PC 4台,Server 3台;直通线,交叉线,串口线。
实验拓扑:
实验步骤:
新建Cisco PT 拓扑图
为各PC及Server设置IP及网关地址,其中网关地址分别为路由接口的IP地址
对各Router进行相关配置(接口IP、默认路由等) —— 对应Router.Part1
情景一(应用基本的静态、动态NAT技术)
在Router0上定义内外网络接口
在Router0上配置静态NAT —— 对应Router0.Part2.1
在Router0上配置动态NAT —— 对应Router0.Part2.2
情景二(应用静态、动态PAT技术)
在Router2上定义内外网络接口
在Router2上配置端口映射 —— 对应Router2.Part2.1
在Router2上配置NAPT映射 —— 对应Router2.Part2.2
测试各终端(PC、Server)之间的互通性
# PC0、PC1和Server0 设置 192.168.1.2 192.168.1.3 192.168.1.100 //子网掩码和网关 255.255.255.0 192.168.1.1
# Server1 设置 8.8.8.8 //子网掩码和网关 255.255.255.0 8.8.8.1
# PC二、PC3和Server2 设置 172.16.1.2 172.16.1.3 172.16.1.100 //子网掩码和网关 255.255.255.0 172.16.1.1
/*=Part1 Router0 基本配置 */ Router>enable Router#conf t Router(config)#hostname R0 R0(config)#inter f0/0 R0(config-if)#ip address 192.168.1.1 255.255.255.0 //配置f0/0接口 R0(config-if)#no shutdown R0(config-if)#exit R0(config)#interface serial 2/0 R0(config-if)#ip address 12.1.1.6 255.255.255.0 //配置s2/0接口 R0(config-if)#no shutdown R0(config-if)#exit R0(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.6 //默认向出口下一跳转发 /*=Part2.1 静态NAT配置 */ R0(config)#inter f0/0 R0(config-if)#ip nat inside //定义内部接口 R0(config-if)#exit R0(config)#inter s2/0 R0(config-if)#ip nat outside //定义外部接口 R0(config-if)#exit R0(config)#ip nat inside source static 192.168.1.100 12.1.1.5 //配置静态NAT映射 /*=Part2.2 动态NAT配置 */ //因为各PC无需指定映射固定的公有地址,此处配置为动态NAT R0(config)#ip nat pool no-pat 12.1.1.1 12.1.1.3 netmask 255.255.255.0 //建立公有地址池no-pat(3个IP) R0(config)#access-list 7 permit 192.168.1.0 0.0.0.255 //建立访问列表(应映射的内部网络) R0(config)#ip nat inside source list 7 pool no-pat //将访问列表与公有地址池关联(未启用“地址重载”) R0#show ip nat translations //无记录显示 R0#show r
/*=Part1 Router1 基本配置 */ Router>enable Router#conf t Router(config)#hostname R1 R1(config)#inter f0/0 R1(config-if)#ip address 8.8.8.1 255.255.255.0 //配置f0/0接口IP R1(config-if)#no shutdown R1(config-if)#exit R1(config)#inter s2/0 R1(config-if)#ip address 12.1.1.6 255.255.255.0 //配置s2/0接口IP R1(config-if)#clock rate 64000 //必须配置时钟才可通讯 R1(config-if)#no shutdown R1(config-if)#exit R1(config)#inter s3/0 R1(config-if)#ip address 23.1.1.2 255.255.255.0 //配置s3/0接口IP R1(config-if)#clock rate 64000 //必须配置时钟才可通讯 R1(config-if)#no shutdown R1(config-if)#exit ... //实际上,企业网管没法对ISP路由器进行配置,且运营商通常不作外部本地地址的路由转发,故此处不作其余相关配置。
/*=Part1 Router2 基本配置 */ Router>enable Router#conf t Router(config)#hostname R2 R2(config)#inter f0/0 R2(config-if)#ip address 172.16.1.1 255.255.255.0 //配置f0/0接口 R2(config-if)#no shutdown R2(config-if)#exit R2(config)#interface serial 2/0 R2(config-if)#ip address 23.1.1.1 255.255.255.0 //配置s2/0接口 R2(config-if)#no shutdown R2(config-if)#exit R2(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2 //默认向出口下一跳转发 /*=Part2.1 端口映射配置 */ R2(config)#inter f0/0 R2(config-if)#ip nat inside //定义内部接口 R2(config-if)#exit R2(config)#inter s2/0 R2(config-if)#ip nat outside //定义外部接口 R2(config-if)#exit R2(config)#ip nat inside source static tcp 172.16.1.100 80 23.1.1.1 80 //将Server2的内网IP80端口映射到外网IP80端口上 /*=Part2.2 NAPT映射配置 */ //因为只有一个公网IP,此处将外部映射IP设置为外部接口上的IP R2(config)#access-list 5 permit 172.16.1.0 0.0.0.255 //建立访问列表(应映射的内部网络) R2(config)#ip nat inside source list 5 interface Serial2/0 overload //将访问列表与接口地址(单个IP)关联(开启“地址重载”) //命令另外一种形式:ip nat inside source list 5 pool xxx overload //即配置地址池只含1个外网接口的IP地址 R2#show ip nat translations //无记录显示 R2#show r
# A企业网 - NAT测试 PC0:ping 8.8.8.8 //外网链路通 PC1:ping 8.8.8.8 //NAT地址映射均成功 访问 http://8.8.8.8 //访问成功,映射地址固定不变 # Router0 查看映射表 show ip nat translations //有NAT映射记录显示,每台内网主机对应一个公有IP # B企业网 - NAT测试 PC2:ping 8.8.8.8 //外网链路通 PC3:ping 8.8.8.8 //NAT端口映射均成功 访问 http://8.8.8.8 //访问成功 # Router2 查看映射表 show ip nat translations //有记录显示,全部内网主机对应公有IP的随机端口,内网主机被隐藏
后记:关于以上四种NAT类型,我的认为从功能实现上是一个相对合理的划分(即基于三层的地址映射、基于四层的端口映射两种,又分别再细分为静态和动态分配),但这种划分在国内文章并很少见,词条命名是杂乱不统一,甚至概念混淆,如部分文章将NAPT与端口映射(静态)区分开。若是对NAT技术有较为深刻研究或有了解的权威文献,欢迎留言,谢谢
实验环境: Windows 10,Cisco PT 7.0
参考资料:CCNA学习指南(第7版)