Cisco PT模拟实验(19) 路由器的NAT功能配置

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台;直通线,交叉线,串口线。

实验拓扑


blob.png

实验步骤:

        新建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版)

RFC 3022 - Traditional IP Network Address Translator

NAT详解:基本原理、穿越技术(P2P打洞)、端口老化等

相关文章
相关标签/搜索