Cisco Packet Tracer NAT模拟实验

by: 铁乐猫

date: 2020-09-22

cisco packet tracer : 7.2.2

NAT简介

NAT允许将私有IP地址映射到公网(合法的Internet IP) 地址,以此来做到多个内网ip共用一个公网ip之类。

NAT使用场景:

  • 需要连接Internet,但是你的主机没有公网IP地址
  • 更换了一个新的ISP, 需要重新组织网络
  • 需要合并两个具有相同网络地址的内网

NAT一般应用在边界路由器中,比如公司连接Internet的路由器上,其最显著的优点是节约合法公网IP地址。

NAT类型:

  • 静态NAT: 一对一映射,每台主机对应一个真实的IP地址。或一个内网网段共同使用一个真实的外网ip。
  • 动态NAT: 从设置好的公有ip的地址池中提供一个公网iP地址给来申请映射的私有IP地址使用。
  • PAT: 通过端口区分内网主机,将多个私网IP地址映射到一个公网IP。

基础拓扑

如图,左半部分蓝色框内的模拟内网环境,右半部分红色框住的模拟为外网环境。

连好线后,开始配置,中间的route0配置如下:

Route0

  • 端口配置
interface GigabitEthernet0/0
ip address 10.0.0.1 255.255.255.0
duplex auto
speed auto
!
interface GigabitEthernet0/1
ip address 131.107.0.1 255.255.255.0
duplex auto
speed auto
!

其中,ip address 配置ip地址例:

Router0(config)# int gig0/0
Router0(config-if)# ip add 10.0.0.1 255.255.255.0
Router0(config-if)# no shutdown
  • 静态路由配置
ip route 0.0.0.0 0.0.0.0 131.107.0.254

Route1

  • 端口配置
interface GigabitEthernet0/0
ip address 131.107.0.254 255.255.255.0
duplex auto
speed auto
!
interface GigabitEthernet0/1
ip address 202.99.160.1 255.255.255.0
duplex auto
speed auto
!
  • 静态路由配置
ip route 131.107.0.0 255.255.255.0 131.107.0.1
ip route 0.0.0.0 0.0.0.0 202.99.160.2

模拟的客户端pc0/pc1/Server0

直接点击打开使用图形界面配置上各自的ip和网关即可。不再详说。

配置静态NAT

模拟静态地址规划一

机器名称 :pc0

私网ip地址: 10.0.0.3

映射公网地址: 131.107.0.3

第一个实验我们先做一对一映射的模拟,简单的就是将pc0访问外网的时候映射出去变为131.107.0.3这个地址。

Router0 配置nat inside和outside

Router0(config)# int gig0/0
Router0(config-if)# ip nat inside Router0(config)# int gig0/1
Router0(config-if)# ip nat outside

主要是看ip nat inside ip nat outside

inside 可以理解为内网进入端(被转换端),outside理解为公网出口端。

配置nat 一对一映射

Router0(config)# ip nat inside source static 10.0.0.3 131.107.0.3

主要看source来源,static的话就是精准的一对一映射。

  • 验证

开启debug ip nat查看

Router0# debug ip nat

pc0 ping 外网服务器(server0)

C:\>ping 202.99.160.2

Pinging 202.99.160.2 with 32 bytes of data:

Reply from 202.99.160.2: bytes=32 time=1ms TTL=126
Reply from 202.99.160.2: bytes=32 time=7ms TTL=126
Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
Reply from 202.99.160.2: bytes=32 time<1ms TTL=126 Ping statistics for 202.99.160.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 7ms, Average = 2ms

debug中可看到

Router>
NAT: s=10.0.0.3->131.107.0.3, d=202.99.160.2 [47]
NAT: s=10.0.0.3->131.107.0.3, d=202.99.160.2 [48]
NAT: s=10.0.0.3->131.107.0.3, d=202.99.160.2 [49]
NAT: s=10.0.0.3->131.107.0.3, d=202.99.160.2 [50]
NAT*: s=202.99.160.2, d=131.107.0.3->10.0.0.3 [93]
NAT: s=10.0.0.3->131.107.0.3, d=202.99.160.2 [51]
NAT*: s=202.99.160.2, d=131.107.0.3->10.0.0.3 [94]
NAT: s=10.0.0.3->131.107.0.3, d=202.99.160.2 [52]
NAT*: s=202.99.160.2, d=131.107.0.3->10.0.0.3 [95]
NAT: s=10.0.0.3->131.107.0.3, d=202.99.160.2 [53]
NAT*: s=202.99.160.2, d=131.107.0.3->10.0.0.3 [96]
NAT: s=10.0.0.3->131.107.0.3, d=202.99.160.2 [54]
NAT*: s=202.99.160.2, d=131.107.0.3->10.0.0.3 [97]
NAT: expiring 131.107.0.3 (10.0.0.3) icmp 44 (44)
NAT: expiring 131.107.0.3 (10.0.0.3) icmp 45 (45)
NAT: expiring 131.107.0.3 (10.0.0.3) icmp 46 (46)
NAT: expiring 131.107.0.3 (10.0.0.3) icmp 47 (47)
NAT: expiring 131.107.0.3 (10.0.0.3) icmp 48 (48)
NAT: expiring 131.107.0.3 (10.0.0.3) icmp 49 (49)
NAT: expiring 131.107.0.3 (10.0.0.3) icmp 50 (50)
NAT: expiring 131.107.0.3 (10.0.0.3) icmp 51 (51)

配置范围映射(PAT)

一组内网映射到一个公网ip(共用)

首先要先创建一个list

  • access-list 配置

这里配置地址表主要是应用于之后的nat转发中,毕竟很多时候一整个网段映射到同一公网ip才方便。

access-list 7 permit 10.0.0.0 0.0.0.255
  • ip nat inside source list 配置
ip nat inside source list 7 interface GigabitEthernet0/1 overload

list的话就是多个内网ip映射重载,所以后面跟的是接口。最主要的区别是后面跟了个overload。

  • 验证

    用pc1 ping server0

    C:\>ping 202.99.160.2 -n 16
    
    Pinging 202.99.160.2 with 32 bytes of data:
    
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time=1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time=1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time=1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time=1ms TTL=126
    Reply from 202.99.160.2: bytes=32 time<1ms TTL=126

    debug中可以看到由于没有一对一映射成具体的ip,所以直接使用的是出口的ip地址:131.107.0.1

    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [47]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [98]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [48]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [99]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [49]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [100]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [50]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [101]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [51]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [102]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [52]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [103]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [53]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [104]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [54]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [105]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [55]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [106]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [56]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [107]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [57]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [108]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [58]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [109]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [59]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [110]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [60]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [111]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [61]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [112]
    NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [62]
    NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [113]
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 47 (47)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 48 (48)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 49 (49)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 50 (50)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 51 (51)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 52 (52)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 53 (53)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 54 (54)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 55 (55)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 56 (56)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 57 (57)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 58 (58)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 59 (59)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 60 (60)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 61 (61)
    NAT: expiring 131.107.0.1 (10.0.0.4) icmp 62 (62)

配置动态NAT

这种类型的Nat可以实现映射一个私有IP地址到注册IP地址池中的一个注册IP地址.但必须保证拥有足够的真实IP,保证每个在因特网中收发包的用户都有真实的IP可用.

比如: 你有3个外网IP,但内网有5台机器,使用动态NAT,只能同时有3台计算机访问Internet.

将上面配置的静态NAT保存为static_nat.pkt,再另存一份为dynamic_nat.pkt

以下实验在dynamicNAT.pkt上修改。

清除之前对route0路由器的静态配置:

Router0(config)#no ip nat inside source static 10.0.0.3 131.107.0.3
Router0(config)#no ip nat inside source list 7 interface GigabitEthernet0/1
  • 动态nat规划
//配置动态NAT
//定义访问控制列表,将网段添加到列表中
access-list 8 permit 10.0.0.0 0.0.0.255
//定义公网地址池,名称定义为tielemao
ip nat pool tielemao 131.107.0.1 131.107.0.3 netmask 255.255.255.0
//将列表list 8 和 公网地址池tielemao 关联
ip nat inside source list 8 pool todd

如下:

Router0(config)#access-list 8 permit 10.0.0.0 0.0.0.255
Router0(config)#ip nat pool tielemao 131.107.0.1 131.107.0.3 netmask 255.255.255.0
Router0(config)#ip nat inside source list 8 pool tielemao
ipnat_add_dynamic_cfg: id 2, flag 5, range 0 poolstart 131.107.0.1 poolend 131.107.0.3 id 2, flags 0, domain 0, lookup 0, aclnum 8 , aclname 8 , mapname idb 0
  • 验证

同时用pc0 和pc1 ping server0, debug信息中可以看到分别自动从池中拿取了131.107.0.1和131.107.0.2

NAT: s=10.0.0.3->131.107.0.2, d=202.99.160.2 [57]
NAT*: s=202.99.160.2, d=131.107.0.2->10.0.0.3 [136]
NAT: s=10.0.0.4->131.107.0.1, d=202.99.160.2 [83]
NAT*: s=202.99.160.2, d=131.107.0.1->10.0.0.4 [137]
....
NAT: expiring 131.107.0.1 (10.0.0.4) icmp 90 (90)
NAT: expiring 131.107.0.2 (10.0.0.3) icmp 62 (62)

配置PAT

简单来说就是类似将内网的服务通过端口映射出公网给外面的也能访问。

保存dynamic_nat.pkt后,另存一份pat_nat.pkt, 在pat_nat.pkt进行修改,

另外增加三台server机器做为模拟. 拓扑如下:

server1: 10.0.0.5 提供80端口web服务

server2: 10.0.0.6 8080 web

server3: 10.0.0.7 443 https

清除之前的nat配置

Router0(config)#no ip nat inside source list 8 pool tielemao
Router0(config)#no access-list 7 permit 10.0.0.0 0.0.0.255

启用PAT,命令和之前的动态NAT命令极其相似, 规划如下:

access-list 8 permit 10.0.0.0 0.0.0.255 # list可以不变
ip nat pool tielemao 131.107.0.1 131.107.0.3 netmask 255.255.255.0 # 仍然是有个pool池
//注意区别在后面加了个overload,即启用PAT
ip nat inside source list 8 pool tielemao overload

配置如下,因list和pool都是在之前就有创建,所以其实就只敲一条命令就成了:

Router0(config)#ip nat inside source list 8 pool tielemao overload

ipnat_add_dynamic_cfg: id 3, flag 5, range 0
poolstart 131.107.0.1 poolend 131.107.0.3
id 3, flags 0, domain 0, lookup 0, aclnum 8 ,
aclname 8 , mapname idb 0

server1-3分别ping server0,可以ping通。

端口映射,要想让内网的服务器供外网访问,还需要做端口映射:

//端口映射,将我们拥有的三个公网ip的80端口分别映射给三台服务器
ip nat inside source static tcp 10.0.0.5 80 131.107.0.3 80
ip nat inside source static tcp 10.0.0.6 443 131.107.0.2 443
ip nat inside source static tcp 10.0.0.7 80 131.107.0.1 8080

实际配置如下:

Router0(config)#ip nat inside source static tcp 10.0.0.5 80 131.107.0.3 80
Router0(config)#ip nat inside source static tcp 10.0.0.6 443 131.107.0.2 443
Router0(config)#ip nat inside source static tcp 10.0.0.7 80 131.107.0.1 8080

验证,这次使用外网server0来访问内网的三台server

选择Desktop中的Web Browser模拟浏览器访问,如图:

为了便于区别,可以分别在server1,2,3的Services上编辑一下hello world, 将相应的名字添加进去。

如图,记得修改完成后点击save:

server1 80

server2 443

server3 8080

需要注意的是: 内网地址访问外网地址时,PAT对外地址地址只有一个,

尽管这里是用了3个外网地址做PAT,但其实所有机器访问外网,路由器只会用一个外网地址,剩下两个没有用到.

但是,做端口映射的时候,是可以用到剩下的两个IP的!

也就是,外网访问内网服务器时才会用到做过端口映射的IP.

所以,一般做PAT地址转换,一组机器只用一个公网IP.

实验至此,完美完成预期,也加深了对nat的理解。

end

Cisco Packet Tracer NAT模拟实验的更多相关文章

  1. IP组网实验(使用Cisco Packet Tracer路由器模拟软件)

    最近计网课讲到了以太网,第二个计网实验就是IP组网实验.这个实验主要使用了netsim这个路由器模拟软件.怎奈mac上没有,于是用Cisco Packet Tracer进行了一次模拟(其实就是实验中的 ...

  2. Cisco Packet Tracer 6.0 实验笔记

    开篇:组建小型局域网 实验任务 1.利用一台型号为2960的交换机将2pc机互连组建一个小型局域网: 2.分别设置pc机的ip地址: 3.验证pc机间可以互通. 实验设备 Switch_2960 1台 ...

  3. IPSecVPN介绍 & (Cisco Packet Tracer)IPSecVPN实验演示

    一.基础知识 VPN(Virtual Private Network)虚拟专有网络,即虚拟专网.VPN可以实现在不安全的网络上,安全的传输数据,好像专网!VPN只是一个技术,使用PKI技术,来保证数据 ...

  4. 对比网络模拟器软件——Cisco Packet Tracer、华为eNSP、H3C Cloud Lab

    1.软件介绍 1.1 Cisco Packet Tracer Cisco Packet Tracer(以下简称PT)是一款由思科公司开发的,为网络课程的初学者提供辅助教学的实验模拟器.使用者可以在该模 ...

  5. Linux中安装Cisco Packet Tracer

    Cisco Packet tracer是什么? Cisco Packet Tracer是一个强大的网络模拟工具,用于进行Cisco认证时的培训.它为我们 提供了各个路由器和网络设备的良好的接口视图,这 ...

  6. Cisco Packet Tracer中通过集线器组网

    Cisco Packet Tracer中可以通过集线器将多台电脑完成通信. Cisco Packet Tracer 6.2.0 一.添加三台电脑设备 1.按照下图1.2步骤操作,2步骤执行三次,拖拽P ...

  7. Cisco Packet Tracer中两台电脑通信设置

    Cisco Packet Tracer是网络初学者仿真模拟网络环境的必备工具.今天我们来模拟下两台电脑之间的通信. Cisco Packet Tracer版本6.2.0 一.添加设备 1.这里添加一个 ...

  8. Cisco学习记录(一):Cisco Packet Tracer官网下载方法

    通过Cisco Packet Tracer学习计算机网络知识 本人大三狗一枚,一直以来都在学java, python, web开发的我,经过一番决定,毅然决然要开始深入学习计算机网络!通过Cisco ...

  9. Cisco Packet Tracer的使用(一)

    Cisco Packet Tracer 是由Cisco公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计.配置.排除网络故障提供了网络模拟环境.用户可以在软件的图形用户界面上直接使用拖曳方法 ...

随机推荐

  1. IDEA主题加高亮

    IntelliJ Idea的黑色主题,使用就是file-->import settings 选择压缩包里的jar包,主题就被导入了,之后会提示重启,重启完就可以在设置中使用了. IDEA主题下载 ...

  2. [大雾雾雾雾] 告别该死的 EFCore Fluent API (续)

    朋友们好啊, 我是 .NET 打工人 玩双截棍的熊猫 刚才有个朋友问我 猫猫发生什么事了 我说 怎么回事? 给我发了一张截图 我一看!嗷!原来是zuo天有两个数据库, 一个四十多岁,一个三十多岁 它们 ...

  3. 使用pdfFactory隐藏文档中的隐私信息

    分享PDF文档时,文档中可能会存在一些隐私信息,比如用户名.用户的邮件地址.电话号码等信息.为了更好地保护原有文档内容的完整性,大家可以在生成PDF时,使用pdfFactory的隐藏信息功能,删除或遮 ...

  4. 如何使Camtasia的抠像效果更真实自然

    相信大家都知道录像编辑软件Camtasia的"移除颜色"可以抠像换背景,详细操作可以看小编的另一篇教程 <如何用Camtasia为微课换上一个好看的背景>.接下来,小编 ...

  5. nginx学习首页随机模块

    在default.conf下加入这行开启随机模块,在root目录下放入几种不同的html 改完保存下,使用命令检查nginx语法是否正确 nginx -tc /etc/nginx/nginx.conf ...

  6. MySQL给临时表分组后Max函数无效

    有道练习题"取得平均薪水最高的部门的部门编号(至少给出两种解决方案)", 为什么我给临时表分组后Max函数就无效了?不分组就可以,但是无法查询到DEPTNO,MySQL版本8.0+ ...

  7. 【数据结构模版】可持久化线段树 && 主席树

    浙江集训Day4,从早8:00懵B到晚21:00,只搞懂了可持久化线段树以及主席树的板子.今天只能记个大概,以后详细完善讲解. 可持久化线段树指的是一种基于线段树的可回溯历史状态的数据结构.我们想要保 ...

  8. MySQL的两种日志类型,redo log,binlog

    文章内容学习:极客时间-林晓彬老师-MySQL实战45讲 整理而得 我们知道MySQL数据库在发生意外宕机的情况下,可以将数据恢复到历史的某个时间点,能实现这个功能依靠的是日志,MySQL提供两种类型 ...

  9. Python基于Socket实现简易多人聊天室

    前言 套接字(Sockets)是双向通信信道的端点. 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. 套接字可以通过多种不同的 ...

  10. H3CNE(教程)

    培训机构提供的ppt,可能也是来自于官方提供,涉及到H3CNE认证考试中的全部知识点,学真技术还得看这个.包括帧中继,哪怕是淘汰了十多年了. https://huxiaoyao.lanzous.com ...