基于eNSP的NAT/NAPT协议仿真实践

时间:2022-10-30 04:36:03

一. 基本原理

eNSP(Enterprise Network Simulation Platform)是一款由华为提供的、可扩展的、图形化 操作的网络仿真工具平台,主要对企业网络路由器、交换机进行软件仿真,可呈现真实设备 实景,支持大型网络模拟,用户只需配置网络拓扑和设备即可实现网络协议模拟并联合 Wireshark 进行抓包分析。

NAT(Network Address Translation,网络地址转换)用于专用网内部的一些主机本在已 分配到了本地私有 IP 情况下借助对外路由设备访问因特网的需求,NAT 的实现方式有三种, 静态转换 Static Nat、动态转换 Dynamic Nat 和端口多路复用 OverLoad。

本实验旨在通过构建一个包含三个子网的网络拓扑,掌握 NAT 和 NAPT 协议的区别及在网络层的分组生成异同,如对外地址循环分配、重新分配、同一 IP 的分组首部标识变化、端口号变化等。

二. NAT协议仿真拓扑

基于eNSP的NAT/NAPT协议仿真实践

三.R1,R2配置及相关命令解释

1.R1配置信息

​ 1.1 进入系统视图并查看配置信息

system #进入系统视图
display current-configuration #查看配置信息
sysname R1

​ 通过配置信息可以看到,此时0/0/0,0/0/1, 0/0/2以及默认接口NULL0均未配置IP地址。

基于eNSP的NAT/NAPT协议仿真实践

​ 1.2 配置访问控制信息及NAT地址块

acl number 2001
rule 5 permit source 20.1.1.0 0.0.0.255 #允许20.1.1.0 - 20.1.1.255的IP通过该网络
nat address-group 1 202.169.10.50 202.169.10.60 #该NAT路由器对外的公网IP为202.169.10.50——202.169.10.60

​ 1.3 配置0/0/0接口

​ 0/0/0端口是该NAT路由器中对外的接口,其配置比0/0/1,0/0/2,NULL0要复杂。

interface GigabitEthernet0/0/0
ip address 202.169.10.1 255.255.255.0 #为端口0/0/0分配IP arp-proxy enable #开放arp协议权限 nat static global 202.169.10.5 inside 10.1.1.1 netmask 255.255.255.255 #给10.1.1.1静态绑定202.169.10.5 nat outbound 2001 address-group 1 no-pat # 将acl 2001和地址块绑定,nat给acl 2001动态分配IP地址,并禁止端口复用

​ 1.4 配置0/0/1,0/0/2.NULL0默认接口并返回

interface GigabitEthernet0/0/1
ip address 10.1.1.254 255.255.255.0 interface GigabitEthernet0/0/2
ip address 20.1.1.254 255.255.255.0 interface NULL0
ip route-static 0.0.0.0 0.0.0.0 202.169.10.2 #配置缺省地址,即默认路由
return

2.R2配置信息

system
sysname R2 #重命名为R2 #配置0/0/0接口和回环地址
interface GigabitEthernet0/0/0
ip address 202.169.10.2 255.255.255.0 interface LoopBack0
ip address 202.169.20.1 255.255.255.0
return

3.PC-1,PC-2,PC-3和server的配置信息

PC-1
IP:10.1.1.1
子网掩码:255.255.255.0
网关:10.1.1.254 PC-2
IP:20.1.1.2
子网掩码:255.255.255.0
网关:20.1.1.254 PC-3
IP:20.1.1.3
子网掩码:255.255.255.0
网关:20.1.1.254 Server
IP:10.1.1.3
网关:10.1.1.254

四. 实验现象

在设置no-pat的情况下:

PC-1访问R2

基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践

PC-1访问Server

基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践

PC-2访问R2

基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践

PC-2访问Server

基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践

给R1设置端口复用:

interface GigabitEthernet0/0/0
undo nat outbound 2001 address-group 1 no-pat
nat outbound 2001 # 启用pat

在设置端口复用的情况下:

PC-1访问R2

基于eNSP的NAT/NAPT协议仿真实践

基于eNSP的NAT/NAPT协议仿真实践PC-1访问Server

基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践

可以看出,PC-1访问R2和Server时,NAT与NAPT一样。这是因为PC-1的IP地址为静态映射的方式。

PC-2访问R2

基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践

PC-2访问Server

基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践

五.结果分析

从PC-1访问R2和Server可以看出,在使用Static Nat时,其内网IP和外网始终绑定不变。

Dynamic Nat会根据分配的地址池中的IP循环分配,但是当分配到60以后,由于此时IP地址还未回收,出现了request timeout。也就是说,动态分配地址池,IP地址有一定的回收时间,使用过该公网IP之后,需要等一段时间回收之后才可以再次使用。

基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践

Overload即端口复用,如上图,我们用PC-2给R2发送了一个UDP包,此时使用的公网IP是R1 0/0/0接口的地址。同时,端口号从30000映射成了40。

当我们将PC2和PC3的端口号都设置成30000并给R2发送udp包时,会出现如下情况:

基于eNSP的NAT/NAPT协议仿真实践
基于eNSP的NAT/NAPT协议仿真实践

R2无法到达PC2和PC3,并发送一个ICMP终点不可达报文。也就是说NAPT在实现IP映射的同时,也实现了端口号的映射。同时通过端口号,标识了内网的计算机。这些端口往往是一次性,而且唯一的。

因此某种意义上来说,NAPT破坏了分层的清晰程度。

基于eNSP的NAT/NAPT协议仿真实践的更多相关文章

  1. atitit.基于http json api 接口设计 最佳实践 总结o7

    atitit.基于http  json  api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...

  2. Python 基于urllib.request封装http协议类

    基于urllib.request封装http协议类 by:授客QQ:1033553122 测试环境: Python版本:Python 3.3   代码实践 #!/usr/bin/env python ...

  3. Nginx配置支持https协议-应用实践

    Nginx配置支持https协议-应用实践 https简介 HTTPS 是运行在 TLS/SSL 之上的 HTTP,与普通的 HTTP 相比,在数据传输的安全性上有很大的提升. TLS是传输层安全协议 ...

  4. QCon技术干货:个推基于Docker和Kubernetes的微服务实践

    2016年伊始,Docker无比兴盛,如今Kubernetes万人瞩目.在这个无比需要创新与速度的时代,由容器.微服务.DevOps构成的云原生席卷整个IT界.在近期举办的QCon全球软件开发大会上, ...

  5. 网络协议之:基于UDP的高速数据传输协议UDT

    目录 简介 UDT协议 UDT的缺点 总结 简介 简单就是美.在网络协议的世界中,TCP和UDP是建立在IP协议基础上的两个非常通用的协议.我们现在经常使用的HTTP协议就是建立在TCP协议的基础上的 ...

  6. 基于HTML5的燃气3D培训仿真系统

    最近上线了的基于HTML5的燃气3D培训仿真系统,以前的老系统是采用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但因为这次新产品需求要求 ...

  7. 基于nginx+lua+redis高性能api应用实践

    基于nginx+lua+redis高性能api应用实践 前言 比较传统的服务端程序(PHP.FAST CGI等),大多都是通过每产生一个请求,都会有一个进程与之相对应,请求处理完毕后相关进程自动释放. ...

  8. DCOS实践分享(3):基于Mesos 和 Docker企业级移动应用实践分享

    2016年1月24日 8:00—19:00 北京万豪酒店(东城区建国门南大街7号) @Container大会是由国内容器社区DockOne组织的专为一线开发者和运维工程师设计的*容器技术会议,会议强 ...

  9. 基于Armitage的MSF自动化集成攻击实践

    基于Armitage的MSF自动化集成攻击实践 目录 0x01 实践环境 0x02 预备知识 0x03 Armitage基础配置 0x04 Nmap:Armitage下信息搜集与漏洞扫描 0x05 A ...

随机推荐

  1. HTML如何让文本两端对齐

    <p style="text-align:justify; text-justify:inter-ideograph;>日本驻华大使丹羽宇一郎:日中关系比夫妻还紧密日本驻华大使丹 ...

  2. E-Form&plus;&plus;图形可视化源码库新增同BCGSoft的Ribbon结合示例

    2015年11月20日,来自UCanCode E-Form++源码库的开发团队消息,E-Form++正式提供了同BCGSoft的Ribbon界面风格相结合的示例,如下图: 下载此示例请访问: http ...

  3. C&num;------如何获取本机IP地址

    转载: http://www.narkii.com/club/thread-396944-1.html 代码: private string GetIpAddress() { string hostN ...

  4. Xcode7中,如何新建category分类

    易忘,所以留存: 1, 2, 3, 结果如下: 补充: http://tech.meituan.com/DiveIntoCategory.html

  5. compiler 学习

    一款强大的编译器LLVM:http://llvm.org/docs/GettingStarted.html#layout http://llvm.org/docs/LangRef.html http: ...

  6. 山东理工大学ACM平台题答案关于C语言 1137 C&sol;C&plus;&plus;经典程序训练7---求某个范围内的所有素数

    C/C++经典程序训练7---求某个范围内的所有素数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 求小于n的所有素数,按照每行 ...

  7. Windows 10 TH2

    Windows 10 TH2到底更新了啥? 15年11月,微软正式向Windows 10用户推送了Threshold 2(简称TH2)更新, 也就是传说中的November Update.更新后系统版 ...

  8. ibatis的优缺点及可行性分析

    1.优点 简单: 易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现. 实用: 提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了DAO框架,可以使我 ...

  9. 重温《STL源码剖析》笔记 第六、七、八章 next&lowbar;permutation &lpar;字典序)

    源码之前,了无秘密  ——侯杰 第六章算法 next_permutation 比如:01342 -> 01423 -> 01432 方法:从尾端开始往前寻找两个相邻的元素,令第一个元素为* ...

  10. java 中的引用数据类型

    字符串String 在java 中,字符串不是基本数据类型,而是String 类的对象,当我们创建一个字符串的时候,真的是要使用new 来调用String 构造函数 String str = new ...