第1章 GNS3介绍
https://yqfile.alicdn.com/2b617721ff231af0b93d766e5bd9c1c0b4f72b6a.png" >
GNS3是一款运行在Windows、OS X和Linux上的跨平台图形网络模拟器,是Christophe Fillot、Jeremy Grossmann和Julien Duponchelle等超级优秀的行业专家协作努力的成果,此处只提到了几个人。Fillot是MIPS处理器仿真程序(Dynamips)的开发者,Dynamips使你可以运行Cisco路由器操作系统;Grossmann是GNS3的开发者,他把Dynamips和其他开源软件集成到一个易于使用的图形用户界面中;Duponchelle协助GNS3的编程,他的贡献推进了软件开发。
GNS3使你能够在PC上设计并测试虚拟网络,包括(但不限于)Cisco IOS、Juniper、MikroTik、Arista、Vyatta网络,在CCNA与CCNP考试中学习Cisco IOS路由和交换时需要实践经验的学生也常使用它。但这仅仅是GNS3功能的表面。本章会讨论GNS3是什么以及这个软件的优点和局限性。
1.1 为什么使用GNS3
在对虚拟化、网络工程师、管理员好奇之前,学生不得不使用物理硬件搭建实验室,或在机架上花费时间。这两个选择都华而不实,还限制了可用的网络设计。像RouterSim和Boson NetSim等软件模拟程序也已经存在了很长时间,但是,这些有限的应用程序仅仅能模拟Cisco IOS的命令。基于UNIX上的Cisco IOS(IOU),Cisco Education的确提供了更便宜的虚拟化机架租赁,但是借助它只可以练习特定预配置的网络配置。还要求有一个活跃的网络连接来访问实验室。Cisco也提供了一款名为虚拟网络路由实验(VIRL)的产品,它类似于GNS3,但是它需要缴纳年费,限制实验室中可以使用的对象数量,并且只用于模拟Cisco操作系统。
然而,GNS3可以定制符合要求的网络实验室,使用Cisco和非Cisco技术创建无限的项目,在项目中添加无限的对象,不论网络连通性如何,可以在任意时刻访问这些项目。GNS3通过对运行在真实网络操作系统(如Cisco IOS)和模拟操作系统(如NX-OSv)上的模拟硬件设备的组合,以及对跨多台计算机资源的分享能力,为设计提供了最大的灵活性。
1.1.1 硬件仿真
GNS3的图形界面可以让你使用大量的路由器、交换机和PC创建虚拟网络实验室,但它与Cisco IOS搭配使用时才发挥真正的作用。不像类似的应用程序,GNS3不仅仅模拟Cisco IOS的命令或特性。相反,它使用一个后台虚拟机监控程序来仿真运行Cisco IOS的硬件。因为只有对硬件仿真,才可以在PC上运行真实的IOS镜像文件。所有的配置命令和输出都来自真实的IOS,并且理论上,IOS版本支持的任何协议或特性在网络设计中都可用。这个功能将GNS3与RouterSim、Boson NetSim或VIRL等程序区分开,这些程序模拟整个程序,只为你提供有限的环境、命令和场景。
1.1.2 操作系统模拟
除了硬件仿真之外,GNS3集成了模拟操作系统,并且对于其他GNS3设备,它们是完全网络化的。一个这样的例子就是Cisco IOU,它会在第9章介绍。IOU由一系列仿真IOS镜像特征的Linux二进制文件组成,GNS3完全支持它。
除了Cisco IOS之外,GNS3可以集成QEMU和运行Linux、BSD或Windows等操作系统的VirtualBox虚拟机。例如,为了在Linux上练习安装、配置Apache Web服务器,在GNS3中添加一个运行Linux和Apache Web服务器的VirtualBox虚拟机(VM),并且通过从另一台VirtualBox主机上浏览它来测试。所有这一切都是在GNS3用户环境中完成的。如果想在Apache服务器前放置防火墙,可以使用Cisco路由器、自适应安全设备(ASA)防火墙,甚至基于Linux的Vyatta等防火墙。
1.1.3 GNS3服务器的可扩展性
GSN3使用客户端/服务器技术;就像Web浏览器连接到Web服务器来访问和显示网页,GNS3图形用户界面(GUI)程序访问GNS3服务器,让它开始、停止或控制GNS3设备。这使得项目可以扩展,因为它们不局限于在一台计算机上运行。如果要使用更大、更复杂的拓扑,还可以在不同的PC上运行GNS3服务器程序,而不是GSN3 GUI程序。如果访问有大量内存和处理能力的高端服务器,可以在服务器硬件上安装GNS3服务器程序,但从运行在更普通的PC上的GNS3 GUI程序控制所有的设备。
1.1.4 虚拟连接
GNS3真正的魅力在于可以将虚拟设备连接到一起,通常使用IPv4和IPv6等协议,来创建可以运行在单台计算机上的实验室。一些简单的设计可能只有几个组件,如图1.1所示的项目一样。
https://yqfile.alicdn.com/8d5d658de9b13bca339e413e10c264aafbef28a1.png" >
图1.1中的项目允许Fedora Linux主机通过交换机、Juniper路由器、Cisco路由器和GNS3云节点访问真实的互联网。那是一个简单网络,但是可以创建由许多路由器、交换机、PC组成的复杂网络,就像图1.2所示的设计。
图1.2所示的项目由多于25台的设备所配置,包括冗余的交换机群、EtherChannel、二层热备份路由协议(HSRP)、帧中继、增强型内部网关路由协议(EIGRP)、开放最短路径优先(OSPF)和边界网关协议(BGP),但是项目可以运行在适度配置的PC上。为了保持设备整齐,可以使用带颜色、可扩展的文本进行注释,就像我在本例中做的。如果有一台笔记本电脑,甚至可以在旅途中参与项目以展示给客户,解决设计问题,或者准备认证考试。CCNA或CCNP候选者也可以创建练习实验室,进而学习Cisco考试内容,在真实操作系统上练习,在所有地方学习。
GNS3可以将实验室设备中的虚拟接口桥接到PC上的一个或多个物理以太网接口。这使你可以将虚拟网络连接到路由器、交换机、PC等真实硬件上。例如,可以使用多台PC运行两个或多个GNS3网络,使用以太网交叉电缆或物理交换机将PC连接在一起。这样做使你可以把所有PC上的所有GNS3设备连接在一起(我把这亲切地称为GNS3 ubernet)。