📖 前言:在IT领域,网络协议的理解和掌握是至关重要的。GNS3和Wireshark是非常实用的工具,它们可以帮助你深入了解TCP/IP协议和网络的运作情况。
目录
🕒 1. 网络协议分析工具——GNS3
GNS3 是一款图形化的网络模拟软件。
- 模拟器的核心是 Dynamips 程序,通过构建一个虚拟的环境来运行真实的路由器网际操作系统(Internet Operating Systems,IOS)。
- GNS3 是 Dynamips 的一种图形化前端工具,提供了友好的用户界面。
支持的网络设备包括:Cisco 路由器、(1700/2600/2691/3600/3725/3745/7200)、防火墙(PIX、ASA)、入侵检测系统(IDS)、交换机、Juniper 路由器、甚至能连接到实际网络中,处理真实的网络流量。
🔎 GNS3安装和使用详细图文教程,避免各种烦人报错
这里讲一下遇到报错的两个解决方案,正常的话可以忽略下文。
①禁用VirtualBox网卡(解决90%的问题):
网络和Internet设置 -> 更改适配器选项 -> VirtualBox Host-Only Network 右键 -> 禁用
②将DHCP改成静态IP(解决100%的问题):
1、按“Enter”键
2、按方向键选择“Networking”,之后按“Enter”键
3、按方向键将光标移到
iface eth0 inet dhcp
那里,如下图修改(改成静态)
4、按
Ctrl + O
保存,按“
Enter
”键,再按
Ctrl + X
重启
5、可以看到已经配置好静态IP了,接下来去VM设置一下
6、然后点“确定”,之后去设置点开“网络和Internet”,如下图修改
7、命令行 ->
ipconfig
检查一下是否修改成功,之后命令行再
ping
一下看看是否正常
8、重启一下GNS3软件,看到绿色灯亮就是正常啦
🕘 1.1 快速上手
- 在工作区创建一个网络。
- 在工具栏中点击启动/恢复所有设备(Start/Resume all devices)按钮,启动所有设备。
- 在设备(路由器或计算机等)上单击右键,选择控制台(Console)命令,可打开一个连接到设备的 Telnet 配置窗口,在其中可执行设备命令。
- 在链路上单击右键,选择开始捕获(Start Capture)命令,之后会弹出Wireshark并捕获经过该链路的分组后进行分析。
- 用文件(File)菜单下的保存工程(Save Project)或将工程保存为(Save Project as)命令可将仿真拓扑及其设备配置保存到一个工程文件中(文件扩展名为gns3,不要使用中文命名)。这样再次用GNS3打开工程文件后,可恢复仿真网络拓扑和设备的配置信息。
🕘 1.2 网际操作系统 IOS
网际操作系统(Internet Operation System,IOS)是Cisco 公司的交换和路由产品的软件平台,给不同需求的客户提供了一个统一的操作控制界面。
IOS 不仅支持标准的网络互联协议,如 RIP、EIGRP、OSPF、ISIS、BGP等,还支持大量 Cisco 私有的网络互联协议。
此外,IOS 还集成了如 Firewall、NAT、DHCP、FTP、HTTP、TFTP、Voice、Multicast 等诸多服务功能,是最为复杂和完善的网络操作系统之一。
IOS 的命令行接口(Command-Line Interface,CLI)是配置、监控和维护 Cisco 设备的最主要用户接口。
CLI 有多种模式:
- user EXEC(用户模式)
- privileged EXEC (enable)(特权模式,也称使能模式)
- Global configuration(全局配置模式)
- Interface configuration(接口配置模式)
- ROM monitor(ROM监控模式)
用户模式:
- 用户登录到交换机、路由器时,就处于用户模式,用户模式下只有少量命令可以使用。
特权模式:
- 用户可以执行所有的 EXEC 命令。
- EXEC 是 IOS 的命令解释器,用于解释和执行用户输入的命令。
全局 / 接口配置模式:
- 各种配置模式用于设置全局、接口或协议等的运行参数。
- 参数可在特权模式下用 write 命令进行保存,当交换机或路由器重启后仍然有效。
ROM 监控模式:
- 用于设备恢复,当交换机或路由器由于 IOS 镜像或配置文件损坏而无法正常启动时,就进入 ROM monitor 模式。
当前可用的 CLI 命令集与所在的模式有关。
命令模式访问方法提示符退出方法用途User EXEC连接设备Router>输入命令
logout
或
quit
改变终端设置
执行基本测试
显示系统信息Privileged EXEC在User EXEC 模式下输入命令
enable
(若设置了enbale密码,还需输入密码)Router#输入命令
disable
或
exit
,退回到UserEXEC模式执行
show
和
debug
命令
向设备复制镜像文件
重启设备
管理设备配置文件
管理设备文件系统Global configuration在 Privileged EXEC 模式下输入命令
configure terrminal
(简写
conf t
)Router(config)#输入命令
exit
或
end
,或按
Ctrl+Z
组合键,退回到Privileged EXEC 模式设置设备全局属性Interface configuration在Global configuration模式下输入命令
interface
(简写
int
)Router(config-if)#输人命令
exit
退回到Global Configuration模式
输人命令
end
,或按Ctrl+Z组合键,退回到Privileged EXEC模式设置指定端口属性Line configuration在Global configuration模式中下输入命令
line vty
或
line console
Router(config-line)#输人命令
exit
退回到Global Configuration模式
输人命令
end
退回到Privileged EXEC模式设置指定终端属性ROM configuration在privileged EXEC模式下输入命令reload,在系统启动前60s内按Ctrl+C组合键>
或boot>或rommon#>
注:#代表行号,每出现一行新的提示符,行号加1输入continue命令设备无法加载有效镜像时,默认进入ROM monitor模式
恢复设备IOS镜像文件
密码重置
CLI 命令使用:
- CLI 命令关键字可缩写,只要当前已输入的命令字符能与其他命令相区分即可。 - 例如,“
configure termina
l” 可简写为 “conf t
”。 - 输入命令时,按
Tab
键也可自动补全命令关键字。 - 在任何模式下输入问号“
?
”,IOS 会列出当前可用的命令集。 - IOS 还支持字帮助和命令语法帮助功能。 - 输入命令关键字前面的若干字符后,紧接着输入问号“?”(注意之间没有空格),可以列出以已输入字符开始的所有可用的命令,这称为字帮助。- 输入命令关键字(可缩写)后,再输入一个空格,然后再输入问号,IOS会提示后续的命令关键字或参数,这称为命令语法帮助。
- IOS 会记录过去最近输入的 20 条命令,可用上下箭头或Ctrl-P 和 Ctrl-N 重新显示历史命令并执行。
- 几乎所有的配置命令前都可增加 “no” 关键字,用于执行与命令功能相反的操作。 - 例如,“
no shutdown
”表示端口开启。 - CLI 命令对字母大小写不敏感,但设置的各种密码是大小写敏感的。
🕒 2. Wireshark的使用
🕘 2.1 概述
Wireshark 是一款开源的分组嗅探工具(Packet Sniffer)。
- 支持在多种网络接口上捕获分组: - 如,Ethernet、PPP、SLIP、HDLC、WLAN、FDDI、ATM、Frame Relay、WLAN、Loopback、USB、Bluetooth、IrDA 等。- 受操作系统支持的限制,在不同系统上支持的网络接口类型有所区别。
- 支持上百种协议的分组结构分析。
分组嗅探器包括两部分:
- 分组捕获器(Packet Capture Library),用于复制从指定接口发送和接收的所有数据链路层帧;
- 分组分析器(Packet Analyzer),用于分析捕获的分组。 - 如,显示分组的协议层次及其字段内容、追踪 TCP流、统计协议分布、分组长度分布等。
从指定网络接口捕获分组时,需要将网络适配器(网卡)的工作模式设置为混杂模式(Promiscuous Mode),这样分组嗅探器就能复制到达该接口的(发送或接收)所有的数据链路层帧。
🕘 2.2 快速上手
分组列表窗口(Packet-Listing Window):
- 位于主界面上部,显示了所有已捕获的分组;
- 其中的每一行都是一个捕获的分组的概要信息,包括:分组编号(NO.,注意该编号是由 Wireshark 分配的,并不是分组任何协议的首部字段)、捕获时间(Time)、分组源地址(Source)、分组目的地址(Destination)、协议(Protocol,分组的最高层协议)、分组长度(Length,字节数)以及协议的相关信息(Info.)等。
- 用鼠标单击某一列的标题,就可按该列排序分组的显示顺序。
分组首部详细信息窗口(Packet-Header Details Window):
- 位于主界面中间;
- 显示了在分组列表窗口中被选中分组的各层协议的详细首部字段信息,包括:数据链路层协议首部、IP 协议首部、传输层协议(如TCP或UDP)首部、应用层协议首部以及数据。
- 显示的每一层协议的首部信息可通过点击协议名称前的符号展开或隐藏。
分组内容窗口(Packet-Content Window):
- 位于主界面下部;
- 以十六进制字符和 ASCII 字符格式显示了在分组列表窗口中被选中分组的全部内容。
- 工具栏和分组列表窗口之间是分组显示过滤器的设置文本框。在此可输入显示过滤器,选择要在分组列表窗口中显示的捕获分组。
在 GNS3 链路上点击右键,选择开始捕获(Start Capture)命令会自动启动 Wireshark。
- 可通过配置设置成捕获分组但不启动 Wireshark。
在 GNS3 链路上点击右键,选择停止捕获(Stop Capture)命令,可结束分组捕获,但不会关闭 Wireshark。
此时可在 Wireshark 中对已经捕获的分组进行各种分析,还可以通过保存(Save)命令(在 File 菜单下)将捕获的分组存储到文件中。
Wireshark 支持将捕获的分组保存为多种格式的文件,如文本文件、pcap文件、enc文件、trc文件等。
Wireshark 捕获(Capture)菜单下包含有捕获控制命令和捕获选项设置命令等;
概要(Summary)菜单下包含有 Wireshark 提供的流量分析、统计等相关命令。
🕘 2.3 过滤器
有两种类型的过滤器(Filter):
- 捕获过滤器(Capture Filter):用于在捕获分组时设置过滤条件,只有满足条件的分组才被捕获。
- 显示过滤器(Display Filter):用于在分组显示时设置过滤条件,只有满足条件的分组才被显示。 - 显示过滤器并没有丢弃任何捕获的分组,只是不显示不满足条件的分组。
这两种过滤器的语法不同。
捕获过滤器(Capture Filter)采用 libcap 过滤语法。
一个捕获过滤器是一个简单表达式(Primitive Expression),或由一组简单表达式通过逻辑关联词“and”或“or”连接而成。
[not] primitive [and | or [not] primitive …]
🔎 libcap 语法
选择捕获(Capture)菜单下的选项(Options)命令可打开捕获过滤器设置窗口。
可在捕获过滤器按钮(Capture Filter)后的文本框中输入捕获过滤器表达式,或点击捕获过滤器按钮,在弹出的捕获过滤器窗口中选择已存储的表达式。
显示过滤器(Display Filter)由协议及协议字段满足的条件构成。
- 协议及协议字段名称都采用小写;
- 条件: - 可以用比较运算符比较协议字段值,用比较结果作为过滤条件;- 可以用逻辑运算符连接多个比较表达式,构成复杂的显示过滤器。
- 对 Wireshark 支持的每一种协议,分组首部详细信息窗口中列出的所有协议字段都可作为显示过滤器的设置字段。
比较运算符有两种表示方法:英文字符、类似于 C 语言运算符
英文字符类 C 运算符描述例子eq==相等ip.src == 10.0.0.5ne!=不相等ip.src != 10.0.0.5gt>大于frame.len > 100lt<小于frame.len < 1000ge>=大于或等于frame.len ge 0x100le<=小于或等于frame.len le 0x20
逻辑运算符
英文字符类 C 运算符描述例子and&&逻辑与ip.src==10.0.0.5 and tcp.flags.finor||逻辑或ip.src==10.0.0.5 or ip.src ==192.1.1.1xor^^逻辑异或tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29not!逻辑非not llc[…]子字符串运算符,用于从字符串中截取子字符串。有多种语法格式。
in {…}成员运算符,用于测试协议字段值是否属于一个集合tcp.port in {80 443 8080}eth.src[0:3] == 00:00:83 - eth.src [1-2]== 00:83 - eth.src [:4] == 00:00:83:00 - eth.src [4:]== 20:20 - eth.src [2] == 83
熟悉显示过滤器语法可以在主界面的显示过滤器窗口直接输入过滤器表达式。
不熟悉语法可通过过滤器表达式对话框来设置。
点击显示过滤器文本框后的(编辑)表达式按钮(Expression),可打开显示过滤器设置对话框。
字段名称(Field Name)窗口中以树形结构组织Wireshark支持的所有协议及其字段名称,这里列出的协议和协议字段都可用于显示过滤器表达式设置。
Wireshark支持上百种协议,可通过输入协议名称开始的若干个字符快速在树中找到协议节点。点击协议节点前的符号可展开节点,以子节点方式列出相应协议的所有字段的名称。
关系(Relation)窗口给出了可用于所选择协议字段的表达式运算符,其中除“是否存在”(is present)是单目运算符外,其他都是双目运算符。若选择双目运算符,需要在“值”(Value)文本框中输入协议字段的比较值。
预定义值(Predefined values)窗口中列出了Wireshark预先定义的一些协议字段值(类似于C语言中的枚举变量)。如果表达式中的协议字段有预定义的值,可在此选择而不用再输入。
范围(Range)文本框可输入一个或多个整数范围区间
🕒 3. 实操
一、 开启GNS3虚拟机,新建拓扑文件,在工作区添加一台路由器(c3745)、两台交换机和两台PC,按下图连接路由器、PC和交换机,开启设备。并按照下表进行IP地址的配置,将PC机和路由器的配置指令截图如下:
设备接口IP地址地址掩码默认网关R1F0/010.0.0.1255.255.255.0-R1F0/110.0.1.1255.255.255.0-PC-1E010.0.0.2255.255.255.010.0.0.1PC-2E010.0.1.2255.255.255.010.0.1.1
R1#conf t # 进入特权模式
R1(config)#interface f0/0 # 指定接口
R1(config-if)#ip address 10.0.0.1 255.255.255.0 # 配置接口IP与地址掩码
R1(config-if)#no shutdown # 开启接口
*Mar 1 00:04:57.427: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar 1 00:04:58.427: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int f0/1 # 可以简写
R1(config-if)#ip add 10.0.1.1 255.255.255.0 # 简写
R1(config-if)#no shut # 简写
R1(config-if)#
*Mar 1 00:06:30.191: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up
*Mar 1 00:06:31.191: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up
PC-1> ip 10.0.0.2/24 10.0.0.1 # /24就是地址掩码255.255.255.0
Checking for duplicate address...
PC1 : 10.0.0.2 255.255.255.0 gateway 10.0.0.1
PC-1> save
Saving startup configuration to startup.vpc
. done
PC-2> ip 10.0.1.2/24 10.0.1.1
Checking for duplicate address...
PC1 : 10.0.1.2 255.255.255.0 gateway 10.0.1.1
PC-2> save
Saving startup configuration to startup.vpc
. done
二、 在PC1上pingPC2:
PC-1> ping 10.0.1.2
10.0.1.2 icmp_seq=1 timeout
84 bytes from 10.0.1.2 icmp_seq=2 ttl=63 time=14.108 ms
84 bytes from 10.0.1.2 icmp_seq=3 ttl=63 time=18.045 ms
84 bytes from 10.0.1.2 icmp_seq=4 ttl=63 time=15.082 ms
84 bytes from 10.0.1.2 icmp_seq=5 ttl=63 time=14.043 ms
三、 在PC-1和S1的链路上点击右键,进行抓包分析,说明捕获到有哪些协议产生的数据包。使用捕获过滤器进行过滤,只保留ICMP协议数据包,将过滤条件写出,截图如下。
OK,以上就是本期知识点“GNS3的使用”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟
❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页
版权归原作者 HinsCoder 所有, 如有侵权,请联系我们删除。