GNS3-之书-全-

GNS3 之书(全)

原文:zh.annas-archive.org/md5/474bde29a4d09c14b526718893ac036c

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

我在 GNS3 开发初期就开始使用它,并且很快适应了。 从一开始我就意识到它将是一个无价的网络工具。我用它来亲自体验 Cisco IOS、Junos OS 和 Arista 等操作系统,也用它通过了不少网络认证考试。直到今天,我仍然定期使用它来测试路由器配置,然后再将真实设备投入实际工作。GNS3 书籍 是我与其他网络专业人士(像你一样)分享这一宝贵资源的方式。

本书适合的人群

本书适合任何从事路由器、交换机或防火墙网络工作的人。无论你使用的是 Cisco、Juniper、Arista、Vyatta 还是其他网络操作系统,GNS3 都是建立物理实验室的一个极佳替代方案。与使用物理设备的实验室不同,GNS3 虚拟实验室让你能够创建并保存无限的网络配置,而无需拆解现有的实验室。本书涵盖了所有细节,帮助你快速启动项目。

本书内容

GNS3 书籍 将指导你在 Windows、OS X 和 Linux 上安装、配置和运行 GNS3,同时还会展示一些有趣的小技巧。无论你是刚刚开始,还是以前使用过 GNS3,我相信你会重新认识到,当你拥有合适的工具时,能做的事情有多么广泛。我不会讲解 TCP/IP 网络基础,但会提供大量配置 GNS3 设备的示例。

我的方法

最有效的学习方式是实践。因此,我采用基于教程的方式来创建完全功能的多厂商实验室,使用 GNS3。教程将解释如何使用本章介绍的虚拟设备来构建和配置实验室。我提供了配置 Cisco IOS、Junos OS 和 Juniper vSRX Firefly 等的示例。你不需要成为网络操作系统的专家,因为我将一步步指导你完成配置。你可能需要花费数天甚至数周时间在网上搜索,才能弄清楚如何配置诸如连接到实时交换机、创建虚拟接入服务器或将虚拟实验室连接到互联网等功能。但在你阅读完GNS3 书籍后,就不再需要这样做了。

书籍概述

GNS3 书籍 将指导你安装和使用 GNS3,每一章都介绍新的概念,建立在之前章节的技能基础上。你将学会如何使用一台计算机或通过多台计算机分担负载来创建和管理简单到复杂的项目。

  • 第一章,介绍了 GNS3 的概念及其工作原理,提供了 GNS3 的概述,并讨论了虚拟网络的优势。

  • 第二章,讨论如何在 Windows、OS X 和 Linux 上安装 GNS3,并解释使用虚拟设备来运行 GNS3 的好处,这作为直接在 PC 上安装的替代方法。

  • 第三章,讲解如何安装 Cisco IOS 镜像并使用 Dynamips 设置你的第一个虚拟路由器。你还将了解为 Dynamips 路由器设置 Idle-PC 值的重要性。

  • 第四章,教你如何配置一个虚拟路由器。之后,你将查看所有工具栏选项,并创建一个简单的双路由器网络。

  • 第五章,展示如何安装 VPCS 并使用它向你的项目中添加简单的类似 PC 的主机。你将学习如何使用 VirtualBox 添加完整的虚拟 PC,并创建一个包含虚拟 Cisco IOS 路由器和 VirtualBox Linux PC 的实验室。然后,你将学习如何使用 Wireshark 捕获数据包。

  • 第六章,解释如何安装 QEMU 并使用它创建你自己的虚拟 Juniper 路由器。你将使用 Juniper 和 Cisco 创建一个网络,学习如何安装 Juniper vSRX Firefly,并配置一个基础的 vSRX 防火墙。

  • 第七章,展示了 GNS3 中内置的设备节点,并解释了如何利用它们节省 PC 上的资源。你还将学习如何将 GNS3 项目连接到实时交换机和互联网。

  • 第八章,带你从设置 GNS3 设备到配置它们。你将创建一个 Cisco ASA 防火墙和一个 IDS/IPS,并使用 Cisco IOS-XRv 创建一个网络实验室。

  • 第九章,继续讨论设备创建的主题。你将学习如何在 Unix 上安装 Cisco IOS,并使用 NX-OSv 创建一个虚拟的 NX OS 交换机。

  • 第十章,介绍一些你可以用新学到的 GNS3 知识来做的有趣事情,例如创建一个模拟的访问服务器来管理你的设备,并将 GNS3 虚拟设备配置部署到真实的 Cisco 路由器上。

  • 附录 A,讨论你在使用 GNS3 时可能遇到的一些常见问题,并提供解决这些问题的方法。

  • 附录 B,列出了与 GNS3 兼容的 Cisco 路由器及其最佳的 Cisco IOS 镜像文件。

  • 附录 C,提供有关在 GNS3 中使用的 Unix 上的 IOS 和 NM-16ESW Cisco 交换机的信息。

现在,准备好深入了解 GNS3 吧。在开始这段旅程之前,别忘了和家人道个别,因为一旦开始,你就停不下来了!

第一章. 介绍 GNS3

GNS3 是一个跨平台的图形网络模拟器,支持 Windows、OS X 和 Linux,它是由一些超有才华、工业级的极客们共同努力的成果——例如 Christophe Fillot、Jeremy Grossmann 和 Julien Duponchelle 等人。Fillot 是 MIPS 处理器仿真程序(Dynamips)的创造者,该程序允许你运行 Cisco 的路由器操作系统;Grossmann 是 GNS3 的创造者,他将 Dynamips 与其他开源软件集成,形成了一个易于使用的图形用户界面;Duponchelle 协助 GNS3 的编码工作,他的贡献帮助推动了软件的发展。

GNS3 让你在 PC 上设计和测试虚拟网络,包括(但不限于)Cisco IOS、Juniper、MikroTik、Arista 和 Vyatta 网络,通常被那些需要在学习 Cisco 认证网络工程师(CCNA)和 Cisco 认证网络专家(CCNP)考试时获得 Cisco IOS 路由和交换实际经验的学生使用。但这仅仅是 GNS3 能做的冰山一角。在本章中,我将讨论 GNS3 是什么,以及该软件的优缺点。

为什么使用 GNS3?

在虚拟化的奇迹出现之前,网络工程师、管理员和学生必须使用物理硬件搭建实验室,或者租用机架上的时间。这两种选择既昂贵又不方便,而且限制了可用的网络设计。像 RouterSim 和 Boson NetSim 这样的软件模拟程序已经存在很长时间了,但这些有限的应用程序仅仅模拟了 Cisco IOS 的命令。Cisco 教育确实提供了基于 Cisco IOS 在 Unix 上的虚拟化机架租用(IOU),但是它只允许你在特定的预配置网络配置上进行练习,且要求你必须有有效的互联网连接才能访问实验室。Cisco 还提供了一款名为 Virtual Internet Routing Lab (VIRL) 的产品,它与 GNS3 类似,但需要支付年费,限制了你在实验室中使用的对象数量,并且仅支持模拟的 Cisco 操作系统。

另一方面,GNS3 允许你根据需求定制网络实验室,使用 Cisco 和非 Cisco 技术创建无限的项目,向项目中添加无限的对象,并且无论是否有互联网连接,都能随时访问这些项目。通过结合仿真硬件设备(运行真实的网络操作系统,如 Cisco IOS)、模拟操作系统(如 NX-OSv)以及跨多台计算机共享资源的功能,GNS3 为你的设计提供了最大的灵活性。

模拟硬件

GNS3 的图形界面允许你创建虚拟化的网络实验室,包含各种路由器、交换机和 PC,但它真正的亮点是与 Cisco IOS 配合使用。与类似的应用程序不同,GNS3 不仅仅是模拟 Cisco IOS 命令或功能。它使用后端的虚拟化程序来模拟运行 Cisco IOS 的硬件。因为只模拟硬件,你实际上是在 PC 上运行一个真实的 IOS 镜像文件。所有的配置命令和输出都来自真实的 IOS,从理论上讲,任何 IOS 版本支持的协议或功能都可以在你的网络设计中使用。这个功能使得 GNS3 与 RouterSim、Boson NetSim 或 VIRL 等程序有所区别,因为这些程序模拟的是整个体验,并且只提供有限的环境、命令和场景供你使用。

模拟操作系统

除了模拟硬件,GNS3 还集成了模拟操作系统,并且这些操作系统可以与其他 GNS3 设备完全联网。其中一个例子是 Cisco IOU,我在第九章中有详细介绍。IOU 由一系列 Linux 二进制文件组成,能够模拟 IOS 镜像的功能,并且 GNS3 完全支持它。

除了 Cisco IOS,GNS3 还可以集成 Quick Emulator(QEMU)和 VirtualBox 虚拟机,运行如 Linux、BSD 或 Windows 等操作系统。例如,如果你想练习在 Linux 上安装和配置 Apache Web 服务器,只需将一个运行 Linux 和 Apache 的 VirtualBox 虚拟机(VM)添加到 GNS3 中,然后通过从另一台 VirtualBox 主机进行访问来进行测试。所有这一切都可以在 GNS3 用户环境中完成。如果你想在 Apache 服务器前加一个防火墙,可以使用 Cisco 路由器、适应性安全设备(ASA)防火墙,甚至是基于 Linux 的防火墙,如 Vyatta。

GNS3 服务器的可扩展性

GNS3 利用了客户端-服务器技术;就像网页浏览器连接到网页服务器以访问和显示网页一样,GNS3 的图形用户界面(GUI)程序连接到 GNS3 服务器,从而启动、停止以及控制 GNS3 设备。这使得你的项目可以扩展,因为它们不再仅限于单台计算机上运行。如果你需要处理大型或复杂的拓扑结构,你还可以将 GNS3 服务器程序运行在与 GNS3 GUI 程序不同的 PC 上。如果你有一台高性能的服务器,拥有大量内存和处理能力,你可以将 GNS3 服务器程序安装在服务器硬件上,但仍然可以从运行在较为普通 PC 上的 GNS3 GUI 程序控制所有设备。

虚拟连接

GNS3 的真正魅力在于它能够将你的虚拟设备网络连接在一起,通常使用如互联网协议版本 4(IPv4)和互联网协议版本 6(IPv6)等协议,创建可以在单台计算机上运行的实验室。一些最简单的设计可能只有几个组件,像图 1-1 中展示的项目一样。

集成 Fedora Linux、Cisco 和 Juniper 路由器的 GNS3 拓扑

图 1-1. 集成 Fedora Linux、Cisco 和 Juniper 路由器的 GNS3 拓扑

图 1-1 中的项目允许 Fedora Linux 主机通过一个交换机、一个 Juniper 路由器、一个 Cisco 路由器,最后一个 GNS3 云节点访问实时互联网。这是一个简单的网络,但你也可以创建由十几个或更多路由器、交换机和 PC 组成的复杂网络,就像图 1-2 中的设计一样。

复杂的多协议 GNS3 拓扑

图 1-2. 复杂的多协议 GNS3 拓扑

图 1-2 中的项目配置了超过 25 个设备,包括冗余交换机块、EtherChannel、L2 热备份路由协议(HSRP)、帧中继、增强型内部网关路由协议(EIGRP)、开放最短路径优先(OSPF)和边界网关协议(BGP),但该项目可以在配置适中的 PC 上运行。为了让你的设备更清晰,你还可以像我在这个示例中做的那样,使用彩色、可缩放的文本注释设计图。如果你有一台笔记本电脑,你甚至可以将项目带到路上,向客户展示、解决设计问题或准备认证考试。CCNA 或 CCNP 考生也可以创建所有必要的训练实验室,学习 Cisco 的考试资料,使用真实的操作系统进行练习,并随时随地学习。

GNS3 具有将实验室设备中的虚拟接口桥接到 PC 中一个或多个物理以太网接口的能力。这使得你可以将虚拟网络连接到实际硬件上,比如路由器、交换机和其他 PC。例如,你可以使用多台 PC 运行两个或更多的 GNS3 网络,并通过以太网交叉电缆或物理交换机将 PC 连接在一起。这样,你就能将所有 PC 中的 GNS3 设备连接起来。(我亲切地称之为 GNS3 ubernet!)

开源集成

GNS3 通过利用开源技术,如 Dynamips、QEMU 和 VirtualBox,发挥其魔力。它能够像 Cisco IOS 一样轻松地运行 Juniper、Arista 以及许多其他网络操作系统。

Dynamips 虚拟机监控程序

为了模拟 Cisco 硬件,GNS3 捆绑了 Dynamips,这是由法国的 Christophe Fillot 于 2005 年创建,并由 Flávio J. Saraiva 等人持续更新的一个优秀应用程序。Dynamips 虚拟机监控程序可以模拟 Cisco 1700、2600、3600、3700 和 7200 系列路由器硬件。借助 Dynamips,你可以快速、轻松地在 GNS3 中配置这些路由器模型,并搭配各种模拟的 Cisco 网络 SLOT 和 WAN 接口卡(WIC)。虚拟输入/输出(I/O)卡允许你为设备添加多个以太网接口、交换模块和串口。你甚至可以根据项目需求和 Cisco IOS 版本,为每个设备单独添加或删除内存。

QEMU 与 VirtualBox

你可以将 QEMU 和 VirtualBox 虚拟机添加到 GNS3 中,并在项目中使用它们。这些设备可以与其他 GNS3 设备连接,形成一个完整的端到端网络。例如,你可以将一个 VirtualBox 主机连接到一系列交换机和路由器,并允许它访问该网络上另一个 VirtualBox 主机上的资源。在这种情况下,你可以配置和测试各种路由协议以及诸如网络地址转换(NAT)、访问控制列表(ACLs)和虚拟专用网络(VPNs)等功能。当然,物理计算机的硬件会对资源造成一定的限制,但现代计算机有很多未被利用的资源,正等待着 GNS3 来发挥其潜力。

一些局限性

GNS3 并非没有局限性。Dynamips 的限制使得它不能在生产环境中使用,只能用于教育用途。此外,交换功能的命令集较为简单,除非你将一个或多个物理 Catalyst 交换机集成到 GNS3 项目中。幸运的是,IOU 在一定程度上弥补了这一差距。

需要一些组装

所有伟大的事物都有代价,GNS3 也不例外。最显著的一点是,GNS3 需要一个或多个 Cisco IOS 镜像才能在你的虚拟 Dynamips 路由器上运行,而 GNS3 并不提供这些镜像。如果你拥有一台路由器,或者通过 Cisco 连接在线(CCO)账户,你可以将镜像复制过来,前提是你和 Cisco 有合同关系。

限制的仿真

Dynamips 无法模拟 Cisco 先进 Catalyst 交换机的应用特定集成电路(ASIC)硬件。这对于有志于成为 CCNA 甚至 CCNP 的学习者来说是一个小小的障碍,但对于那些需要交换机高级功能的有志于成为 Cisco 认证互联网专家(CCIE)的人来说,这无疑是个挑战。不过,GNS3 的多功能性允许你将 GNS3 虚拟实验室与实际的 Catalyst 交换机结合使用,这可以大大降低创建 CCIE 实验室的成本,并且由于大部分实验室是虚拟化的,它可以提供更大的配置灵活性。

当你不需要那些高级功能时,你可以将一个虚拟交换机模块(比如思科的 NM-16ESW)添加到你的虚拟思科路由器上,创建一个简单的三层交换机。这个设备应该能够满足一些基本的交换需求,包括虚拟局域网(VLAN)、802.1Q 中继、生成树协议、EtherChannel,以及使用 EIGRP、OSPF、BGP 和其他协议的多协议路由。最后,思科 IOU 镜像可以用来模拟思科交换机,并且它们提供的命令比 Dynamips 交换机模块更多。

受限的网络性能

另一个 GNS3 的限制是网络性能。因为 Dynamips 是一个没有硬件加速的模拟器,所以吞吐量会受到限制,从每秒 1.5Mb 到 800Mb 不等,这取决于你使用的 IOS 和配置。这看起来可能是一个限制,但实际上它是件好事,因为它防止用户将思科硬件虚拟化并投入到生产环境中。试想如果模拟设备能以全速运行:从这里到天涯海角的每个网络爱好者都会在廉价的 PC 上安装虚拟路由器,并在生产网络中使用它们,从而有效地盗取思科的知识产权。如果发生这种情况,思科一定会像砸砖头一样打压 Dynamips 开发者,而 GNS3 也就不会存在了。这个限制对于教育和测试使用 GNS3 几乎没有任何影响。

最后的思考

现在我已经讲解了 GNS3 的主要特点,希望你和我一样,迫不及待地想在自己的计算机上使用它了。与类似的应用程序或工具不同,GNS3 让你完全掌控,随心所欲地运用你的想象力,创建、学习和开发符合你需求的复杂网络。此外,你可以不必花费大量金钱购买路由器和交换机,也无需在充满噪音和电力消耗的硬件堆积的房间中工作。

在下一章,我将向你展示如何安装 GNS3。让我们开始吧!

第二章:安装基本的 GNS3 系统

告别硬件的世界,迎接 GNS3!这是一种全新的学习网络的方式。在本章中,我将引导你完成在 Microsoft Windows、Mac OS X 和 Ubuntu Linux 上安装基本 GNS3 系统的过程。

基础安装包括 GNS3 应用程序和一些辅助应用程序。在 Windows 和 OS X 上,所有的先决应用程序都包含在 GNS3 安装包中,可以从 GNS3 网站下载(www.gns3.com/)。

在 Linux 上安装时,你可以通过特定平台的包管理器下载并安装 GNS3,或者直接从源代码安装。从源代码安装的原则可以应用于几乎任何基于 Unix 的系统,而且这是一种确保你拥有最新软件的好方法。

一般要求

运行 GNS3 的要求主要由你所安装的操作系统、你希望在项目中使用的路由器型号和数量,以及你是否将外部程序如 QEMU 或 VirtualBox 集成到设计中来决定。大多数近几年购买的计算机应该能够顺利运行这个基础安装。

也就是说,如果你决定超越仅使用 Cisco 路由器创建项目,且将其他虚拟环境(如 Linux、BSD、ASA、IDS 或 Juniper)融入到 GNS3 设计中,你将希望尽可能获得更多的计算能力。你拥有的内存和处理能力越强,所有的运行效果就越好,因为像 QEMU 和 VirtualBox 这样的程序需要内存来运行其虚拟操作系统,它们会和你本地操作系统争夺 CPU 时间。你还需要更多的磁盘空间来存储虚拟操作系统。

你可以访问 GNS3 网站以验证你操作系统的要求,但对于一个简单的基础安装,以下是一个不错的经验法则:

  • 1.5 GHz 处理器

  • 4GB 内存

  • 250MB 可用磁盘空间

这些是最低规格,满足这些要求的系统应该能够运行一个简单的 GNS3 拓扑,使用几个 Cisco 路由器。当然,随着项目变得更大、更复杂,GNS3 将从更强大的系统中受益。

注意

如果安装说明现在看起来令人不知所措,不要担心!跳到 GNS3 Appliances 了解如何下载预构建的 GNS3 设备,直接开始使用。

安装在 Microsoft Windows 上

与其他操作系统相比,在 Windows 上安装 GNS3 轻而易举。Windows 安装包包括几乎所有 GNS3 需要的应用程序,以及一些其他平台上没有的附加功能,而且所有内容安装时几乎不需要用户干预。

Windows 安装程序包括一些额外的有用应用程序,包括用于 Juniper 和 ASA 的 QEMU;流行的网络监控程序 Wireshark;Windows 终端仿真程序 PuTTY;以及 VPCS,一个简单的类似 DOS 的命令模拟器,用于通过 pingtraceroute 命令测试连接。安装程序包含 32 位和 64 位版本的 GNS3,并应自动安装正确的版本。

按照以下步骤在 Windows 上安装 GNS3:

  1. 从 GNS3 网站下载 GNS3 一体化安装程序 (www.gns3.com/),然后启动它以开始安装。

  2. 在安装向导界面点击 下一步,然后在许可协议界面点击 我同意

  3. 选择你希望安装程序在开始菜单中放置应用程序快捷方式的文件夹,然后点击 下一步。(默认文件夹是 GNS3。)

  4. 然后,你可以选择要包含在安装中的组件,如 图 2-1 所示。默认选项会安装所有组件,创建一个功能完整的 GNS3 系统,包括 Wireshark、VPCS 和 QEMU。为了节省磁盘空间,或者如果你不需要这些附加功能,可以取消选择这些选项。WinPCAP 是 NIO 以太网云连接所必需的,而 Dynamips 是使用 Cisco 路由器和交换机创建项目所必需的。做出选择后,点击 下一步

    选择要安装的 GNS3 组件

    图 2-1. 选择要安装的 GNS3 组件

  5. 你应该会看到选择安装位置的界面,如 图 2-2 所示。要将 GNS3 安装到其他位置,请在目标文件夹字段中输入新位置,然后点击 安装

  6. 继续按照所有提示完成安装。我建议你接受所有默认设置。

选择目标文件夹位置

图 2-2. 选择目标文件夹位置

完成后,GNS3 应该会在桌面上放置一个图标。

在 OS X 上安装

GNS3 仅支持运行 OS X 的基于 Intel 的 Mac。你应该确保在运行 GNS3 之前已经安装了最新版本的 OS X。

要在 OS X 上安装 GNS3,首先从 GNS3 网站下载适当的安装程序 (www.gns3.com/),然后双击安装程序,桌面上将显示一个 DMG 磁盘映像文件。双击该映像文件打开 GNS3 文件夹,并将 GNS3 图标拖动到 应用程序 文件夹中,如 图 2-3 所示。

将 GNS3 程序图标拖动到应用程序文件夹

图 2-3. 将 GNS3 程序图标拖动到应用程序文件夹

要在当前版本的 OS X 上运行 GNS3,你可能需要右键点击已安装的应用程序图标,并在第一次运行时选择 打开。系统会弹出一个对话框,警告你该软件包来自未识别的开发者,并询问你是否确定要打开该应用程序。点击 打开 按钮即可绕过 OS X 的 Gatekeeper 功能。从此以后,GNS3 将正常启动,不会再有任何警告。

在 Ubuntu Linux 上安装

GNS3 在许多不同的 Linux 发行版上运行良好,但遗憾的是大多数发行版缺乏文档。在本节中,我将揭开谜团,向你展示在基于 Unix 的平台上运行 GNS3 是多么简单。我选择覆盖 Ubuntu,因为它是最常用的发行版之一。

在 Linux 上安装 GNS3 有两种方式。你可以通过软件包管理器安装一个捆绑包,或者从源代码安装。使用捆绑安装很快速且简单,但缺点是你只能使用已经移植到你特定平台的 GNS3 版本,可能不是最新版本。这时候,源代码安装就显得很有用。从源代码安装只需要几个额外的步骤,并且提供了最新版本的 GNS3。尽管我强烈推荐从源代码安装,但我们将在这里介绍两种方法。

从软件包安装 GNS3

要使用高级包管理工具安装 GNS3,请打开终端程序并输入以下命令:

$ **sudo apt-get install gns3**

当系统提示时,输入你的密码。此命令的输出将显示将要安装的软件包列表,并显示安装将占用多少磁盘空间。安装程序会提示你确认是否可以继续。确认后,软件包将被安装,GNS3 准备就绪。

你可以通过终端程序输入 gns3 启动应用程序,或者从显示管理器的应用菜单中启动 GNS3。现在你已经准备好配置 GNS3。

从源代码安装 GNS3

从源代码安装可以确保你获得 GNS3 的最新版本,并且在我看来,这是在基于 Unix 的系统上安装 GNS3 的最佳方式。不管你使用的是哪个版本的 Linux,你都应该能够根据这些说明将 GNS3 安装并运行在你的系统上。在以下示例中,我将以 Ubuntu Linux 为框架,但请记住,这些说明几乎适用于任何基于 Unix 的发行版。不同发行版之间的主要区别在于所需的依赖项以及如何安装它们。请务必检查 GNS3 网站,以获取最新的依赖项要求。

我曾在 Solaris、FreeBSD、OpenBSD、Ubuntu、Mint、OpenSUSE、Fedora、Fuduntu、Debian、Arch、Gentoo、Kali、Netrunner 和 PCLinuxOS 上安装过 GNS3,因此我相信你也能在你的系统上运行它!

从 GNS3 网站下载并解压安装文件 (www.gns3.com/)

解压源代码

当你下载 GNS3 的 Linux 版本时,你会得到一个 ZIP 文件,其中包含 Linux 源代码。解压后,你会看到每个 GNS3 使用的程序的独立 ZIP 文件。使用以下命令解压 GNS3 源代码文件,将 x 替换为你的文件版本:

$ **cd ~/Download**
$ **unzip GNS3-x-source.zip**

dynamips-x.zip
gns3-gui-x.zip
gns3-server-x.zip
vpcs-x.zip
iouyap-x.zip

接下来,你将更新 Ubuntu 包管理器。

更新包管理器

更新包管理器的索引文件可以确保你安装最新版本的依赖项。在 Ubuntu 上,打开终端并输入:

$ **sudo apt-get update**

安装依赖项

GNS3 的依赖项和软件包名称特定于每个 Linux 发行版,因此你需要下载适合你操作系统的版本。你可能还需要提前查看 GNS3 网站,因为依赖项可能会随时间变化。在 Ubuntu 上,输入以下命令:

$ **sudo apt-get install python3-dev**
$ **sudo apt-get install python3-setuptools**
$ **sudo apt-get install python3-pyqt4**
$ **sudo apt-get install python3-ws4py**
$ **sudo apt-get install python3-netifaces**

安装完所有 Python 包后,继续安装 Dynamips。

安装 Dynamips

在编译 Dynamips 之前,你需要在 Ubuntu 系统上安装一些额外的软件包:

$ **sudo apt-get install libpcap-dev**
$ **sudo apt-get install libelf-dev**
$ **sudo apt-get install uuid-dev**
$ **sudo apt-get install cmake**

接下来,解压源代码文件,编译并使用以下命令安装 Dynamips。将 x 替换为你软件的版本。

$ **unzip dynamips-x.zip**
$ **cd dynamips-x**
$ **mkdir build**
$ **cd build**
$ **cmake ..**
$ **make**
$ **sudo make install**

完成后,你应该在 /usr/local/bin/ 目录中看到一个名为 dynamips 的文件。将程序的所有权更改为 root,并将文件权限设置为可执行。这将允许 Dynamips 设备通过你的 PC 的以太网适配器连接到互联网或实际硬件,如 Cisco 交换机。

$ **sudo chown root /usr/local/bin/dynamips**
$ **sudo chmod 4755 /usr/local/bin/dynamips**

对于关心安全的用户,有一个替代方案。你可以在不向 Dynamips 提供 root 权限的情况下实现相同的功能。以下方法适用于 Ubuntu,并且应当适用于大多数运行 Linux 内核 2.2 或更高版本的系统。此方法不适用于基于 BSD 的系统。

$ **sudo apt-get install libcap2**
$ **sudo setcap cap_net_raw,cap_net_admin+eip /usr/local/bin/dynamips**

接下来,你将安装 GNS3 服务器和 GUI 源代码文件。

安装 GNS3 服务器和 GUI

GNS3 由两个主要应用程序组成:一个服务器应用程序和一个 GUI 应用程序。服务器应用程序在你的计算机后台运行,普通用户通常看不见它。它负责运行和管理所有辅助应用程序,如 Dynamips、QEMU 和 VirtualBox。GUI 应用程序提供前端用户体验,是你与 GNS3 互动的地方。

$ **unzip gns3-server-x.zip**
$ **unzip gns3-gui-x.zip**

完成安装后,运行 GNS3 安装脚本以安装每个应用程序。此步骤需要提升的 root 权限,因此请准备好你的 root 密码。首先安装 GNS3 服务器。

$ **cd gns3-server-x**
$ **sudo python3 setup.py install**

接下来,安装 GNS3 GUI 应用程序。

$ **cd gns3-gui-x**
$ **sudo python3 setup.py install**

安装完成后,应用程序将被安装到 /usr/local/bin/ 下。

接下来,通过解压 vpcs ZIP 文件并运行 mk.sh 安装脚本来安装 Virtual PC 模拟器(VPCS)。该软件模拟一个简单的主机 PC,并可用于测试项目中的路由器。

$ **unzip vpcs-x.zip**
$ **cd vpcs-x/src**
$ **./mk.sh**
$ **sudo cp vpcs /usr/local/bin**

最后一步是针对 Ubuntu 和其他一些 Linux 发行版的特定操作,之所以需要这一步,是因为它们实现了 Gnome 桌面。没有这个命令,程序仍能正常运行,但一些菜单图标在 GNS3 中将无法显示。

$ **gconftool-2 --type Boolean --set /desktop/gnome/interface/menus_have_icons True**

要启动程序,请输入以下终端命令:

$ **gns3**

就这样!你现在可以继续配置 GNS3 并创建项目了。

GNS3 器具

在你的 PC 上安装 GNS3 的另一种选择是使用预配置的GNS3 器具。GNS3 器具实际上是一个已经安装了 GNS3 的虚拟机。GNS3 器具非常灵活,因为它们通过像 VirtualBox 这样的应用程序运行。VirtualBox 是免费的,并且可以在大多数操作系统上运行(包括 Windows、OS X、Linux 和 FreeBSD)。

一些优缺点

在虚拟环境中运行 GNS3 有几个优点。主要的优点是简便和可移植性。大部分设置工作已经为你完成,你将拥有一个可以从一台 PC 移动到另一台的可移植 GNS3 安装。如果你买了一台新电脑,你可以将这个器具复制到新 PC 上,一切应该像以前一样运行,无论新电脑运行的硬件或操作系统如何。

另一方面,如果你希望来宾操作系统和 GNS3 运行顺畅,特别是当你创建大型或复杂项目时,宿主机器需要具备快速的处理器和大量的 RAM。并且因为你正在模拟来宾操作系统的硬件,项目可能会根据底层硬件的不同,略微影响性能。

GNS3 工作台

有几种 GNS3 器具可供选择,但我推荐 GNS3 工作台 (rednectar.net/gns3-workbench/),如图 2-4 所示。开发者做得很好,界面简洁,配置也相当直观。GNS3 工作台基于 Linux 构建,预装了 GNS3、Wireshark 和 VPCS。它还带有一些练习和预配置的实验室,帮助你为 Cisco 的 CCNA 认证考试做准备。许多实验室包含故障排除问题,目标清晰明确。

GNS3 工作台

图 2-4. GNS3 工作台

GNS3 WorkBench 假设用户具备一定的 Linux 基础知识,但有一些 Linux 经验会更有帮助。包含了 Linux shell 脚本,帮助你安装 Cisco IOS,实验室设计仅需几个 IOS 映像即可工作。此外,开发者还包括了来自 GNS3 Vault 的一些练习。GNS3 Vault 网站(www.gns3vault.com/)专注于 GNS3 的所有相关内容,特别侧重于 Cisco 教育,并为任何准备 Cisco CCNA 或 CCNP 认证的人提供练习。

安装 GNS3 WorkBench

GNS3 WorkBench 是免费的,并且仅作为 VMware 虚拟机提供。不过,你可以导入虚拟磁盘映像并使用 VirtualBox 运行该设备。如果你希望使用 VMware 本地运行该设备,请访问他们的网站(www.vmware.com/)并确认你的平台是否受到支持。否则,我建议使用 VirtualBox(www.virtualbox.org/),因为它支持更多的平台——特别是 Windows、Linux、FreeBSD 和 OS X——并且对所有平台都是免费的。

在开始之前,确保你的工作站有 10GB 的硬盘空间,并且已安装 VirtualBox。要在 VirtualBox 下安装 GNS3 WorkBench,请从 GNS3 网站(www.gns3.com/)下载 GNS3 WorkBench 设备,并按照以下步骤操作:

  1. 启动 VirtualBox,点击启动屏幕上的新建来创建一个新的虚拟机。在向导打开后,点击继续开始。

  2. 给你的虚拟机命名,选择Linux作为操作系统,Ubuntu作为版本(如图 2-5 所示),然后点击继续

    为 GNS3 WorkBench 创建新的 Ubuntu Linux 虚拟机

    图 2-5. 为 GNS3 WorkBench 创建新的 Ubuntu Linux 虚拟机

  3. 根据需要调整内存设置,然后点击继续进入虚拟硬盘对话框。接着,选中使用现有硬盘单选按钮,点击黄色文件夹图标,浏览到你保存 GNS3 WorkBench 文件的位置。选择名为GNS3 WorkBench.vmdk的文件,确保启动磁盘旁边有一个勾选框,然后点击继续,如图 2-6 所示。这是虚拟等效于将硬盘从一台 PC 中取出并安装到另一台 PC 中的操作。

    选择与 VirtualBox 一起使用的 VMware 磁盘映像

    图 2-6. 选择与 VirtualBox 一起使用的 VMware 磁盘映像

  4. 点击下一步完成以完成安装。

  5. 最后,启动 GNS3 WorkBench 并安装客户机增强功能。客户机增强功能软件为你的新虚拟机提供硬件驱动程序。点击设备安装客户机增强功能,然后按照屏幕上的指示操作。在 FreeBSD 上,客户机增强功能通过virtualbox-ose-additions包安装。

注意

如果你的主机 PC 有额外的 RAM,可能需要为 GNS3 WorkBench 分配 2GB RAM(或更多),而不是默认的 1GB。1GB 的 RAM 对于 GNS3 来说是最低要求。增加可用内存将提升性能。

安装完成后,点击启动来启动 Ubuntu。如何配置和使用 GNS3 WorkBench 的说明应该会出现。

最后思考

在本章中,你已经学会了 GNS3 可以在几乎任何操作系统上安装,并且你不需要计算机科学博士学位就能完成安装。不过,这并不意味着它能在所有系统上轻松安装。例如,一些 Linux 发行版可能根本没有 GNS3 包(或者可用的包可能过时,无法满足需求),但这就是开源软件的魅力所在:你可以直接从源代码安装。另一个潜在的陷阱是,所有必要的依赖项——或者那些依赖项的正确版本——可能不适用于你的操作系统版本,这将是一个无法解决的问题。在这种情况下,我建议你使用像 GNS3 WorkBench 这样的工具,或者使用 VirtualBox 并安装一个像 Ubuntu 这样完全支持 GNS3 的客户操作系统。

安装 GNS3 后,你已经准备好进入下一章节,在那里你将学习如何配置 GNS3 并创建项目。

第三章 配置

安装 GNS3 只是创建项目的第一步;第二步是配置。幸运的是,GNS3 配置变得前所未有的简单,你只需要执行几个任务。在本章中,我将介绍一些基本的 GNS3 配置选项,帮助你通过 Dynamips 启动和运行 IOS 路由器。

获取 IOS 镜像

GNS3 提供的虚拟 Dynamips 路由器是仿真硬件设备。就像一个刚格式化的 PC 硬盘一样,你的虚拟路由器正在耐心等待你安装操作系统,以便它们能够执行一些有用的任务。它们需要的是 Cisco IOS!

在你启动路由器之前,你需要在 GNS3 中安装并配置至少一个 Cisco IOS 镜像文件,尽管获取镜像文件是你自己的事。IOS 是 Cisco 系统的知识产权,通常不对公众开放。此外,由于 GNS3 开发者与 Cisco 没有任何关联,他们也不能合法地提供给你 IOS 镜像(所以请不要问)。

获取 IOS 镜像文件的最简单方法是从你拥有的 Cisco 路由器中复制一个镜像。采用这种方法的好处是你并没有窃取镜像;你已经拥有了一个为你的路由器授权的 IOS 镜像。缺点是 GNS3 仅支持 Cisco 生产的数百个路由器中的少数几个型号,而你的路由器可能不在其列。 (参见附录 B,查看与 GNS3 兼容的 Cisco 路由器和硬件配置的完整列表。)

要从路由器复制 IOS 镜像文件到工作站,登录到路由器并使用 Cisco copy 命令将镜像文件从路由器的闪存复制到 FTP 服务器。如果你不知道 IOS 镜像文件的名称,可以在路由器上使用 show flash 命令。在以下示例中,IOS 镜像文件名为 c7200-ios-version.bin;我的 FTP 服务器运行在 IP 地址为 192.168.1.25 的 PC 上,我的 FTP 用户名和密码分别是 jasonmypass

# copy flash:c7200-ios-version.bin ftp://jason:mypass@192.168.1.25

当命令从路由器执行时,镜像文件将通过提供的凭据从路由器的闪存复制到运行在 192.168.1.25 上的 FTP 服务器。

如果你想使用 TFTP,可以从 Jounin 网站下载免费的 TFTP 服务器(tftpd32.jounin.net/)。安装并启动服务器后,使用以下 tftp 命令将文件从你的路由器复制到 TFTP 服务器:

# copy flash:c7200-ios-version.bin tftp
Address or name of remote host []? **192.168.1.25**
Destination filename [c7200-ios-version.bin]? **<enter>**

Destination filename [c7200-ios-version.bin] 后按 ENTER 键以完成复制。

另一方面,如果你没有 Cisco 路由器,还有一些不太推荐的方式可以找到 IOS 镜像文件,你肯定能通过简单的互联网搜索找到。虽然像 Cisco 和 Juniper 这样的公司过去对这种行为睁一只眼闭一只眼(只要软件仅用于教育目的),但你可能不想使用盗版的 Cisco IOS。这些镜像可能运行得很好,但始终存在它们可能包含恶意软件或已经被以不可预见的方式篡改的风险。

最后,如果你在一家大型公司工作,而这家公司恰好是 Cisco 合作伙伴,你应该能够使用你的合作伙伴凭证登录 Cisco 网站,获取你需要的任何 IOS 镜像。请注意,这种行为可能成为将你送上公司“断头台”的理由,因此在使用公司账户之前,务必先获得许可。

无论你如何获得 IOS 镜像,都只能使用 GNS3 支持的路由器型号设计的镜像文件,而且某些型号的 IOS 版本可能比其他版本更适用。如果你发现 Dynamips 路由器表现得不太稳定,尝试更换 IOS 版本,因为这通常能解决问题。

注意

一般来说,避免使用 c26xx 镜像,因为它们似乎是最不稳定的!

选择正确的路由器和 IOS 镜像对创建稳定的项目至关重要。推荐的 IOS 版本为 c36xx、c37xx 和 c7200(但不是 c7200p),因为这些版本是 Dynamips 和 GNS3 中最稳定的版本。还需考虑 IOS 版本号。虽然较新的 IOS 版本提供了最新的功能和特性,但旧版本通常会使用更少的 PC 资源,如处理器性能和内存。如果你正在为 CCNA 学习创建简单的项目,可能希望使用 12.2 或 12.3 版本的旧 IOS 来节省资源,但如果你正在为 CCIE 学习,你可能需要安装最新的 IOS 版本。

设置你的第一个 IOS 路由器

一旦你拥有了 IOS 镜像文件,开始使用虚拟路由器之前,你需要做一些准备工作。首先,验证 Dynamips 的路径(这对于 Linux 特定)。接下来,将你的 IOS 镜像复制到一个文件夹中,然后将这些镜像添加到 GNS3 中。最后,为每个已添加到 GNS3 的 IOS 镜像设置 Idle-PC 值。我现在将带你逐步完成这些操作。

配置 Dynamips

在 Windows 和 OS X 上,偏好设置应该已为你设置好,但在 Linux 上,你需要确认 Dynamips 应用程序的路径是否正确。前往编辑偏好设置,选择Dynamips,并点击常规设置标签,如图 3-1 所示。

请确保“Dynamips 路径”字段指向 /usr/local/bin/dynamips。如果你将 Dynamips 应用安装在其他目录中,请将路径设置为该目录。

Dynamips 偏好设置,常规设置标签

图 3-1. Dynamips 首选项,一般设置标签

接下来,点击高级设置标签,显示图 3-2 中的设置。

Dynamips 首选项,高级设置标签

图 3-2. Dynamips 首选项,高级设置标签

Dynamips 的高级设置选项主要与 Dynamips 的稳定性和内存使用相关。一般来说,你不应更改这些设置,但我会讨论这些选项,以便你自己决定。

内存使用优化设置旨在节省你电脑的内存。Dynamips 为每个路由器使用的内存越少,你就能在项目中添加更多路由器。启用“虚拟 IOS 支持”选项通过分配一块共享内存区域供多个路由器使用(只要它们运行相同的 IOS 镜像),从而减少你电脑的内存消耗。这也是在一个项目中多次使用相同路由器型号的一个好理由;使用不同型号且 IOS 版本不同的路由器会占用更多的电脑内存。启用“mmap 支持”选项允许路由器内存的内容写入硬盘上的文件,类似于缓存或交换文件。启用“稀疏内存支持”选项可以减少路由器使用的虚拟内存,从而让你每个 Dynamips 进程中运行更多路由器实例。

将 IOS 镜像添加到 GNS3

在开始使用 IOS 路由器创建项目之前,至少需要将一个 IOS 镜像添加到 GNS3 中。要添加 IOS 镜像,请在 Windows 和 Linux 系统中选择编辑首选项,或者在 OS X 系统中选择GNS3首选项。从左侧面板展开Dynamips,然后点击IOS 路由器,如图 3-3 所示。

IOS 路由器首选项

图 3-3. IOS 路由器首选项

点击新建开始向导,然后点击浏览按钮定位你的镜像文件。选择镜像文件后,你将被问是否希望解压该 IOS 镜像,如图 3-4 所示。

决定是否解压 IOS 镜像

图 3-4. 决定是否解压 IOS 镜像

最好让 GNS3 解压你的镜像文件,否则每次加载路由器时,路由器都需要解压镜像文件。提前解压镜像文件会让路由器启动更快。解压完成后,点击下一步,GNS3 将尝试识别你的 IOS 镜像所对应的路由器平台,如图 3-5 所示。

名称和平台屏幕

图 3-5. 名称和平台屏幕

GNS3 已经确定我的镜像文件属于 c3745 路由器平台,并自动将其命名为c3745。如果你认为这个名称不正确,可以使用平台下拉菜单选择另一个平台,但根据我的经验,GNS3 在这方面做得很好。你可以在名称字段中输入任何你喜欢的名称来更改路由器的名称。

一般来说,从这里你可以通过点击所有配置设置来配置一个基本的路由器模型,但向导在此过程中提供了定制路由器内存和其他功能的机会。现在,点击下一步继续。你应该会看到内存屏幕,如图 3-6 所示。

IOS 内存屏幕

图 3-6. IOS 内存屏幕

路由器在默认内存设置下应该运行良好。但如果你不确定,可以点击检查最小 RAM 要求,GNS3 会启动一个网页浏览器并带你进入思科特性导航器网页,网址是www.cisco.com/。在这里,你可以搜索你的 IOS 镜像的具体内存要求。然后在默认 RAM 字段中输入该值。完成后,点击下一步,你将看到网络适配器屏幕,如图 3-7 所示。

网络适配器屏幕

图 3-7. 网络适配器屏幕

默认设置会将路由器配置为与同型号的真实思科路由器提供的标准选项相同。如果你想添加更多的接口,可以使用旁边的下拉菜单选择所需的网络模块。插槽选项将仅限于真实思科路由器的实际可用选项。完成后,点击下一步并选择你想安装的任何 WIC 模块。然后再次点击下一步,以显示 Idle-PC 屏幕,如图 3-8 所示。

Idle-PC 屏幕

图 3-8. Idle-PC 屏幕

如果你在 GNS3 中启动路由器而没有设置 Idle-PC,电脑的 CPU 使用率会迅速飙升到 100%,并且一直保持在那里。发生这种情况是因为 Dynamips 尚不清楚你的虚拟路由器是否正在执行需要系统资源的任务,因此它会过度补偿,分配所有可用的资源给它。直到解决这个问题,GNS3 会运行缓慢,并且如果 CPU 使用率长时间保持在 100%,你的 PC 处理器可能会过热。

你可以通过让 GNS3 查找 IOS 程序代码中的空闲循环位置来轻松解决此问题(空闲循环会导致 CPU 飙升);这个计算结果称为Idle-PC 值。当正确的 Idle-PC 值应用时,Dynamips 应该会定期让路由器在执行这些空闲循环时进入休眠,这大大减少了 CPU 使用率。如果你不关心所有细节,只需记住,Idle-PC 值就是防止 Dynamips 让你的处理器吃掉午餐的关键。

若要让 GNS3 自动查找一个值,请点击Idle-PC 查找器按钮,GNS3 将尝试搜索一个值。如果 GNS3 找到合适的值,那么操作完成;点击完成即可。如果未成功找到,保持字段为空并点击下一步以保存没有 Idle-PC 配置的路由器。

设置手动 Idle-PC 值

如果 GNS3 无法自动找到 Idle-PC 值,你需要手动查找一个。每个 IOS 镜像只需要计算一次 Idle-PC 值。GNS3 会将此设置应用到使用该镜像文件的所有虚拟路由器。关闭首选项窗口,然后将路由器从设备工具栏拖到 GNS3 工作区,如图 3-9 所示。

将路由器添加到空白工作区

图 3-9. 将路由器添加到空白工作区

接下来,通过右键点击路由器图标并选择启动来启动路由器;然后通过立即右键点击路由器并选择控制台来验证 IOS 是否正确加载。一个 Cisco 控制台窗口应该会打开并显示路由器的启动消息。如果路由器启动正确,你就可以开始 Idle-PC 计算;如果没有,请确保分配给路由器的型号和默认 RAM 设置正确,或者尝试不同的 IOS 镜像。

如果你正在运行 Linux 且在选择控制台后没有显示 Cisco 控制台,请检查你的 GNS3 控制台设置。前往编辑首选项,点击常规,然后选择控制台应用程序标签,如图 3-10 所示。

使用预配置命令下拉菜单,选择你的 Linux 终端类型,然后点击设置、应用,再点击确定

当路由器启动时,计算机的 CPU 使用率会迅速飙升至 100%。监视你的 CPU 使用率,以便在设置完 Idle-PC 值后,验证 CPU 使用率是否已恢复正常。在 Windows 上,按 CTRL-ALT-DEL 然后点击任务管理器查看 CPU 使用率。在 OS X 上,从“应用程序/实用工具”文件夹打开“活动监视器”程序,然后点击CPU。在 Linux 系统上,可以使用系统监视器或在终端输入top命令。

使用 Ubuntu Linux 选择控制台应用程序

图 3-10. 使用 Ubuntu Linux 选择控制台应用程序

要开始计算值,右键点击你的路由器并从菜单中选择Idle-PC,如图 3-11 所示。

GNS3 现在应该会计算 Idle-PC 值并提供一个或多个可选择的值。这可能需要一分钟时间,因此请耐心等待它在 Idle-PC 值窗口中显示结果,如图 3-12 所示。

如果某个值旁边有星号(*),则说明 GNS3 已经确定该值为最佳值,你应该选择它。点击应用来选择该值,并重新检查你的 CPU 使用情况。

有时,GNS3 可能会错误计算该值,导致处理器使用率仍然很高。如果发生这种情况,请尝试使用下拉菜单中的其他值,并再次点击应用以选择新值。如果没有显示星号,你将需要通过简单的反复试验找到一个有效的值。完成后,点击确定以保存该值。

手动计算 Idle-PC 值

图 3-11. 手动计算 Idle-PC 值

Idle-PC 值

图 3-12. Idle-PC 值

在应用了有效的 Idle-PC 值后,你就可以开始创建项目了!

最后的思考

现在你已经为路由器分配了一个或多个 IOS 镜像文件,并在 GNS3 中配置了基本选项,接下来你可以开始使用路由器了。你可以从路由器设备工具栏中选择任何显示的虚拟路由器,试试看。拖动几个路由器到工作区,启动它们,输入一些 IOS 命令。

就像真实的 Cisco 路由器一样,你的 Dynamips 虚拟路由器的限制由它们所运行的 IOS 版本决定。如果你发现路由器缺少某个 IOS 命令,或者某个命令的语法与预期不符,你可能需要尝试不同的 IOS 版本。如果你正在为 CCNA 或 CCNP 考试学习,这不应该是问题,因为这些认证要求的命令和功能集相对简单。如果你正在为 CCIE 或其他高级 Cisco 认证学习,可能需要最新的 IOS,以支持更强大的功能集。如果不确定,可以访问 Cisco 网站,查看特定路由器型号或 IOS 支持的功能和能力。Cisco 的 Feature Navigator 网页是一个很棒的工具,可以让你按功能、技术、软件、镜像或产品代码搜索 IOS 信息,并允许你比较软件版本。

现在你已经为路由器分配了 IOS 镜像并在 GNS3 中配置了基本选项,接下来我们开始创建项目吧!

第四章:创建和管理项目

现在你已经能够配置并启动一个单一的 IOS 路由器,接下来卷起袖子,我将向你展示如何通过将两个或更多路由器连接在一起来创建一个项目。与使用真实实验室设备相比,在 GNS3 中创建虚拟网络并管理设备轻而易举。用户界面就像是一个主控室,让你只需几次点击便能操控网络设计和设备。本章将向你展示如何使用 GNS3 集中管理你的网络,包括虚拟硬件。

项目管理概述

GNS3 的一个强大功能是项目管理。你可以创建无限数量的网络设计,随时保存并使用它们。这意味着你再也不必浪费时间拆解现有的项目来创建一个新项目,而这在使用物理设备时经常发生。

你不仅可以保存多个项目,还可以保存整个项目配置的多个快照。一个快照会保留项目的网络布局和所有路由器配置在某一时刻的状态。你可以在任何时候恢复一个快照,将整个项目恢复到快照保存时的状态。

注意

快照对于练习 CCNA 或 CCNP 配置训练非常有用。你可以创建一个实验室,应用基本的路由器配置要求(如网络地址、路由协议等),然后拍摄一个快照。一旦你有了基本设置的快照,你就可以练习将场景目标应用到网络中。如果你想稍后再次练习相同的任务,你可以恢复到基本快照,路由器应该无需额外配置即可使用。

GNS3 还允许你管理虚拟硬件。就像使用真实的路由器一样,你可以使用思科扩展模块来升级你的虚拟路由器。你可以添加各种功能,比如额外的随机存取存储器(RAM)、以太网接口、串口、异步传输模式(ATM)和光纤传输网络(SONET)的包(POS)端口。

术语

在开始之前,让我们先了解一些重要的术语。你需要知道拓扑(topology)和项目(project)之间的区别。一个拓扑文件是一个以.gns3结尾的文本文件,主要用于描述设备及其之间的连接。一个项目是一个用户定义的项目文件夹(例如MyLab),存储在GNS3/projects文件夹内。一个用户项目文件夹包含一个名为<project_name>.gns3的拓扑文件、路由器配置、非易失性随机存取存储器(NVRAM)的内容以及其他保存的信息。换句话说,它代表了整个网络,包括拓扑结构和所有设备的配置。

另一个你应该了解的术语是节点。在计算机网络中,节点是指任何连接到网络的设备。在 GNS3 中,节点是指在设备工具栏中找到的任何设备。

要有效管理设备和项目,您需要的不仅仅是词汇;您还需要熟悉 GNS3 的屏幕布局。

屏幕布局

让我们看看标准的 GNS3 布局(如图 4-1 所示),并定义该程序使用的一些概念。

显示两个路由器和一个交换机的 GNS3 工作区屏幕布局

图 4-1. 显示两个路由器和一个交换机的 GNS3 工作区屏幕布局

  • ➊ GNS3 工具栏 一系列图标,便于执行常见任务。

  • ➋ 设备工具栏 用于添加路由器、交换机、终端设备和安全设备,并在设备之间创建链接。要创建拓扑,选择工具栏中的设备类型并将设备从设备窗口拖到工作区。有两种类型的设备:模拟设备和仿真设备。模拟设备模拟实际设备的所有特性(如以太网交换机节点),并且不运行操作系统。仿真设备仿真实际设备的硬件,并需要操作系统才能运行(如运行 Cisco IOS 的虚拟 Dynamips 路由器)。

  • ➌ 控制台 一个命令行界面,您可以在其中管理设备的各个方面。

  • ➍ 拓扑概述 显示项目中设备的状态。设备旁边的绿色圆圈表示设备已启动,红色圆圈表示设备已停止,黄色圆圈表示设备已暂停。模拟设备(如以太网交换机节点)始终为绿色。要查看给定设备上正在使用的链接,请点击设备名称旁边的三角形。

  • ➎ 工作区 设计网络的区域。将设备从设备工具栏拖到工作区并将它们连接在一起。

现在您知道了 GNS3 主屏幕的样子,让我们更仔细地看看您将在那里找到的选项。

使用 GNS3 工具栏

GNS3 工具栏包含几个按功能大致组织的图标组,提供了一种简单的方法来完成任务。第一个组处理项目,第二个组处理链接,第三个组处理设备和快照,第四个组提供了额外的方式来视觉组织项目。

第一个工具栏组

工具栏的第一个图标组,如图 4-2 所示,处理影响整个项目的操作。

第一个工具栏组

图 4-2. 第一个工具栏组

从左到右,这些图标如下:

  • 新建空白项目。创建一个新的项目文件夹,并允许您选择项目名称。

  • 打开项目。打开一个之前保存的项目。要打开项目,选择项目文件夹名称并选择名为 <project_name>.gns3 的文件。

  • 保存项目。将完整项目保存到 GNS3 的projects文件夹中。默认情况下,工作区的 PNG 图像文件将与项目一起保存。

第二组工具栏图标

第二组工具栏图标(如图 4-3 所示)中的按钮,允许你创建项目快照、显示或隐藏接口标签,并通过设备的虚拟控制台端口连接到设备。

第二组工具栏图标

图 4-3. 第二组工具栏图标

从左到右,这些图标如下:

  • 快照。创建设备、链接和 IOS 配置的快照,以记录当时工作区的状态。你可以保存多个快照,并随时恢复到已保存的快照。选项包括创建、删除、恢复和关闭。

  • 显示接口标签。显示或隐藏链接使用的接口名称。这些标签是简写形式,并与工作区中的设备一起显示(例如,FastEthernet0/0 的标签会显示为 f0/0)。

  • 与所有设备建立控制台连接。为工作区中所有运行的路由器打开控制台连接。

注意

当你与所有设备建立控制台连接时,如果终端不支持标签会话,你的屏幕可能会被打开的控制台窗口弄得很杂乱。在处理大型拓扑时,你可能会发现,通过右键单击设备节点并选择控制台来打开和关闭单一会话会更容易。

第三组工具栏图标

第三组工具栏图标,如图 4-4 所示,主要用于控制设备。

第三组工具栏图标

图 4-4. 第三组工具栏图标

从左到右,这四个图标如下:

  • 启动/恢复所有设备。启动所有已停止的设备或恢复所有已暂停的设备。

  • 暂停所有设备。将所有支持暂停的设备置于暂停状态。

  • 停止所有设备。停止所有设备。

  • 重新加载所有设备。重新加载所有设备。重新加载前,请确保保存你的路由器配置和项目,否则你可能会丢失配置!

第四组工具栏图标

最后一组工具栏图标,如图 4-5 所示,提供了更清晰地展示网络布局的工具。你可以向项目中添加矩形、椭圆等对象,甚至生成工作区的截图。

第四组工具栏图标

图 4-5. 第四组工具栏图标

从左到右,最后一组工具栏图标如下:

  • 添加注释。在工作区中创建文本注释。双击文本以修改内容,右键单击文本对象以更改样式属性(如字体大小和颜色)。你还可以旋转文本对象,从 0 度到 360 度。

  • 插入图片。将图像和徽标添加到你的项目中。GNS3 支持 PNG、JPG、BMP、XPM、PPM 和 TIFF 文件格式。

  • 绘制矩形。动态绘制可调整大小的矩形。你可以右键单击矩形对象来更改边框和边框颜色的样式属性。矩形对象可以从 0 度旋转到 360 度。

  • 绘制椭圆。动态绘制可调整大小的椭圆。你可以右键单击椭圆对象来更改边框样式和颜色。

  • 放大。放大工作区以查看细节。

  • 缩小。缩小工作区,查看更大的全局视图。

  • 截图。生成工作区的截图。图像可以保存为 PNG、JPG、BMP、XPM、PPM 或 TIFF 文件,默认情况下保存到你的GNS3/projects文件夹中。

窗口样式和停靠

GNS3 提供了几种窗口样式可供选择。要更改默认样式,请在 Linux 和 Windows 上选择编辑首选项,或在 OS X 上选择GNS3首选项。选择常规类别,选择常规标签页,并使用下拉菜单中的样式选择新的默认样式。点击应用确定以激活更改。GNS3 将在程序重启后记住你的选择。

窗口停靠是围绕 GNS3 工作区的窗口。GNS3 默认显示控制台和拓扑摘要停靠窗口。

要查看或隐藏窗口停靠,选择视图窗口停靠,然后选择你想显示的停靠窗口;任何名称旁边有勾选标记的停靠窗口将会显示在屏幕上。要调整停靠窗口的大小,点击窗口与工作区连接处的边框并拖动,直到达到所需的大小。

你添加到工作区的对象(如注释、图片和形状)可以分组到不同的图层中。要提升或降低一个对象,右键单击该对象并选择提升一层降低一层。此功能允许你在不影响其他图层的情况下操作某一图层中的对象。你可以通过选择视图显示图层来显示对象的图层位置,这在进行高级图层操作时非常有用。

通过使用此工具栏添加形状和颜色,你可以将网络组件分为逻辑组。通过文本,你可以添加有关项目配置的注释和提醒。图 4-6 展示了如何通过使用形状、颜色和注释文本信息来更清晰地呈现信息。

带注释的示例项目

图 4-6。带注释的示例项目

一旦你创建了多个项目,很容易忘记如何配置它们或你的目标是什么。在项目中添加注释(如图 4-6 中的有用注释)是一个简单的方法,可以迅速提醒自己这些信息,尤其是在几周或几个月过去之后。注释很有用——记得使用它们!

使用设备工具栏

设备工具栏(如图 4-7 所示)按功能组织设备。点击设备工具栏中的一个图标,可以查看该设备组中的所有设备。

设备工具栏

图 4-7. 设备工具栏

要向项目中添加设备节点,请从设备工具栏中点击一个图标,显示已配置的设备列表,然后将设备拖动到工作区。你可以按住 SHIFT 键添加多个相同的设备。设备工具栏中的设备类型从左到右分别如下:

  • 路由器。显示所有已配置有效 IOS 镜像文件的 Dynamips 路由器节点,以及 IOU L3 路由器。

  • 交换机。显示所有可用的交换机节点,包括以太网交换机、以太网集线器、ATM 交换机、帧中继交换机、EtherSwitch 路由器和 IOU L2 交换机。

  • 终端设备。显示所有可用的终端设备,包括 QEMU 客户端、VirtualBox 客户端、主机和云设备。

  • 安全设备。显示所有可用的安全设备,包括 ASA 防火墙、IDS/IPS 设备以及你创建的任何自定义节点。

  • 所有设备。显示设备工具栏中所有可用的设备。

  • 添加连接。当选中此项时,鼠标指针会变成十字准星,表示你可以使用设备的虚拟接口将两个设备连接起来。要连接设备,点击第一个设备并选择一个接口;然后对第二个设备重复该操作,完成连接。

现在点击所有设备图标,你应该看到一个窗口,显示 GNS3 中所有已配置的设备。你可以将任何设备拖动到工作区并在项目中使用它们。

创建你的第一个项目

现在你已经熟悉了 GNS3 界面,我们来深入探讨一些项目管理细节。我将介绍最简单的操作方法,但请记住,GNS3 通常提供不止一种方法来完成任务。

当你启动 GNS3 时,会出现一个新项目窗口,如图 4-8 所示。在这里,你可以选择打开一个已有项目或创建一个新项目。

新项目窗口

图 4-8. 新项目窗口

要创建一个新项目,将untitled替换为你的项目名称,然后点击确定。如果你已经在 GNS3 中,选择文件新建来创建一个新项目。

创建了新 GNS3 项目后,是时候开始构建拓扑了,从一些 Dynamips 路由器开始。

使用路由器

通过从设备工具栏拖动几个路由器到 GNS3 工作区来开始一个项目。如果在添加设备时按住 SHIFT,你应该会看到一个对话框,允许你添加多个相同的设备。尝试通过这种方式添加第一对路由器。如果你在设备工具栏上看不到任何路由器,请参考设置你的第一个 IOS 路由器,学习如何将设备添加到 GNS3 中。

将路由器添加到工作区后,它们应该会自动命名为 R1 和 R2。这些路由器的名称来自于 GNS3 文件 ios_base_startup-config.txt 中的命令 hostname %h。该文件包含应用于所有路由器的默认 IOS 设置,并在配置路由器时将其分配给设备。要找到 Dynamips 配置文件,请进入首选项,从左侧面板选择 Dynamips,然后选择 IOS 路由器。选择一个已配置的路由器,点击 编辑 以显示 Dynamips IOS 路由器配置选项,如图 4-9 所示。

在这里,你可以验证设备的 startup-config 和 private-config 文件的路径。当一个路由器被放置在你的工作区时,startup-config 文件 ios_base_startup-config.txt 的内容会应用到路由器的启动配置中,并在路由器启动时加载到路由器的运行配置中。如果你希望创建全球应用于你的路由器的自定义参数(例如,自动启动接口或使用预先分配的用户名和密码),可以使用文本编辑器修改并保存 ios_base_startup-config.txt 文件。你可以向该文件应用任何有效的 Cisco IOS 命令,前提是你的 IOS 支持这些命令。当然,你不需要修改 ios_base_private-config.txt 文件。该文件由 GNS3 安装,以便你在路由器重启时使用安全外壳(SSH),而不需要在路由器上生成新的加密密钥。

Dynamips IOS 路由器配置对话框

图 4-9. Dynamips IOS 路由器配置对话框

需要注意的是,你所做的更改只会应用于你添加到新项目中的路由器,不能回溯应用于之前保存的项目中的路由器。

警告

在修改你的 ios_base_startup-config.txt 文件之前,你可能需要保存一个备份副本。如果你输入无效的命令,路由器可能会产生错误并发生故障。

在路由器之间创建连接

在你将设备放置在工作区后,你需要在设备之间添加链接,以创建一个完全功能的网络。这相当于在真实网络中布线,只不过你使用的是虚拟电缆而非物理电缆。要为设备添加链接,请点击设备工具栏中的添加链接图标。你的光标应变为十字准线,表示你可以选择设备。要创建链接,点击一个设备。你将看到一个下拉菜单,列出可用的接口,如图 4-10 所示。

带有两个 FastEthernet 接口的路由器

图 4-10. 带有两个 FastEthernet 接口的路由器

接口旁边的红色圆圈表示该接口可用;绿色圆圈表示该接口已被现有链接使用。选择任何可用接口以建立连接,然后选择另一设备上的接口以完成连接。你只能在两种兼容的接口类型之间建立连接。换句话说,就像在物理硬件中一样,你不能将串行电缆插入以太网接口。

在某些情况下,你可能希望中断两个设备之间的链接,以模拟停机、重新配置网络或出于其他原因。要中断两个设备之间的链接,右键点击该链接并选择删除,如图 4-11 所示。

删除设备之间的链接

图 4-11. 删除设备之间的链接

要重新建立连接,再次点击添加链接图标,并选择相同的设备。

配置虚拟硬件

当你在工作区中放置虚拟路由器时,它们具有与配置设备的 IOS 镜像时相同的配置选项。但这并不意味着你的路由器只能使用此配置。像个人电脑一样,思科路由器具有扩展端口,以提供额外的功能,而 GNS3 Dynamips 路由器也提供与其物理版本相同的扩展选项。要修改路由器的硬件配置,右键点击路由器并选择配置;然后点击节点名称(例如 R1),如图 4-12 所示。

思科 IOS 路由器节点配置对话框

图 4-12. 思科 IOS 路由器节点配置对话框

在节点配置对话框中,您应该看到该型号路由器的可用配置选项。基础型号仅允许您添加简单选项,如 Cisco SLOT、WIC 或 RAM 卡,而更高级的型号则允许您定义一些功能,如机箱类型或在 Cisco 7200 系列路由器中找到的网络处理引擎(NPE)类型。

您可以配置和应用第三章中涉及的相同设备选项(内存和插槽),但您在此处所做的更改将仅应用于项目中选择的设备或设备组,所有其他设备将保持不变。

启动、停止和暂停路由器

我已经向您展示了如何通过右键点击路由器并选择启动或停止来启动和停止路由器,但您也可以通过右键点击路由器并选择挂起来来暂停路由器。当您想要模拟故障而不必保存配置、停止路由器并重新启动时,暂停路由器非常有用。事实上,反复停止和重新启动 GNS3 路由器可能会导致某些 IOS 版本的 Dynamips 崩溃,因此我建议改为暂停和恢复操作。

挂起功能在网络收敛测试中表现得尤为突出。您可以快速模拟故障和恢复,测试路由协议,如路由信息协议(RIP)、EIGRP 和 OSPF,以及冗余协议,如 HSRP、虚拟路由器冗余协议(VRRP)和网关负载平衡协议(GLBP)。要模拟故障,请点击挂起并监控其他路由器,验证是否已发生故障切换或收敛。

要模拟恢复,右键点击设备并选择启动以恢复路由器。由于 Dynamips 的模拟限制,因吞吐量限制,故障切换或收敛可能会比使用实际硬件时稍微慢一些。别担心——这完全是正常的。

当然,即使您可以启动和停止路由器,在登录到控制台之前,您也无法对其进行太多操作。

登录路由器

您通过模拟的控制台端口登录到路由器。如果这听起来很熟悉,那是因为这也是您登录到实际 Cisco 设备的方式。在物理硬件上,控制台端口是您插入 Cisco 小蓝色串行控制台电缆的地方。在打开控制台连接之前,请确保路由器已启动;否则,您将无法获得控制台界面。

配置终端设置

无论你使用的是 Windows、OS X 还是 Linux,GNS3 都提供了多种终端类型供你使用。但为什么你会更喜欢某一种终端而不是其他呢?一个原因可能是因为它已经安装在你的系统上。例如,在 Linux 上,你可能使用的是默认安装了 gnome-terminal 的 Gnome 桌面。如果是这种情况,你可能希望修改 GNS3 的终端设置,使用 gnome-terminal。另一个原因是,有些终端程序提供的功能比其他程序更多。例如,你可能希望选择一个允许使用标签页窗口的终端类型,这样你就可以同时打开多个控制台,而不必让多个打开的窗口堆积在屏幕上。

要修改终端设置,请进入首选项,点击常规,然后点击控制台应用程序选项卡,显示如图 4-13 所示的窗口。

终端设置

图 4-13. 终端设置

在这里,你可以选择一个预定义的终端类型,并自定义控制台应用程序命令下的命令设置。(查看你的终端应用程序文档,了解你的系统上可用的选项。)完成后,点击设置,然后点击应用确定

要同时登录到所有路由器,请点击第二个工具栏组中的控制台连接到所有设备图标(见图 4-3)。要登录到单个路由器,请右键点击工作区中的路由器节点,并从菜单中选择控制台辅助控制台(见图 4-14)。

要更改路由器控制台或 AUX 端口监听的传输控制协议(TCP)端口号,右键点击工作区中的设备,点击配置,然后选择常规选项卡。你选择的端口号必须对 GNS3 中的每个设备以及你的 PC 都是唯一的。作为规则,我尽量避免修改端口号,除非必须这样做。GNS3 在管理端口号方面做得相当不错,随便改动可能会导致麻烦。但如果你 PC 上运行的其他 TCP/IP 应用程序恰好与 GNS3 发生冲突,你可能需要进行一些更改,才能登录到路由器。

选择控制台或辅助控制台以连接到路由器

图 4-14. 选择控制台或辅助控制台以连接到路由器

在你的 PC 上使用netstat命令来验证哪些 TCP/IP 端口已经在使用。

一旦你与路由器建立了控制台连接,你应该会看到一个熟悉的 Cisco 控制台窗口。

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Connected to Dynamips VM "R1" (ID 1, type c3725) - Console port
Press ENTER to get the prompt.
ROMMON emulation microcode.

Cisco 1720 (MPC860) processor (revision 0x202) with 55206K/9830K bytes of memory.
Processor board ID FTX0945WOMY (4279256517), with hardware revision 000
M860 processor: part number 0, mask 0
Bridging software.
X.25 software, Version 3.0.0.
1 FastEthernet/IEEE 802.3 interface(s)
32K bytes of non-volatile configuration memory.
4096K bytes of processor board System flash (Read/Write)

SETUP: new interface FastEthernet0 placed in "shutdown" state

Press RETURN to get started!
00:00:02: %LINK-5-CHANGED: Interface FastEthernet0, changed state to administratively down
00:00:03: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0, changed state to down
R1#

此时,你可以开始使用标准 IOS 命令来配置路由器。一个可能看起来很奇怪的命令是show flash命令。通常,这个命令显示保存在闪存中的文件,例如路由器的 IOS 镜像文件和其他来自 Cisco 的默认文件。然而,在 GNS3 中,你会注意到默认情况下这里没有保存任何文件。而且,闪存驱动器可能是未格式化的;如果是这种情况,你需要先执行erase flash:命令,才能将文件保存到闪存中。否则,你可能会遇到类似下面的错误:

%Error opening slot0:router-confg (Bad device info block)

注意

如果你使用 NM-16ESW 交换模块,你可能需要在创建 VLAN 之前清除路由器的闪存,否则 VLAN 数据库(vlan.dat)将无法保存。

这一节到目前为止一直在讨论 Dynamips 路由器,但你也可以在 GNS3 项目中使用交换机,接下来我将介绍这一部分内容。

以太网交换机节点

以太网交换机节点是一个模拟的虚拟交换机,允许你创建 VLAN 接入端口和中继端口。以太网交换机节点支持接入端口、行业标准的 802.1Q 中继端口和 QinQ 标记。然而,它不支持 Cisco 的专有交换机间链路(ISL)中继协议。

要使用以太网交换机节点,将该节点拖动到工作空间中。你无需启动以太网交换机节点,它们始终可以直接使用。

要配置交换机,右键单击以太网交换机节点图标并选择配置。在图 4-15 中显示的节点配置窗口中,单击交换机名称(例如 SW1)以修改默认的交换机端口或添加新端口。

默认情况下,有八个接入端口分配给 VLAN 1。要更改某个端口,点击该端口号并根据需要修改设置。完成后,点击应用确定。要添加新端口,定义端口设置并点击添加按钮;然后点击应用。添加端口完成后,点击确定以完成设置。

以太网交换机节点的一个替代方案是配置一个带有网络交换模块的 Dynamips 路由器。使用交换模块的优势是它支持更多的功能(例如生成树协议);缺点是使用网络交换模块会占用更多的 PC 资源。如果你只需要一个简单的交换机功能,我建议你使用以太网交换机节点。如果你需要完整的 IOS 交换功能,可以使用安装了交换模块的路由器,如 EtherSwitch 路由器,或者使用 IOU L2 交换机镜像(在第九章中讨论)。

以太网交换机节点配置器窗口

图 4-15. 以太网交换机节点配置器窗口

更改符号和组织设备

你可以更改工作区中用于表示设备的符号,并选择设备在设备工具栏中的位置。假设你想更改一台 IOS 路由器的符号。要更改设备的符号,请在 Linux 和 Windows 中选择编辑首选项,或者在 OS X 中选择GNS3首选项。接下来,找到你想更改的设备,右键点击设备图标,并选择更改符号,如图 4-16 所示。

更改符号

图 4-16. 更改符号

你可以以相同的方式更改 IOU 设备、VirtualBox 虚拟机和 QEMU 虚拟机的符号。符号选择窗口,如图 4-17 所示,应该在你点击更改符号后出现。

符号选择和设备类别

图 4-17. 符号选择和设备类别

要更改设备符号,请在符号选择窗口中向下滚动并选择你想要使用的符号。接着,使用下拉菜单选择一个类别。这是设备将在设备工具栏中放置的类别。类别包括交换机、路由器、终端设备和安全设备。完成后,点击确定以完成更改。

最终思考

在本章中,你学习了设置 GNS3 网络的基础知识,所以现在是创建一些实验并练习所学内容的好时机。如果你正在为 Cisco 认证考试做准备,那么尽可能多地与 Cisco 设备进行实践是通过考试的唯一方法。(这些考试很难!)

从创建图 4-1 中的网络开始。创建拓扑后,登录到路由器,配置它们的接口,并尝试在它们之间进行 ping 操作。通过使用暂停和恢复功能,或者启动和停止设备,模拟故障和恢复。一旦你探索了一些 IOS 命令和 GNS3 功能后,可以尝试创建一个简单的 CCNA 实验,至少包含三个路由器;网上有很多 CCNA 和 CCNP 的示例实验。

最后需要提醒的一点是:如果你创建了使用多协议路由的大型拓扑,可能会发现你需要增加路由器的协议定时器,以防止接口反复上下跳动。(这种情况很少发生,但偶尔会出现。)这个问题是由 Dynamips 中的延迟效应引起的。串行连接是另一个常见的问题领域;一些路由器镜像在模拟串行端口时可能会不稳定。如果你发现某个路由器的串行端口出现故障,导致路由器崩溃或连接断开,试试更换路由器型号或不同的 IOS 镜像。通常,c36xx、c37xx 和 7200 IOS 镜像在 Dynamips 中最为稳定,应该尽可能使用这些镜像。

在第五章中,你将学习如何使用 Wireshark 捕获网络数据包的基本知识,并通过使用 VPCS、VirtualBox 和 Linux 添加主机来扩展你的网络。

第五章:集成主机和使用 Wireshark

到目前为止,你已经学习了如何使用思科设备创建网络,但 GNS3 还能做更多!它提供了一套强大的网络工具,允许你将外部应用程序集成到 GNS3 项目中。在本章中,你将通过学习如何使用虚拟 PC 模拟器和 VirtualBox 将 PC 主机集成到项目中,来探索这些工具。章节还将介绍如何使用 Wireshark 进行基本的包嗅探。

虚拟 PC 模拟器

向项目中添加主机的一种方式是使用 VPCS,这是一款小型应用程序,最多可模拟九台类似 DOS 的计算机。VPCS 主机命令集有限,但非常适合用于测试 GNS3 网络中的端到端连接性。VPCS 占用的 PC 资源非常少,这使得你可以在项目中添加大量主机而不会拖慢计算机速度。

安装 VPCS

如果你使用的是 Windows 或 OS X 系统,VPCS 应该已经包含在安装 GNS3 时。如果你使用的是 Linux 系统,VPCS 的源代码应该包含在你的 GNS3 for Linux 下载包中,但需要先编译才能使用。使用以下命令进行编译和安装,x 替换为你 VPCS 源文件的版本号:

$ **unzip vpcs-x.zip**
$ **cd vpcs-x/src**
$ **sh mk.sh**
$ **sudo cp vpcs /usr/local/bin/**

要使用 VPCS,首先从设备工具栏中的“终端设备”拖动一个 VPCS 主机节点到工作空间中。在启动 VPCS 主机之前,它必须先连接到你项目中的其他设备。启动 VPCS 主机并打开控制台后,你将看到一个类似于 图 5-1 的窗口。

VPCS 控制台

图 5-1. VPCS 控制台

如果你没有看到 VPCS 控制台,或者应用程序显示错误,请检查程序是否位于 Linux 系统中的 /usr/local/bin/ 目录下,并确保在 GNS3 的偏好设置中正确设置了路径。开发者提供的支持和文档非常有限,如果问题持续存在,你可能需要访问 GNS3 论坛 (community.gns3.com/) 寻找可能的解决方案。

VPCS 命令

VPCS 中的命令大多数是自解释的,但这里我会介绍其中几个命令,帮助你入门。要查看支持的命令列表,可以输入问号 ?。要显示主机的配置,可以输入 show 命令。要显示特定命令的参数,可以输入命令名称后跟一个问号。例如,输入 ping ? 将显示 ping 命令的所有选项。

注意

像思科 IOS 一样,VPCS 支持命令的简写语法。例如,ping 命令可以简写为 p。你可以简写任何 VPCS 命令,但必须输入足够的字母,使得命令能够与其他以相同字母开头的命令区分开来。

VPCS IP 地址配置

启动 VPCS 后,您需要配置主机以便与 GNS3 一起使用。通常,这只需要设置 IP 地址、子网掩码和网关地址。

VPCS 支持 IPv4 和 IPv6 地址。您可以手动配置 IP 地址,或者如果 GNS3 项目中运行了动态主机配置协议(DHCP)服务器,您也可以自动获取 IP 地址。要手动配置 IPv4 地址,您需要输入 ip-address mask gateway。以下示例将 IPv4 地址设置为 192.168.1.50,子网掩码设置为 255.255.255.0,默认网关设置为 192.168.1.1:

PC1> **ip 192.168.1.50 255.255.255.0 192.168.1.1**

您可以使用无类域间路由(CIDR)表示法输入相同的 IPv4 地址,代替标准的子网掩码,如下所示:

PC1> **ip 192.168.1.50 /24 192.168.1.1**

要手动配置 IPv6 地址,请输入ip命令后跟有效的 IPv6 地址和掩码。以下示例将 IPv6 地址设置为 2014:12:1a::50,并使用 64 位子网掩码:

PC1> **ip 2014:12:1a::50 /64**

要使用 DHCP 自动配置主机,请为每个需要地址的主机输入dhcp命令,如下所示:

PC1> **dhcp**

使用save命令保存您的 VPCS 设置与 GNS3 项目一起使用。

PC1> **save**
.  done

设置将保存在 GNS3 项目文件夹中的GNS3/projects/<project_name>/project-files/vpcs/<vpcs_uuid>路径下。稍后,当您加载 GNS3 项目时,配置设置将自动应用到主机上。

要测试 VPCS,请创建一个包含 VPCS 主机节点的项目,并将其连接到其他设备,如路由器。为您的 VPCS 主机和其他设备分配 IP 地址,然后使用pingtrace测试连通性。如果一切正常,您应该会收到类似以下的回复:

PC1> **ping 192.168.1.1**
192.168.1.1 icmp_seq=1 ttl=255 time=35.821 ms

成功 ping 通设备后,您可以使用arp命令检查 ARP 缓存(MAC 地址到 IP 表),如以下所示:

PC1> **arp**
cc:00:05:a9:00:00 192.168.1.1 expires in 114 seconds

如果 ping 不成功,VPCS 会显示“主机不可达”消息:

PC1> **ping 192.168.1.1**
host (192.168.1.1) not reachable

您可以通过验证 GNS3 中的路由器接口是否正常工作,并检查所有的 IP 地址和子网掩码是否已正确分配,来排除故障。

另一个原因可能是您计算机的防火墙设置,特别是如果您使用的是 Windows 计算机。通常,在使用 GNS3 时完全禁用防火墙是一个好主意,并可能解决此问题以及其他问题。

VirtualBox

VPCS 是一个非常适合在 GNS3 中添加简单主机并测试连通性的工具,但有时您需要一个运行真实操作系统的主机,而不是模拟操作系统。这时,VirtualBox 就派上用场了。VirtualBox 可以运行大多数基于 PC 的操作系统,包括 Windows、Linux、FreeBSD 等。它还适用于运行网络操作系统,如 Arista vEOS、Juniper Firefly 和 NX-OSv。

使用 VirtualBox 的好处是它为您提供了运行实际操作系统的主机;但缺点是,这些操作系统可能需要您 PC 的大量资源。如果您只需要测试连通性,那么继续使用 VPCS 就可以,但如果您需要一个提供强大网络实用工具的主机(例如,测试 GNS3 网络的安全性),或者运行其他路由器或交换机操作系统,那么您可能需要使用 VirtualBox。

在 Windows 上安装

要在 Windows 上安装 VirtualBox,请从 VirtualBox 网站下载适当的安装程序(* www.virtualbox.org/*)。启动安装程序并在看到欢迎屏幕后点击下一步,以打开自定义窗口。在此处进行任何所需的自定义设置,并按照屏幕上的说明完成安装。我建议接受默认值,以确保 VirtualBox 与 GNS3 正确运行。

安装完成后,您可以通过使用 Windows 开始菜单或点击 VirtualBox 图标来启动该应用程序。

在 OS X 上安装

要在 OS X 上安装 VirtualBox,请从 VirtualBox 网站下载适当的安装程序(* www.virtualbox.org/)并启动它。当 VirtualBox 安装屏幕出现时,双击VirtualBox.pkg图标并按照屏幕上的说明进行操作。安装需要提升权限,因此请准备好您的管理员密码。安装包安装完成后,您可以通过双击 VirtualBox 图标从应用程序*文件夹中启动它。

在 Linux 上安装

VirtualBox 支持大多数 Linux 发行版,但请检查您的 Linux 包管理器,以验证它是否在您的特定平台上受支持。在 Ubuntu 和大多数其他基于 Debian 的 Linux 系统上,使用apt-get工具更新包管理器并安装 VirtualBox 的最新版本。确保您可以访问互联网,然后在终端窗口中输入以下命令:

$ **sudo apt-get update**
$ **sudo apt-get install virtualbox**

一旦工具安装完成,您可以通过打开终端窗口并输入virtualbox来启动它,或者通过 Linux 窗口管理器启动它。

导入设备

VirtualBox 的设备是一个预配置的虚拟机,通常运行定制的 Linux 发行版,您可以在 GNS3 项目中使用它。使用真实的操作系统比使用像 VPCS 这样的模拟器提供更多的命令和更大的灵活性。您可以从 GNS3 网站的下载部分下载预配置的 VirtualBox 设备。

在使用之前,必须先将虚拟设备导入到 VirtualBox 中。虚拟设备包的文件名以 .ova 结尾,表示 Open Virtual Appliance,通常被称为 OVA 文件。要导入虚拟设备,启动 VirtualBox,你将看到 VirtualBox 管理器窗口。在 VirtualBox 管理器中,你可以导入或创建新的虚拟机客户操作系统,并管理所有已安装的客户操作系统。导入虚拟设备是添加客户操作系统的快速且简便的方法,因为操作系统的配置和安装工作已经为你完成。

在 GNS3 网站上找到的虚拟设备通常经过优化,能够比标准安装的同一操作系统使用更少的计算机资源。不幸的是,这意味着你的虚拟设备可能没有你所需的所有命令或工具,但你应该能够通过其软件包管理器来更新或安装额外的软件。

在图 5-2 中,你可以看到 VirtualBox 已经配置了一个客户操作系统(Linux Microcore)。

VirtualBox 管理器显示导入的 Linux 客户操作系统

图 5-2. VirtualBox 管理器显示导入的 Linux 客户操作系统

选择客户操作系统时,会显示关于客户操作系统配置的基本信息,例如基础内存和分配给虚拟机的磁盘空间。要修改虚拟机的设置,选中客户操作系统并点击工具栏中的 Settings。就像真实的 PC 一样,虚拟 PC 客户操作系统通常在分配更多资源(如内存或额外的 CPU 核心)后运行得更好。

要导入 VirtualBox 客户操作系统,下载一个镜像文件并将其复制到用户目录中的一个文件夹。启动 VirtualBox,选择 FileImport Appliance,然后点击 Open Appliance 并浏览到你保存文件的位置。选择镜像文件并点击 Continue,然后点击 Import 完成导入过程。要测试你的 VirtualBox 客户操作系统,点击 Start,操作系统应当像正常的 PC 一样启动并运行。

测试完新导入的操作系统后,你就可以开始配置 GNS3 的 VirtualBox 偏好设置了。

VirtualBox 偏好设置

为了管理 VirtualBox 客户操作系统,GNS3 使用 VBoxManage 应用程序。这个程序在你安装 VirtualBox 时会自动安装。在将 VirtualBox 客户操作系统添加到 GNS3 之前,请验证 VBoxManage 的路径。启动 GNS3,选择 GNS3Preferences(在 OS X 上)或 EditPreferences(在 Windows 和 Linux 上),然后点击 VirtualBox,以打开如图 5-3 所示的窗口。

VirtualBox 常规设置标签页

图 5-3. VirtualBox 常规设置标签页

在 Ubuntu Linux 中,常规设置选项卡中的路径应设置为/usr/bin/vboxmanage。根据需要调整路径,然后点击应用确定。在 Windows 和 OS X 中,VBoxManage 路径通常不需要更改。

取消勾选使用本地服务器将允许你在创建 VirtualBox 主机时选择本地或远程 GNS3 服务器。保持勾选框选中,确保 VirtualBox 虚拟机始终在你的 PC 上本地运行。

如果在启动 VirtualBox 主机或打开主机的控制台连接时遇到问题,可能是一个或多个默认控制台端口号已被你 PC 上正在运行的另一个应用程序占用。要解决此问题,尝试关闭该应用程序或禁用 PC 防火墙。另一个可能的原因是你使用的 VirtualBox 虚拟机未配置为接受控制台连接。

VirtualBox 虚拟机设置

配置(或至少审查)GNS3 中的 VirtualBox 首选项后,你需要设置一个或多个 VirtualBox 主机以供项目使用。首先在左侧面板中选择VirtualBox 虚拟机。点击新建,从虚拟机列表的下拉菜单中选择你的 VirtualBox 虚拟机,如图 5-4 所示。

新建 VirtualBox 虚拟机屏幕

图 5-4. 新建 VirtualBox 虚拟机屏幕

单击完成以完成安装。你应该可以看到虚拟机当前分配的设置,如图 5-5 所示。

VirtualBox 虚拟机首选项

图 5-5. VirtualBox 虚拟机首选项

默认情况下,你的虚拟机设备可以在设备工具栏的“终端设备”下找到。通过右键点击首选项窗口中的虚拟机图标(此示例为 Linux Microcore),你可以为虚拟机分配不同的图标,并选择它将驻留在设备工具栏的位置。这样可以帮助你更好地组织所有的 GNS3 设备。

要修改虚拟机的设置,选择虚拟机并点击编辑。在大多数情况下,你需要进入常规设置选项卡,勾选启用远程控制台以无头模式启动虚拟机框,如图 5-6 所示。第一个选项允许你从 GNS3 分配的终端应用程序访问运行中的虚拟机控制台;第二个选项会在你在 GNS3 中启动虚拟机时,防止 VirtualBox 打开控制台窗口。

VirtualBox 虚拟机配置的常规设置选项卡

图 5-6. VirtualBox 虚拟机配置的常规设置选项卡

要修改网络设置,请点击网络选项卡。你可以更改虚拟机中安装的适配器数量、起始适配器编号(通常是 0 或 1),以及安装在虚拟机中的适配器类型。完成后,点击应用确定以保存修改。

配置完虚拟机客户操作系统后,你可以在 GNS3 项目中使用它。

在项目中使用 VirtualBox 主机

要将 VirtualBox 主机添加到项目中,从“终端设备”窗口拖动 VirtualBox 主机节点图标到你的 GNS3 工作区。

每个 GNS3 项目中只能使用一次 VirtualBox 主机。如果你希望在一个项目中多次使用特定的 VirtualBox 主机,请启动 VirtualBox 并使用克隆功能创建虚拟机的克隆副本。

然后,启动 GNS3,按照之前概述的步骤在 VirtualBox 偏好设置中配置克隆的主机。下次你将 VirtualBox 主机节点添加到工作区时,克隆的操作系统将可用。

在将 VirtualBox 主机节点添加到工作区后,你可以将其链接到其他 GNS3 设备。

将 VirtualBox 主机节点链接到其他设备

要在 VirtualBox 主机节点和其他设备之间添加链接,请点击添加链接工具栏图标;然后点击你的 VirtualBox 主机节点并选择要用于该链接的接口。选择另一个设备并选择一个接口以完成连接。

要启动主机,右键点击 VirtualBox 主机节点图标并选择启动。通过在 VirtualBox 主机和它连接的设备上配置 IP 地址来测试连接;然后使用ping命令验证连通性。

在大多数 Linux 系统中,如 Microcore,你可以使用ifconfigroute命令手动配置 IP 地址和默认网关。要查看 Linux 中可用的网络接口卡(NIC),请使用不带任何配置选项的ifconfig命令。

$ **ifconfig**

eth0      Link encap:Ethernet HWaddr 08:00:27:7F:91:0A
          UP BROADCAST MULTICAST MTU:1500 Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
          Interrupt:10 Base address:0xd020

eth1      Link encap:Ethernet HWaddr 08:00:27:C5:FC:66
          UP BROADCAST MULTICAST MTU:1500 Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
          Interrupt:9 Base address:0xd060

注意

并非所有 Linux 系统都使用ifconfigroute命令来配置 TCP/IP,但大多数系统使用。如果你的发行版中没有这些命令,请查看 Linux 文档,了解如何配置接口。

如果你使用的是 Windows PC 虚拟机,你可以通过打开“网络和共享中心”并点击更改适配器设置来手动配置 IP 地址。右键点击你想配置的适配器,选择属性以修改 TCP/IP 设置,如图 5-7 所示。

Windows TCP/IP 接口属性

图 5-7. Windows TCP/IP 接口属性

输入你的 IP 地址信息并在完成后点击确定。如果你的 GNS3 项目中配置了 DHCP 服务器,你可以留空这些字段,并选择自动获取 IP 地址

使用 Linux 虚拟机的简单 VirtualBox 项目

现在,您已将一个 Linux VirtualBox 虚拟机添加到 GNS3 中,让我们创建一个简单的项目,将主机与 Cisco IOS 路由器连接。首先创建一个项目,如 图 5-8 所示。将一个 VirtualBox Linux 主机和一个 Dynamips 路由器拖到工作区,并使用以太网交换机节点将它们连接起来。

VirtualBox 主机和 Cisco IOS 路由器项目

图 5-8. VirtualBox 主机和 Cisco IOS 路由器项目

启动设备并开始配置您的项目,通过为 VirtualBox Linux 主机的接口 eth0 分配 IP 地址。右键点击 Linux Microcore 节点并选择 控制台 打开终端。然后,在 Linux 终端中输入以下命令来分配 IP 地址:

$ **sudo ifconfig eth0 10.1.1.1 netmask 255.255.255.0 up**

接下来,打开 R1 路由器的控制台,为接口 f0/0 分配 IP 地址并启动接口。

R1# configure-terminal
R1(config)# interface f0/0
R1(config-if)# ip address 10.1.1.2 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# exit
R1#

最后,通过从 R1 路由器 ping 您 Linux 主机的 IP 地址来测试连通性。

R1# ping 10.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/16/32 ms

现在让我们来看看如何使用 Wireshark 分析您在 GNS3 网络中的数据包。

Wireshark

Wireshark 是网络工程师最强大的数据包分析工具之一,而且是免费的!数据包分析器,有时也叫做 数据包嗅探器,是一款可以捕获 IP 数据包的软件,当数据包在您的网络中传输时,它能够捕捉到。然后,您可以打开数据包并分析其内容。像 Wireshark 这样的数据包嗅探器用于故障排除网络协议、阻止黑客攻击,甚至识别病毒,但初学者往往忽视它们。如果您是一个有抱负的网络工程师,将 GNS3 和 Wireshark 一起使用,是学习网络工作原理和网络协议运作的绝佳方式。

在 Windows 上安装

如果您使用 Windows 一体化安装程序安装了 GNS3,则 Wireshark 应该已经安装。如果您使用的是 OS X 或 Linux,则需要手动下载并安装 Wireshark。

在 OS X 上安装

在 OS X 上安装 Wireshark 之前,您需要安装 XQuartz,它是一个类似于 Linux 系统中 X.Org 的 OS X 版本 X Window 系统。

从 Mac OS Forge 网站下载适合的 XQuartz 版本 (xquartz.macosforge.org/)。双击安装程序,然后点击 XQuartz.dmg 安装包。点击 继续,直到您到达欢迎界面,然后点击 我同意安装 完成安装。

接下来,从开发者网站下载并安装 Wireshark (www.wireshark.org/)。双击下载的文件,然后点击 wireshark.dmg 安装包。在欢迎界面点击 继续,我同意,然后点击 安装 完成安装。

第一次启动 Wireshark 时,OS X 会询问 X Window 程序的位置。在文件窗口中,点击浏览,进入应用程序/实用工具文件夹,然后选择XQuartz

注意

第一次启动 Wireshark 时,XQuartz 会打开一个 Xterm 窗口,但不会启动 Wireshark。这个奇怪的现象可以通过关闭 XQuartz 并重新启动 Wireshark 来轻松解决。打开 Wireshark 可能需要一些时间,但这是正常现象。当应用程序启动时,您应该看到 Wireshark 的欢迎界面。

现在 Wireshark 已经安装,我们来看看如何从项目中的设备捕获数据包。

在 Linux 上安装

要使用 Ubuntu Linux 上的高级包工具安装最新版本的 Wireshark,打开终端程序并输入以下命令:

$ **sudo apt-get update**
$ **sudo apt-get install wireshark**

在提示时确认安装,包将会被安装。安装过程完成后,Wireshark 应该可以使用了。

在 GNS3 中捕获数据包

要开始捕获数据包,请右键点击两个设备之间的链接并选择开始捕获,如图 5-9 所示。(要停止捕获,右键点击相同的链接并选择停止捕获。)

开始捕获数据包。

图 5-9。开始捕获数据包。

GNS3 会提示您选择源设备、接口名称以及用于捕获数据的封装类型。您可以在以太网和串行接口上捕获数据。在以太网连接上,您只能选择以太网封装:DLT_EN10MB,但在串行连接上,您可以选择 Cisco HDLC 封装:DLT_C_HDLC、Cisco PPP 封装:DLT_PPP_SERIAL 或帧中继封装:DLT_FRELAY。

要捕获标准的 Cisco 串行数据(高级数据链路控制),选择HDLC;要捕获串行点对点协议数据,选择PPP;要捕获帧中继数据,选择FRELAY。使用下拉菜单进行选择,如图 5-10 所示。

选择数据源以捕获串行数据包

图 5-10。选择串行数据包捕获源

在做出选择并点击确定后,GNS3 将打开 Wireshark 并开始捕获数据包,如图 5-11 所示。请注意,Wireshark 窗口被分为三个不同的面板。

  • ➊ 数据包列表窗格 窗口的顶部窗格专门用于显示正在捕获的单个数据包。数据包字段显示在顶部,包括数据包序列号(No.)、时间戳(Time)、源 IP 地址(Source)、目标 IP 地址(Destination)、协议名称(Protocol)、帧长度(Length)和信息字段(Info)。包含不同协议类型的数据包以不同颜色显示,帮助识别它们。

  • ➋ 数据包详情窗格 在从数据包列表中选择一个数据包后,数据包的协议和协议字段的详细信息将显示在中间窗格中。你可以展开或折叠字段,以显示或隐藏它们的详细信息。显示的字段名称是特定于捕获的数据包类型的,会根据不同的数据包类型而变化。

  • ➌ 数据包字节窗格 主窗口的下部窗格以十六进制格式显示原始数据,右侧显示 ASCII 字符。这是数据在网络上传输时的原始样子。Wireshark 允许你以十六进制或二进制格式查看这些信息。

GNS3 中的简单 Wireshark 捕获

图 5-11. 来自 GNS3 的简单 Wireshark 捕获

如果你在数据包列表中没有看到任何数据包,关闭 Wireshark 并停止捕获。确保你的路由器接口已启用并分配了 IP 地址,然后重新启动捕获并再次启动 Wireshark。

注意

要了解更多关于使用 Wireshark 的内容,我强烈推荐阅读 Practical Packet Analysis, 第二版 ,作者 Chris Sanders(No Starch Press,2011)。你甚至可以成为 Wireshark 认证网络分析师(WCNA)。

要更改 Wireshark 在 GNS3 中的默认行为,请进入首选项并选择数据包捕获。为了防止 GNS3 在捕获数据包时自动启动 Wireshark,请取消选中自动启动数据包捕获应用程序,如图 5-12 所示。

你可以选择保存数据包捕获并稍后分析。为此,选择下拉菜单中的Wireshark 传统捕获(在预配置的数据包捕获读取命令下),然后点击设置、应用确定。现在,当 GNS3 捕获数据时,它会自动将捕获的文件保存在项目文件夹中的一个名为captures的目录下,如GNS3/projects/<project_name>/project-files/captures/

要查看已保存的数据包捕获,请在 PC 上启动 Wireshark,选择文件打开,浏览到captures文件夹,选择一个捕获文件。.pcap 捕获文件会以参与捕获的 GNS3 设备命名,如R1_FastEthernet0-0_to_R2_FastEthernet0-0.pcap

Wireshark 捕获首选项

图 5-12. Wireshark 捕获首选项

要了解更多关于 Wireshark 的信息,可以查看在线用户指南 (www.wireshark.org/docs/wsug_html_chunked/)。它结构清晰,提供了大量关于使用该软件的信息。

最后的思考

GNS3 的一个关键特点是其模块化设计及使用其他开源软件扩展项目的能力。通过 VPCS,你可以添加大量简单的 PC 主机,而使用 VirtualBox,你可以运行像 Linux 这样的完整操作系统。这一特性使得 GNS3 具有很强的扩展性,因为任何在 VirtualBox 中运行的网络操作系统都可以被添加到你的 GNS3 项目中。

Wireshark 是最常被低估的工具之一,但它也是最强大的工具之一。通过 Wireshark,你可以深入挖掘,真正看到你网络上发生的事情。无论你是网络新手还是已经获得网络认证,使用 Wireshark 并检查数据包是一个磨练技能、加深对网络协议理解的好方法。

在第六章中,你将学习到 Quick Emulator,另一种开源 PC 模拟器,并用它创建一个特别的 PC 版本的 Juniper Junos 操作系统,名为 Juniper Olive。Juniper Olive 允许你将功能完整的 Juniper 路由器添加到你的 GNS3 项目中。

第六章. Juniper Olive 和 VSRX Firefly

你可以通过几种方式在 GNS3 中安装并运行 Juniper 路由器。在本章中,我将向你展示如何使用 VirtualBox 和快速仿真器(QEMU)来创建 GNS3 可用的 Juniper 设备,并安装 Juniper 的 vSRX Firefly 防火墙。

QEMU 是一个开源的 PC 仿真器,类似于 VirtualBox。它的界面不如 VirtualBox 精致,但有许多强大的功能,并且与 GNS3 完全集成。使用 QEMU,你可以运行许多网络操作系统,包括 Cisco ASA、IDS、IOS-XR、NX-OSv,以及一种特别版本的 Juniper 的 Junos OS,称为 Juniper Olive。在本章中,我只关注 Juniper。

在 Windows 和 OS X 上安装 QEMU

如果你在 Windows 或 OS X 上安装了 GNS3,那么 QEMU 应该已经为你安装好了。GNS3 安装程序可能已经安装了两个版本的 QEMU:一个稳定版本,已经在 GNS3 安装过程中自动配置,另一个是包含额外未经过测试功能的更新版本。如果你需要项目完全稳定,我建议只使用预配置的版本。

如果你按照第二章中概述的默认设置安装了 GNS3,那么你应该可以在 32 位和 64 位 Windows 系统下的C:\Program Files\GNS3\qemu-0.13.0目录中找到 QEMU 应用程序,但请记住,随着 QEMU 的新版本引入并加入到 GNS3 中,这个目录可能会发生变化。在 OS X 上,你应该可以在/Applications/GNS3.app/Contents/Resources/qemu/bin/目录下找到 QEMU。

在 Linux 上安装 QEMU

在 Ubuntu 上,QEMU 可以通过包管理器安装或从源代码编译安装。要通过包管理器安装,更新你的包管理器并通过命令行安装 QEMU。

$ **sudo apt-get update**
$ **sudo apt-get install qemu**

另外,你也可以安装qemu-system-x86包。这是一个更小的安装,应该能够运行你想要在 GNS3 中使用的任何操作系统。要安装 x86 架构版本的 QEMU,可以使用以下命令:

$ **sudo apt-get install qemu-system-x86**
$ **sudo apt-get install qemu-utils**

你可能想要从源代码编译 QEMU,具体取决于你系统上可用的 QEMU 版本。尽管许多 Linux 发行版上有预编译的 QEMU 包,但它们可能不是最新版本,并且可能不包括提供 QEMU 图形用户界面的 GTK 工具包。在这种情况下,你可以通过安装 VNC 查看器程序(如 GNC Viewer)来访问 QEMU 界面。

当你从源代码安装时,你还需要在编译源代码之前安装 QEMU 所需的其他软件包。现在更新你的包管理器并安装这些软件包:

$ **sudo apt-get update**
$ **sudo apt-get install flex**
$ **sudo apt-get install bison**
$ **sudo apt-get install zlib1g-dev**
$ **sudo apt-get install libglib2.0-dev**
$ **sudo apt-get install libgtk2.0-dev**
$ **sudo apt-get install libncurses5-dev**
$ **sudo apt-get install libpcap-dev**
$ **sudo apt-get install dh-autoreconf**

接下来,从 QEMU 官网(*www.qemu-project.org/)下载 QEMU 源代码并解压文件,如下所示:

$ **wget http://www.qemu-project.org/download/qemu-2.1.2.tar.bz2**
$ **bunzip2 qemu-2.1.2.tar.bz2**
$ **tar xvf qemu-2.1.2.tar**

解压文件后,进入 QEMU 安装目录,并输入configuremake命令来编译源代码。

$ **cd qemu-2.1.2**
$ **./configure**
$ **make**

最后,通过使用提升的 root 权限安装编译后的文件来完成安装过程。

$ **sudo make install**

安装完成后,您应该可以在/usr/local/bin/目录下找到 QEMU 二进制文件,QEMU 支持文件应位于/usr/local/share/qemu/目录中。

安装了 QEMU 后,您就可以开始在 GNS3 中创建和使用 QEMU 设备了。

介绍 Juniper

大多数人都听说过思科(Cisco),但相对较少人听说过 Juniper Networks。像思科一样,Juniper 生产广泛的网络硬件,互联网服务提供商使用其超高吞吐量的设备来高效地为客户路由数十亿个数据包。

所有 Juniper 设备都基于一个共同的 FreeBSD 代码库设计,尽管并非所有 Juniper 设备都运行 FreeBSD 操作系统。相反,它们仅使用 FreeBSD 的内核作为另一个操作系统——Junos OS 的框架。然而,由于 Junos OS 是基于 FreeBSD 设计的,您可以在 PC 上运行一个特别版本的软件,称为 Juniper Olive。

Juniper Olive 是 Junos OS 的一个功能版本。因为它运行在普通 PC 上,而不是实际的 Juniper 机箱,所以它缺乏专有的 ASIC 硬件来实现与真实 Juniper 设备相同的高吞吐量。除此之外,它就是 Junos OS 的真实版本,而不是操作系统的模拟版本。这使得它非常适合用于学习 Juniper Networks 认证助理(JNCIA)认证以及其他入门级认证。

注意

Juniper 还提供了另一款虚拟路由器,叫做 vMX,它可以在裸机 x86 硬件上运行,也可以通过 QEMU、VirtualBox 或 VMware 作为虚拟机运行,允许它集成到 GNS3 中。这就是 Juniper 所称的可扩展“按需付费”解决方案。

Juniper 伸出橄榄枝

Juniper Olive 据说是 Juniper 公司内部版本的 Junos OS,仅供 Juniper 开发人员使用,不面向公众,但只有 Juniper 公司知道确切情况。如果您联系公司,他们会告诉您这是一个“未支持版本”。Juniper 不会向您提供软件,也不会为您提供任何支持。然而,GNS3 完全支持 Juniper Olive 集成,允许您将 Juniper 路由器添加到 GNS3 项目中。

安装 Juniper

有人说过,如果你给一个人一条鱼,你就喂饱他一天;但如果你教会一个人钓鱼,你就喂饱他一辈子。这句谚语在创建 Juniper Olive 时非常适用,所以让我们一起去钓鱼吧!尽管有许多方式可以配置和安装 Olive(包括自动化过程的脚本或可以在互联网上找到的预配置虚拟机),但手动学习可以让你在新版本的 Olive 发布时根据需要调整参数。

在与 GNS3 一起使用时,Juniper Olive 软件通常通过 VirtualBox 或 QEMU 安装。在本节中,您将使用 QEMU,但在创建 Olive 之前,您的系统必须满足以下要求:

  • 8GB 可用磁盘空间

  • 1024MB 可用内存用于 QEMU/Juniper

  • 您的系统上已安装 QEMU

  • FreeBSD-4.11 mini ISO

  • Juniper Olive 软件

让我们来看一下如何创建 Olive 并获取相关软件。

流程概述

Juniper Olive 安装软件的工作方式有点像一个常见的寄生虫,以 FreeBSD 为其不知情的宿主。为了创建 Olive,你需要使用 QEMU 或 VirtualBox 安装一份 FreeBSD。接下来,你需要将 Juniper Olive 软件的 gzipped tarball 文件复制到 FreeBSD 虚拟机中。在那里,你将解压包并进行一些小的修改,然后将文件重新打包成 FreeBSD 可安装包。最后,你将安装该包并重启 FreeBSD 系统。

到这里,事情变得有趣了。第一次启动系统时,Juniper Olive 软件将入侵 FreeBSD 宿主系统。它会重新分区 FreeBSD 硬盘,复制新文件到系统,并保留任何它需要的 FreeBSD 文件。完成后,你应该会拥有一个功能正常的 Juniper 路由器。

获取 FreeBSD

安装 FreeBSD 需要一个 FreeBSD CD 镜像。可以找到多个适合创建 Juniper Olive 的版本,但我推荐使用迷你 ISO。它包含所有必要的文件,并且下载速度最快。从 FreeBSD 存档中下载 4.11-RELEASE-i386-miniinst.iso 文件 (ftp://ftp-archive.freebsd.org/)。我推荐使用这个版本的 FreeBSD,而不是更新版本,因为它似乎与几乎所有 Olive 版本兼容。

注意

你可以在 GNS3 网站的下载区找到一个已经安装了 FreeBSD 的 QEMU(和 VirtualBox)镜像 (www.gns3.com/) ,在 QEMU 设备下。

获取 Juniper Olive 软件

接下来,你需要获取 Juniper Olive 软件。该软件可以作为 FreeBSD 可安装包提供,文件名应类似于 jinstall-12.1R1.9-domestic-olive.tgz。由于 Juniper Olive 不再由 Juniper 官方支持,因此无法直接从 Juniper 获取该软件。

创建 Juniper Olive CD 镜像文件

拥有 Juniper Olive 软件后,你需要一种方法将该软件包复制到 FreeBSD 虚拟机中进行安装。有多种方法可以实现这一点,但最简单的方法是将 ISO 镜像文件挂载到 FreeBSD 虚拟机上,就像挂载常规 CD 一样。在此之前,你需要创建自己的 Olive 软件 ISO 镜像文件。

在 Windows 中创建 ISO

要在 Windows 中创建 ISO 镜像文件,首先需要安装 ISO 镜像创建软件。我推荐使用 ISO Recorder (isorecorder.alexfeinman.com/isorecorder.htm). 它是免费的,易于安装,而且工作良好。下载该软件并启动安装程序。然后点击 下一步 并按照提示完成安装。

安装 ISO Recorder 后,你应该能够创建 Juniper Olive 软件的 ISO 镜像。创建一个文件夹并将你的 gzipped Olive 文件复制到该文件夹中(例如命名为juniper-olive)。然后,右键点击该文件夹并选择创建 ISO 镜像文件

如图 6-1 所示,ISO Recorder 创建向导会出现。

ISO Recorder Creation Wizard

图 6-1. ISO Recorder 创建向导

在创建镜像下,选择目录单选按钮,将镜像格式更改为CD,点击下一步,并按照提示创建 ISO 镜像。在你拥有 Juniper ISO 后,你就可以在 Windows 上安装 Juniper Olive。

在 OS X 中创建 ISO 镜像

在运行 OS X 的计算机上,将你的 Juniper 镜像文件复制到一个文件夹中,并使用hdiutil创建该文件夹内容的 ISO 镜像。在以下列表中,我使用名为JUNOS的文件夹创建了一个名为juniper-olive.iso的 ISO 镜像文件:

$ **mkdir JUNOS**
$ **cp jinstall-12.1R1.9-domestic.tgz JUNOS**
$ **hdiutil makehybrid -iso -joliet -o juniper-olive.iso JUNOS**

现在你已经拥有适合的 Olive 软件 ISO 镜像,你可以准备在 OS X 上安装 Juniper Olive。

在 Linux 中创建 ISO

在 Ubuntu Linux 上创建 ISO 镜像与在 OS X 上几乎相同,不同之处在于你使用的是mkisofs应用程序。将你的 Juniper 镜像文件复制到一个文件夹中(例如命名为JUNOS),然后输入以下命令来创建 ISO:

$ **mkdir JUNOS**
$ **cp jinstall-12.1R1.9-domestic.tgz JUNOS**
$ **mkisofs -o juniper-olive.iso JUNOS**

现在你已经有了 ISO 镜像,剩下的就是做几个步骤,然后就可以创建 Juniper Olive。

使用 QEMU 安装和配置 FreeBSD

创建 Juniper Olive 的第一步是创建一个 FreeBSD 的 QEMU 虚拟机。QEMU 没有图形用户界面,所以你将通过命令行完成所有操作。你将使用qemu-img程序创建虚拟磁盘镜像文件,并使用qemu程序来安装和测试你的虚拟机。

注意

并非所有 QEMU 安装都相同。在某些安装中,QEMU 应用程序文件可能被命名为 qemu-system-i386 qemu-system-x86_64,或者你可能同时安装了这两个版本。如果不确定,请检查你的 QEMU 安装目录。

准备你的构建目录

首先创建一个构建目录,然后将 FreeBSD 安装 ISO 和 Juniper Olive ISO 文件复制到该目录,示例如下:

$ **mkdir Juniper**
$ **cp 4.11-RELEASE-i386-miniinst.iso Juniper**
$ **cp juniper-olive.iso Juniper**

如果你使用的是 Windows,请打开命令提示符窗口并输入以下命令:

c: **mkdir Juniper**
c: **copy 4.11-RELEASE-i386-miniinst.iso Juniper**
c: **copy juniper-olive.iso Juniper**

现在你的构建目录中的所有准备工作都已完成,可以开始安装系统了。

安装一个适用于 Junos 的 FreeBSD 系统

在本节中,你将使用qemu-img创建虚拟硬盘,并在该虚拟硬盘上安装 FreeBSD。我将只涵盖为 Olive 准备 FreeBSD 的基本步骤,不会详细讲解 FreeBSD 本身。

Windows 和 OS X 的初步检查

如果你是 Windows 用户,请在开始之前从“程序和功能”控制面板安装 Telnet 客户端应用程序。

如果你是 OS X 用户,你需要将 QEMU 文件目录添加到 OS X 的搜索路径中。验证 QEMU 文件的安装路径。如果你是手动安装 QEMU,应该在 /opt/local/bin/usr/local/bin 中找到 qemu-img 文件。如果你使用的是与 GNS3 一起安装的 QEMU,应该在 /Applications/GNS3.app/Contents/Resources/qemu/bin/ 目录下找到该文件。输入以下命令将 QEMU 二进制文件添加到你的 OS X 搜索路径中。开始之前,先备份 .bash_profile 文件。

$ **cd ~**
$ **cp .bash_profile .bash_profile-backup**
$ **sudo echo 'export PATH=/Applications/GNS3.app/Contents/Resources/qemu/**
**bin:$PATH' >> .bash_profile**

输入命令后,关闭并重新打开一个终端窗口以启用新的搜索路径。为了验证路径是否正确,输入以下命令:

$ **echo $PATH**

上一个命令将显示你的路径配置。如果路径不正确,你可能需要恢复你的 .bash_profile-backup 文件并重新尝试。如果路径正确,那么你就可以继续操作了。

开始使用

通过在构建目录中创建一个名为 juniper.img 的 8GB 虚拟磁盘映像文件来开始安装。这里使用的 qemu-img 命令选项适用于所有类 Unix 系统。

$ **cd Juniper**
$ **qemu-img create juniper.img 8G**

接下来,使用以下命令从 FreeBSD mini ISO 启动 QEMU:

$ **qemu-system-i386 -m 512 -hda juniper.img -localtime -cdrom 4.11-RELEASE**
**i386-miniinst.iso**

Windows 用户应打开命令提示符窗口,并使用以下命令代替。如果 QEMU 未在你的 Windows 路径中,记得输入 path 命令。

c: **cd Juniper**
c: **path="c:\program files\GNS3\qemu-0.13.0"**
c: **qemu-img create juniper.img 8G**
c: **qemu-system-i386w -m 512 -hda juniper.img -localtime -cdrom 4.11-RELEASE-**
**i386-miniinst.iso**

当 FreeBSD 启动时,内核配置菜单将出现,如图 6-2 所示。

FreeBSD 内核配置菜单

图 6-2. FreeBSD 内核配置菜单

按 ENTER 键跳过内核配置并继续安装。

接下来,FreeBSD sysinstall 主菜单将出现,如图 6-3 所示。

sysinstall 主菜单

图 6-3. sysinstall 主菜单

使用箭头向下移动,选择 Standard 开始标准安装,然后按 ENTER 继续。

分区文件系统

下一屏幕,如图 6-4 所示,显示了使用 FDISK 分区编辑器的基本信息。

FDISK 分区信息屏幕

图 6-4. FDISK 分区信息屏幕

阅读说明并按 ENTER 继续进入 FDISK 分区编辑器菜单,如图 6-5 所示。

FDISK 分区编辑器菜单

图 6-5. FDISK 分区编辑器菜单

FDISK 分区编辑器允许你选择分配给 FreeBSD 的磁盘空间。选择 A 使用整个磁盘,然后选择 Q 完成。

接下来应该出现安装引导管理器菜单,如图 6-6 所示。

安装引导管理器菜单

图 6-6. 安装引导管理器菜单

使用箭头键向下移动,选择Standard来安装标准的主引导记录(MBR),然后按 ENTER 继续。

然后 FreeBSD 会显示一条关于在你新创建的 FDISK 分区内创建 BSD 分区的消息,如图 6-7 所示。

BSD 分区消息

图 6-7. BSD 分区消息

阅读完消息后,按 ENTER 继续进入 FreeBSD 磁盘标签编辑器。

下一步是创建适用于 Juniper 的分区。你需要特别注意虚拟硬盘的分区方式,因为 Juniper Olive 包必须能够看到正确的 FreeBSD 分区,否则安装会失败。你还必须按特定顺序创建分区。

要创建你的第一个分区,选择C并在提供的字段中输入分区大小,如图 6-8 所示。

指定分区大小。

图 6-8. 指定分区大小。

我输入了 1024M 以创建一个 1GB 的分区。按 ENTER 接受此值,然后你将看到分区类型选择屏幕,如图 6-9 所示。

选择分区类型。

图 6-9. 选择分区类型。

按 ENTER 创建文件系统(FS)分区类型,然后你将看到选择分区挂载点的选项,如图 6-10 所示。

选择分区的挂载点。

图 6-10. 选择分区的挂载点。

要为根分区创建挂载点,输入正斜杠(/),然后按 ENTER 完成第一个分区的配置。

使用表 6-1,按照相同的步骤创建完整的文件系统布局。顺序很重要!在创建根分区 (/) 后,按照顺序继续往下创建,最后创建 /var 分区。当到达交换分区时,确保选择 swap 而不是 FS 作为分区类型。/var 分区是最后一个,所以创建时接受默认的分区块大小。此值使用分区上的剩余空间。记住,如果分区没有按顺序创建,分区名称将与挂载点不匹配,Juniper Olive 将无法正确安装。

表 6-1. Juniper Olive 的 FreeBSD 分区

分区 挂载点 大小
ad0s1a / 1024 MB
ad0s1b swap 1024 MB
ad0s1e /config 1024 MB
ad0s1f /var 剩余空间

有很多方法可以在准备安装 Olive 时对 FreeBSD 进行分区,但我发现这种方法在不同版本的 Juniper Olive 中最为可靠。完成后,文件系统应与图 6-11 中的布局完全相同。

完全配置的适用于 Juniper Olive 的分区布局

图 6-11. 完全配置的适用于 Juniper Olive 的分区布局

一旦配置好所有分区,选择Q完成分区过程,然后选择你的发行版,如图 6-12 所示。

FreeBSD 发行版选择

图 6-12. FreeBSD 发行版选择

使用箭头键向下滚动,选择Minimal,然后按空格键进行选择。现在按 TAB 键选择OK,然后按 ENTER 完成操作。

完成 FreeBSD 安装

接下来,选择你的安装介质,如图 6-13 所示。

选择安装介质

图 6-13. 选择安装介质

按 ENTER 选择CD/DVD作为安装介质,安装将开始。完成后,将显示图 6-14 中的消息。

文件安装完成消息

图 6-14. 文件安装完成消息

因为你正在使用 FreeBSD 作为 Junos OS 的主机,所以你不需要关注此屏幕后面的任何 FreeBSD 配置问题。对所有剩余的问题回答“no”,当系统询问是否为 root 账户创建密码时,按 ENTER 键保持空白。回答完所有问题后,允许系统重启,登录为root,并使用halt命令关闭 FreeBSD。然后关闭窗口并退出 QEMU 程序。

在 FreeBSD 中安装 Juniper Olive 包

现在 FreeBSD 安装完成,你可以安装 Juniper Olive 包。

启动并运行你的 Olive

使用以下命令通过 QEMU 启动 FreeBSD,以确保你可以挂载之前创建的juniper-olive.iso CD 镜像文件。(在 Windows 上,将 qemu-system-i386 替换为 qemu-system-i386w。)

**qemu-system-i386 -m 512 -hda juniper.img -localtime -cdrom juniper-olive.iso**

如果 FreeBSD 正常加载,应该会出现登录提示。按照提示以root身份登录;你不需要输入密码,只需按 ENTER 键。然后使用 mount 命令挂载juniper-olive.iso CD 镜像。

# mount /cdrom

/var 分区上创建一个名为olive的临时目录,并将 Juniper Olive 包解压到该临时目录中。

# mkdir /var/tmp/olive
# cd /var/tmp/olive
# tar zxvf /cdrom/jinstall-12.1R1.9-domestic.tgz

接下来,修改 Junos OS,以允许你在 QEMU 虚拟机上安装软件。

# mkdir temp
# cd temp
# tar zxvf ../pkgtools.tgz
# cp /usr/bin/true bin/checkpic

pkgtools.tgz中提取pkgtools目录到olive目录中的另一个temp目录,并用 FreeBSD 的true文件替换checkpic文件。这将移除 Junos OS 的 checkpic 保护。

修改后,将temp目录中的内容重新压缩为名为pkgtools.tgz的 tarball,并删除你创建的temp目录。

# tar zcvf ../pkgtools.tgz *
# cd ..
# rm -rf temp

接下来,创建一个新的 Olive 安装包,并将其安装到你的 FreeBSD 系统中。在以下清单中,我将安装包命名为olive.tgz

# tar zcvf ../olive.tgz *
# pkg_add -f ../olive.tgz

安装 Olive 包后,你应该看到一个错误信息,后面跟着一些警告信息,这些信息告诉你该包将删除任何非 Junos 配置文件,并且你需要重启以加载 Junos OS 软件。

屏幕上显示的其他任何指示可以忽略,因为它们适用于实际的 Juniper 路由器,而不是 PC 上的 Olive 安装。然而,在继续之前,你需要使用 halt 命令关闭 FreeBSD 系统并退出 QEMU。

# halt

安装 Olive 的最后一步是重启系统,并给予安装包足够的时间来完成对 FreeBSD 的接管。在这一点上,你必须为安装程序提供额外的内存,否则安装将失败。虽然 Junos OS 在 512MB 的 RAM 下可以正常运行,但安装程序需要 1024MB 的 RAM 来创建它在安装过程中使用的 RAM 磁盘。

在 Linux 和 OS X 中,用 1024MB 的 RAM 启动 Juniper Olive 来完成安装,具体如下:

$ **sudo qemu-system-i386 -m 1024 -hda juniper.img -serial telnet:127.0.0.1:1001,**
**server,nowait,nodelay -localtime**

Windows 用户应输入以下命令:

c: **qemu-system-i386w -m 1024 -hda juniper.img -serial telnet:127.0.0.1:1001,**
**server,nowait,nodelay -localtime**

系统启动后,你可以通过 telnet 连接到本地主机的 1001 端口,来观看 Olive 软件的安装过程。(在 Windows 上,你可能需要先从“程序和功能”控制面板安装 Telnet 客户端程序。)打开第二个 Windows 命令提示符或终端窗口,输入以下命令,查看安装输出显示在控制台上:

**telnet localhost 1001**

我强烈建议你监控安装过程。这是排查问题的好方法,万一出现问题,你也能知道为什么安装失败。一个常见的问题是没有为虚拟机分配足够的内存;另一个问题是你的分区大小太小或创建不正确。

Juniper Olive 的安装可能需要 15 分钟或更长时间,这取决于你的硬件,因为安装程序需要执行很多任务,例如重新分区你的 FreeBSD 硬盘并提取各种软件包。当一切完成后,系统应该会自动重启,加载 Junos OS,并呈现一个看起来像是 FreeBSD 登录提示符的界面,见 图 6-15。

成功的 Junos OS 启动消息和登录

图 6-15. 成功的 Junos OS 启动消息和登录

这个提示符是你登录 Junos OS 的地方。如果你看到之前的消息和登录提示符,那么你的 Juniper 路由器已准备好使用。

备份 Juniper Olive

在你创建了一个有效的 Olive 之后,为了安全起见,制作镜像的备份副本。毕竟,谁想再做一遍那些工作呢?我可不想!

首先,正确关闭 Junos OS,以防触发脏文件系统。脏文件系统是指文件未正确关闭时发生的情况。这种情况可能导致文件损坏,甚至可能损坏 Junos 操作系统。如果文件系统被标记为脏,下次启动 Junos OS 时会触发文件系统检查,直到系统检查并重新标记为干净(意味着没有发现错误,或者所有错误已被修复)之前,启动过程可能比平时更长。

要关闭 Junos OS,作为 root 用户登录(无需密码),然后输入以下命令:

Login: **root**
root@% **cli**
root> **request system halt**
Halt the system ? [yes,no] (no) **yes**

在看到操作系统已停止的消息后,可以安全退出 QEMU,如下所示:

The operating system has halted.
Please press any key to reboot.

要备份你的 Juniper 镜像,请在保存镜像文件的目录中输入以下命令:

$ **cp juniper.img backup-juniper.img**

Windows 用户可以使用以下命令替代:

c: **copy juniper.img backup-juniper.img**

现在你已经拥有了 Juniper 路由器,你需要配置 GNS3 以便在项目中使用它。

在 GNS3 中配置 Juniper 路由器

要在 GNS3 中配置 Juniper 路由器,选择 编辑偏好设置(Windows 和 Linux)或 GNS3偏好设置(OS X)。从侧边栏双击 QEMU,并选择 QEMU 虚拟机 以打开 QEMU 虚拟机偏好设置窗口,如 图 6-16 所示。

QEMU 虚拟机偏好设置窗口

图 6-16. QEMU 虚拟机偏好设置窗口

在这里你可以创建、编辑和删除 QEMU 虚拟机,从而将你的 Juniper 虚拟机引入 GNS3。

将 Juniper 虚拟机添加到 GNS3

要将你的 Juniper 虚拟机添加到 GNS3 中,点击 新建 来启动新建 QEMU 虚拟机向导。为虚拟机输入一个名称,并保持类型设置为 默认。点击 下一步 以设置 QEMU 二进制文件和内存选项,如 图 6-17 所示。

设置 QEMU 二进制文件和内存

图 6-17. 设置 QEMU 二进制文件和内存

从 QEMU 二进制文件下拉菜单中选择 qemu-system-i386。你之所以选择这个 QEMU 程序,是因为 Juniper Olive 在 32 位版本的 FreeBSD 上运行。给你的 Olive 分配 512MB 的内存,然后点击 下一步。点击 浏览 定位并选择之前创建的 juniper.img 文件,然后点击 完成

注意

在 GNS3 中常用的两个 QEMU 二进制应用程序是 qemu-system-i386qemu-system-x86_64。它们的区别在于,qemu-system-i386 是用于模拟 32 位架构的,而 qemu-system-x86_64 是用于模拟 64 位架构的。qemu-system-x86_64 应用程序理论上应支持 32 位的向后兼容,但它并不与所有 32 位虚拟机兼容(例如 IOS-XRv)。

添加以太网接口

创建虚拟机后,返回并添加更多以太网接口。我推荐使用六个接口。高亮显示你的虚拟机并选择 编辑。点击 网络 标签页,将接口数量更改为 6。现在选择 高级设置 标签页,并在附加设置中输入 -nographic 选项,如 图 6-18 所示。

QEMU 高级选项

图 6-18. QEMU 高级选项

-nographic 选项可防止在启动 QEMU 虚拟机时显示 QEMU 图形界面。尽管 GUI 在故障排除虚拟机时可能有用,但它更常见的是成为一种干扰,应该禁用。这个选项可以与任何 QEMU 虚拟机一起使用,而不仅仅是 Juniper。完成后,点击 确定 关闭窗口,然后点击 应用确定 以保存所有更改。

测试 Juniper 路由器

在创建包含 Juniper 路由器的项目之前,最好先测试 Cisco 路由器与 Juniper 路由器之间的连通性。如果你无法成功 ping 通设备之间的连接,可能是安装过程中出了问题,最好尽早发现,以免花费数小时设计一个无法工作的项目。

从设备工具栏拖动一个 Cisco 路由器节点和一个 Juniper 路由器节点到工作区,并创建从 Cisco 路由器到 Juniper 路由器的 e0 接口的连接,如图 6-19 所示。

启动路由器,并打开 Cisco 路由器的控制台。为与 Juniper 路由器相连的接口(在本例中是 f0/0)分配一个 IP 地址。

将 Cisco 路由器连接到 Juniper 路由器

图 6-19. 将 Cisco 路由器连接到 Juniper 路由器

R1> **enable**
R1# configure-terminal
R1(config)# interface f0/0
R1(config-if)# ip address 10.10.10.1 255.255.255.0
R1(config-if)# no shutdown

现在,打开 Juniper 路由器的控制台,登录并配置一个与 Cisco 路由器相同子网的 IP 地址。

  Login: **root**
  root@% **cli**
  root> **edit**
➊ root# set system root-authentication plain-text password
  New password: **olive1**
  Retype new password: **olive1**
  root# set interfaces em0 unit 0 family inet address 10.10.10.2/24
  root# commit
  commit complete

出于安全考虑,Junos 操作系统要求你在提交任何其他配置更改之前先设置一个 root 密码➊,因此现在就进行设置。我将密码设置为olive1,但你可以输入任何你想要的密码。

注释

在这个例子中,你可以看到 Juniper 的语法与 Cisco 的语法完全不同。如果 Juniper 语法对你来说是新鲜的,可以访问 Juniper 网站www.juniper.net/,获取有关配置 Juniper 路由器的详细信息。

配置好两个设备后,ping 一下你的 Cisco 路由器以测试连通性。

root# exit
root> **ping 10.10.10.1**

如果 ping 测试失败,可能是你的 IP 地址或 QEMU 安装存在问题。如果你是从源代码编译 QEMU,检查你是否安装了一个已知与 Juniper Olive 兼容的版本。如果需要,重新编译并安装 QEMU。如果问题仍然存在,尝试安装或编译另一个版本的 QEMU。

你也可以使用 VirtualBox 创建一个 Olive。过程基本与 QEMU 相同,但你将使用 VirtualBox 的 GUI 工具,而不是命令行。当你创建 VirtualBox 虚拟机时,设置类型为 BSD,版本为 FreeBSD(32 位)。

运行 Juniper vSRX Firefly

除了 Junos 操作系统之外,你还可以运行 Juniper 的 SRX 防火墙虚拟版,名为vSRX Firefly。如果你在 Juniper 注册,你可以从网站上免费下载 Firefly 的评估版(www.juniper.net/)。你需要下载 Firefly VMware Appliance - FOR EVALUATION!包。如你所见,名字中提到它是为 VMware 设计的,但你可以调整它以在 VirtualBox 或 QEMU 上运行。我在这里讲解的是 VirtualBox,所以在开始之前,请确保你的系统上已安装 VirtualBox 程序。

下载 Firefly 软件后,注意它是一个 Open Virtual Appliance(OVA)文件,文件名类似于junos-vsrx-ver.x-domestic.ova。OVA 文件是一种特殊的包文件,可以使用tar命令解压缩。在 Linux 或 OS X 上提取文件内容,请使用以下命令:

$ **tar xvf junos-vsrx-ver.x-domestic.ova**

注意

如果您正在使用 Windows,您可以使用 7-zip 应用程序 (www.7-zip.org/) 来提取文件。

所有文件提取完成后,您需要将 VMware 虚拟机磁盘文件(扩展名为.vmdk的文件)转换为 VirtualBox 可以使用的虚拟磁盘镜像(VDI)文件。要转换文件,请使用 VirtualBox 附带的vboxmanage工具。

$ **vboxmanage clonehd -format VDI junos-vsrx-ver.x-domestic-disk1.vmdk**
**junos-vsrx-ver.x-domestic-disk1.vdi**

转换磁盘镜像后,您可以删除所有 Firefly 文件,除了新的 VDI 镜像文件(本示例中的junos-vsrx-ver.x-domestic-disk1.vdi)。这是您将导入到 VirtualBox 中的硬盘镜像文件。

使用 VirtualBox 创建 Firefly 虚拟机

您需要在 VirtualBox 中创建一个新的虚拟机,并导入 Firefly 硬盘镜像文件。启动 VirtualBox 并点击新建以打开创建虚拟机对话框,如图 6-20 所示。

创建虚拟机对话框

图 6-20. 创建虚拟机对话框

为虚拟机命名(本示例中为Firefly),将类型设置为BSD,并将版本设置为FreeBSD(32 位)。完成后,点击下一步以分配内存大小,如图 6-21 所示。

调整内存大小。

图 6-21. 调整内存大小。

按照 Juniper 的说明设置合适的内存大小。在本示例中,我选择了 2048 MB,因为这是 Juniper 为我的 Firefly 版本推荐的大小。完成后,点击下一步,并勾选使用现有的虚拟硬盘文件,如图 6-22 所示。

使用浏览图标定位并选择您之前创建的 VDI 镜像文件。完成后,点击创建按钮以创建虚拟机。

选择 Junos vSRX Firefly VDI 硬盘镜像文件。

图 6-22. 选择 Junos vSRX Firefly VDI 硬盘镜像文件。

为虚拟机分配更多处理器

创建虚拟机后,您需要增加处理器数量至两个,因为 vSRX Firefly 需要两个处理器才能正常运行。如果您的虚拟机配置只有一个处理器,Firefly 将能够启动并运行,但您将无法查看或配置任何以太网接口。

在 VirtualBox 中选择你的虚拟机名称,进入设置系统,并点击处理器选项卡,如图 6-23 所示。

系统下的处理器选项卡

图 6-23. 系统下的处理器选项卡

使用滑块工具选择两个处理器,然后点击确定。配置好 Firefly 虚拟机后,右键单击虚拟机,在 VirtualBox 中选择克隆,以便创建一个副本,在 GNS3 中进行使用。原始虚拟机将保持未使用状态,你将始终拥有一个干净且未配置的虚拟机主机。

创建好 Firefly 虚拟机后,你需要将其添加到 GNS3 中,才能在项目中使用它。

将 vSRX Firefly 添加到 GNS3

启动 GNS3,在 Windows 和 Linux 上选择编辑首选项,在 OS X 上选择GNS3首选项。双击左侧窗格中的VirtualBox,然后选择VirtualBox 虚拟机以打开 VirtualBox 虚拟机首选项窗口,如图 6-24 所示。

要将 Firefly VirtualBox 虚拟机添加到 GNS3,请点击新建,启动新虚拟机向导。从下拉菜单中选择你的 Firefly 虚拟机并点击完成。接着,点击编辑

VirtualBox 虚拟机首选项窗口

图 6-24. VirtualBox 虚拟机首选项窗口

在“常规设置”选项卡中,勾选启用远程控制台以无头模式启动虚拟机。这将允许你使用控制台登录 Firefly。最后,点击网络选项卡,将接口数量更改为 6,并将网络类型设置为Paravirtualized Network(virtio net)。现在,你可以开始使用 Firefly 创建项目了。

创建一个带有区域防火墙的项目

在本节中,你将创建一个使用 vSRX Firefly 作为网络防火墙的简单项目。Firefly 的功能类似于 Cisco 的 ASA 防火墙,但配置方式有所不同。我不会详细讨论,但这个项目应该能帮助你入门。如果你想了解更多关于 Juniper SRX 的内容,可以访问 Juniper 官网,那里有很多详细的文档(* www.juniper.net/ *)。

我们从创建 GNS3 项目开始。将 Firefly 设备从“终端设备”工具栏拖到工作区。接着,拖动两个 Cisco 路由器到工作区,并将设备连接在一起。将 R1 的接口 f0/0 连接到 vSRX Firefly 的 e1 接口,将 R2 的接口 f0/0 连接到 vSRX Firefly 的 e0 接口。

vSRX Firefly 项目

图 6-25. vSRX Firefly 项目

路由器 R1 将配置为使用 Firefly 信任区。R1 代表您 LAN 中的受信主机。路由器 R2 将配置为使用 Firefly 的不受信任区。不受信任区代表一个不受信任的网络,如互联网。您将配置 Firefly,以便受信主机(R1)可以通过 vSRX Firefly 防火墙使用 NAT 与不受信主机(R2)进行 ping 测试。

首先为路由器 R1 配置 IP 地址和默认网关。

R1(config)# interface f0/0
R1(config-if)# ip address 192.168.1.100 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# ip route 0.0.0.0 0.0.0.0 192.168.1.1

接下来,配置不受信任路由器 R2 的 IP 地址。这里不需要配置网关。

R2(config)# interface f0/0
R2(config-if)# ip address 100.1.1.1 255.255.255.0
R2(config-if)# no shutdown

配置好路由器 IP 地址后,您可以将注意力转向 Firefly。使用 root 账户登录,以配置 vSRX Firefly 防火墙。由于这是新安装,系统应该不会要求您输入密码。登录后,输入以下命令以创建您的防火墙;首先创建密码并配置网络设置:

  root@%**cli**
  root>**edit**
➊ root#**set system root-authentication plain-text-password**
  New password:**firefly1**
  Retype new password:**firefly1**
➋ root#**set interface ge-0/0/0.0 family inet address 100.1.1.2/24**
➌ root#**set interface ge-0/0/1.0 family inet address 192.168.1.1/24**
➍ root#**set routing-options static route 0.0.0.0/0 next-hop 100.1.1.1**

就像在 Juniper 路由器上一样,您不能在 SRX 设备上保存任何配置更改,直到您为 root 账户分配了密码,因此首先进入编辑模式并创建 root 密码 ➊。我输入了firefly1,但您可以选择任何您喜欢的密码。

接下来,在➋处,您需要在 WAN 接口(ge-0/0/0.0)上设置 IP 地址,在➌处,您需要设置 LAN 接口(ge-0/0/1.0)。最后,在➍处,使用不受信任路由器的 IP 地址(100.1.1.1)设置默认网关地址。

通过定义您的安全区域和安全信任策略来完成配置。

➊ root#**set security zones security-zone trust interfaces ge-0/0/1.0**
➋ root#**set security nat source rule-set interface-nat from zone trust**
➌ root#**set security nat source rule-set interface-nat to zone untrust**
➍ root#**set security nat source rule-set interface-nat rule rule1 match**
   **source-address 0.0.0.0/0 destination-address 0.0.0.0/0**
➎ root#**set security nat source rule-set interface-nat rule rule1 then source-nat**
   **interface**
➏ root#**set security policies from-zone trust to-zone untrust policy permit-all**
   **match source-address any destination-address any application any**
➐ root#**set security policies from-zone trust to-zone untrust policy permit-all**
   **then permit**
➑ root#**commit**

将您的 LAN 接口分配到trust区域 ➊。将接口-nat 源区域设置为trust ➋,将接口-nat 目标区域设置为untrust ➌,并创建一个匹配任何源和目标 IP 地址(0.0.0.0/0)的规则 ➍。在生产环境中,您可能需要稍微收紧一些,但对于您的 GNS3 实验室来说,这样配置是可以的。现在,在 WAN 接口上配置 NAT 过载 ➎。

注意

vSRX Firefly 的interface-nat命令用于实现类似于 Cisco NAT/PAT 过载的功能。

为完成配置,定义允许在不同区域之间传输的流量类型 ➏。在本例中,您允许所有协议和应用从trust区域流向untrust区域。最后,创建安全策略 ➐ 并提交更改 ➑,这样就完成了!

通过输入show security nat source summary命令来验证您的配置。

root>show security nat source summary
Total port number usage for port translation pool: 0
Maximum port number for port translation pool: 33554432
Total pools: 0

Total rules: 1
Rule name     Rule set            From          To           Action
rule1➊       interface-nat➋     trust➌        untrust➍    interface➎

这些信息表明rule1 ➊允许通过 NAT ➋从trust区域 ➌到untrust区域 ➍的包,且来自trust区域的 IP 数据将被过载到不受信任的接口 ➎。默认情况下,接口是 ge-0/0/0.0(您的 WAN 接口)。如果在输入命令后,您的总结与本书中的相符,那么您可以开始测试连接。如果输出看起来不同,那么您可能输入错误,需要回去检查所有配置设置。

登录到路由器 R1 并输入ping命令,以测试与路由器 R2 的连接。

R1#**ping 100.1.1.1**

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/10/24 ms

如果你的 ping 测试成功,显示为 !!!!!,那么你就已经完成了所有正确的操作。如果失败了,你可能需要回去检查你的配置设置。你还应该确保你的 Cisco 路由器配置了正确的 IP 地址和子网掩码,并且以太网接口没有被关闭。

最后的思考

在本章中,你了解了 Juniper 和 Juniper Olive,我向你展示了如何使用 QEMU 和 VirtualBox 创建 Juniper Olive。我还介绍了 vSRX Firefly,并为你提供了如何使用 SRX 设备配置基础的基于区域的防火墙的一些见解。

在大多数情况下,使用 QEMU 运行 Juniper 会比使用 VirtualBox 稍慢。然而,QEMU 允许你在不进行克隆的情况下将无限数量的 Juniper 路由器添加到你的项目中,而且 GNS3 会将你的 Juniper 配置与项目一起存储。通常来说,VirtualBox 加载和运行设备的速度要快于 QEMU,但你的配置会保存在 VirtualBox 中每个虚拟机实例中,而不是 GNS3 中。因此,你必须使用 VirtualBox 的克隆功能来创建设备的唯一虚拟机实例。然后,克隆的设备会在你的 GNS3 项目中使用。

Juniper 在企业界的受欢迎程度不及 Cisco,但在更大的环境中,比如校园站点和 ISP 路由交换市场,它依然是一个重要的参与者。如果你将自己的网络职业发展方向定位于这些领域,Juniper 认证可能会让你在其他应聘者中脱颖而出,而 GNS3 是学习 Juniper 路由器和 SRX 设备的绝佳方式!你应该从 JNCIA 认证开始,它是入门级的 Juniper 认证(相当于 Cisco 的 CCNA),并且是更高级别认证的前提条件。Juniper 的培训网站(www.juniper.net/us/en/training/) 提供了你所需的所有信息,帮助你开始学习。

第七章 设备节点、实时交换机与互联网

在本章中,我将演示如何将 GNS3 设备节点与思科 IOS 路由器一起使用。GNS3 提供了一个集线器节点和各种交换机节点,包括以太网交换机、EtherSwitch 路由器、ATM 交换机和帧中继交换机。此外,我们还将看看如何使用思科 IOS 路由器创建自己的帧中继交换机。

我们还将探索一个非常强大的功能,称为云节点。云节点用于将您的网络扩展到 GNS3 程序之外。使用云节点,您很快就能将 GNS3 项目连接到实时的思科交换机,并通过 GNS3 路由器访问互联网。

内置设备节点

内置设备节点模拟特定设备类型(如交换机)的功能。它们易于配置,如果您需要节省时间和计算机资源,或者只是想完成某件事而不想了解底层技术的所有细节,它们会非常有用。

如果您创建了一个使用 VLAN 的拓扑,您可以将 GNS3 以太网交换机节点拖到工作区,并使用简单的菜单快速创建 VLAN 或 VLAN 中继。当然,如果您正在为涉及交换的思科考试做准备,您需要知道如何配置实际的思科 IOS 交换机。

节点配置器

到目前为止,您已经知道节点配置器可以用来配置单个设备节点的功能,但它也可以用来同时修改多个设备。当您的项目变得更加复杂,使用更多设备时,这个功能可以节省大量时间。

要同时打开多个设备,请用鼠标选择工作区中的这些设备,然后右键点击任何设备并选择配置。所选设备将在节点配置器中显示,如图 7-1 所示。

使用节点配置器修改多个设备

图 7-1. 使用节点配置器修改多个设备

要配置单个设备,从左侧列中选择该设备。配置每个设备并点击应用。完成所有设备的配置后,点击确定以完成该过程。

要修改多个设备,请按住 SHIFT 键,从左侧列中选择多个设备,然后像配置单个设备一样进行配置。假设您有十台 7200 系列路由器,且您想将相同的网络模块添加到所有 10 台路由器的插槽 0 中。按住 SHIFT 键选择所有路由器,将模块添加到插槽 0,然后点击应用确定,以将更改应用到所有 10 台设备。

您还可以通过点击其组名来选择整个路由器组。在前面的图中,您可以通过选择组名Router c3725 group ➊同时配置 R1、R2 和 R3。

以太网集线器

GNS3 提供了一种以太网集线器(参见图 7-2),这是网络教师用来向学生讲解以太网环路、广播过多和多端口重复的问题的工具。

以太网集线器节点配置器

图 7-2. 以太网集线器节点配置器

一般来说,你应该使用 GNS3 交换机,避免在项目中使用集线器。但如果确实需要使用以太网集线器,你可以通过打开节点配置器并从左侧列表中选择集线器,来更改可用的以太网端口数量。默认值是八个端口,如果你需要不同的端口数量,可以在右侧的设置字段中输入该数字。

EtherSwitch 路由器

GNS3 提供了两种类型的 Dynamips 交换机:以太网交换机节点和 EtherSwitch 路由器。我在第四章中讨论了以太网交换机节点,所以这里只介绍 EtherSwitch 路由器。

EtherSwitch 路由器 不是像以太网集线器或以太网交换机节点那样的模拟设备。相反,它是一个运行 Cisco IOS 的 Dynamips 路由器,并配置了一个 16 端口交换机模块(NM-16ESW)。这个交换机模块可以安装在实际的 Cisco 路由器上,并具有相同的功能和限制(详情请参见附录 C)。尽管交换机模块的功能有限,但它非常适合用于 CCNA 和许多 CCNP 的学习。对于更高级的交换功能,你需要将实际的交换机集成到 GNS3 项目中,或者使用 Cisco IOU 交换机。

注意

EtherSwitch 路由器要求你配置一台带 IOS 的 c3745 路由器。

要向 EtherSwitch 路由器添加额外的交换机端口,请右键单击交换机图标并选择 配置,如图 7-3 所示。

EtherSwitch 路由器允许你添加额外的交换机模块。在槽位 2 中添加另一个 NM-16ESW 模块后,交换机端口的数量增加到 32 个。

EtherSwitch 路由器节点配置器

图 7-3. EtherSwitch 路由器节点配置器

帧中继交换机

GNS3 提供了一个简单的帧中继交换机节点,能够模拟通用帧中继交换机的基本功能。GNS3 帧中继交换机节点的优点是配置非常简单。缺点是它有时可能不稳定。

警告

GNS3 的 Frame Relay 交换机节点仅支持 ANSI LMI 类型,且Cisco 是 Cisco IOS 上的默认 LMI 类型。你必须在路由器接口上使用命令frame-relay lmi-type ansi。否则,你的 Frame Relay 云将无法工作。你可以使用show frame-relay lmi命令来验证 LMI 类型(在配置了 Frame Relay 封装后)。

在 Frame Relay 中,数据链路连接标识符(DLCI)用于通过串行端口连接分配帧到永久虚拟电路(PVC)。要配置 DLCI 到串行端口的映射,右键点击 Frame Relay 交换机图标并打开节点配置器。使用源字段和目标字段创建映射,并点击添加。完成后,点击应用确定来完成配置。

图 7-4 中的示例配置稍后将用于创建一个简单的 Frame Relay 网络。在右侧的映射面板中,注意到 FR1 是通过两个串行端口进行配置的。每个串行端口用于将 Frame Relay 交换机连接到 GNS3 项目中的路由器。

Frame Relay 交换机节点配置器

图 7-4. Frame Relay 交换机节点配置器

端口 1 已分配了两个 DLCI 号(100 和 200)。端口 1 上的每个 DLCI 都映射到另一个串行端口上的 DLCI 号,每个映射形成一个 Frame Relay PVC。映射是从左到右读取的,因此在第一行中,端口 1 的 DLCI 100 映射到端口 2 的 DLCI 101,在第二行中,端口 1 的 DLCI 200 映射到端口 3 的 DLCI 201。我们将使用这些映射来配置一个简单的 Frame Relay 网络。

简单的 Frame Relay 中心与辐射式配置

配置 Frame Relay 网络有几种方法,而理解 DLCI 到串行端口的映射对于理解和配置它们至关重要。为了更好地理解映射关系,让我们使用之前讨论的 DLCI 到串行端口的映射配置一个简单的网络。我不会讲解太多理论,但会解释足够的内容让你能够开始。

我们将使用图 7-5 中的拓扑来创建我们的示例网络。该网络被划分为两个子网,10.10.10.0 和 10.10.10.32,子网掩码为 255.255.255.224。

示例中心与辐射式 Frame Relay 网络

图 7-5. 示例中心与辐射式 Frame Relay 网络

这个简单的网络是帧中继中心-分支拓扑的示例,应该能让你很好地理解 DLCI 映射在帧中继网络中的工作原理。路由器 R2 将位于 10.10.10.0 子网中,路由器 R3 将位于 10.10.10.32 子网中。路由器 R1 是我们的中心-分支拓扑中的中心,它将连接这两个子网,并通过帧中继交换机在它们之间转发数据包。此配置将允许路由器 R2 与路由器 R3 相互 Ping 通。

要创建项目,请在工作区中添加一个帧中继交换机节点,并按我们在 图 7-4 中所做的那样进行设置。添加三台路由器,并为每台路由器配置一个串行接口卡,如 WIC 或 NM-4T。将路由器与 FR1 交换机连接,如图所示。确保 R1 连接到 FR1 的端口 1,R2 连接到端口 2,R3 连接到端口 3。在连接设备并配置 FR1 交换机上的端口:DLCI 映射后,按以下代码配置中心路由器 R1。

  R1(config)# interface Serial0/0
➊ R1(config-if)# encapsulation frame-relay
➋ R1(config-if)# frame-relay lmi-type ansi
➌ R1(config-if)# clock rate 64000
  R1(config-if)# no shutdown
  R1(config-if)# no ip address

在串行接口上启用帧中继封装 ➊,并将 LMI 类型设置为 ANSI ➋。尽管在 GNS3 中不是必需的,我还是设置了时钟速率 ➌,因为根据你的 IOS,实际的帧中继交换机可能需要这个命令。

接下来,配置点对点接口和 DLCI。

➊ R1(config-if)# interface Serial0/0.100 point-to-point
➋ R1(config-subif)# frame-relay interface-dlci 100
➌ R1(config-subif)# ip address 10.10.10.1 255.255.255.224
➍ R1(config-subif)# interface Serial0/0.200 point-to-point
➎ R1(config-subif)# frame-relay interface-dlci 200
➏ R1(config-subif)# ip address 10.10.10.33 255.255.255.224

在串行接口 Serial0/0.100 上配置点对点子接口 ➊,使用 DLCI 100 ➋ 并为接口分配来自第一个子网的 IP 地址 ➌(10.10.10.0/27)。

通过以相同方式添加第二个点对点子接口 ➍,但使用 DLCI 200 ➎,并为接口分配来自第二个子网的 IP 地址 ➏(10.10.10.32/27)。在这个示例中,我将使用子网中的第一个有效地址,即 10.10.10.33。

注意

使用 DLCI 编号作为子接口编号被认为是 Cisco 最佳实践。Serial0/0.100 就是 DLCI 100 的子接口示例。

以下列表包含配置路由器 R2 所需的所有命令。

  R2(config)# interface Serial0/0
➊ R2(config-if)# encapsulation frame-relay
➋ R2(config-if)# frame-relay lmi-type ansi
➌ R2(config-if)# clock rate 64000
  R2(config-if)# no shutdown
  R2(config-if)# no ip address
➍ R2(config-if)# interface Serial0/0.101 point-to-point
➎ R2(config-subif)# frame-relay interface-dlci 101
➏ R2(config-fr-dlci)# ip address 10.10.10.2 255.255.255.224
  R2(config-subif)# exit
➐ R2(config)# ip route 0.0.0.0 0.0.0.0 10.10.10.1

要配置 R2,请进入串行接口并启用帧中继封装 ➊,然后将 LMI 类型设置为 ANSI ➋,设置时钟速率 ➌,并启用接口。使用 DLCI 101 ➎ 配置点对点子接口 ➍,并为子接口分配来自第一个子网的 IP 地址 ➏(在此示例中为 10.10.10.0 /27)。最后,使用配置在 R1 路由器接口 DLCI 100 下的 IP 地址 ➐(IP 地址为 10.10.10.1)设置路由器的默认网关。由于 R1 是我们帧中继中心-分支拓扑中的中心,它被用作两个子网的默认网关,以便数据可以在路由器 R2 和 R3 之间路由。

最后,向路由器 R3 添加配置以完成项目。

  R3(config)# interface Serial0/0
  R3(config-if)# encapsulation frame-relay
  R3(config-if)# frame-relay lmi-type ansi
  R3(config-if)# clock rate 64000
  R3(config-if)# no shutdown
  R3(config-if)# no ip address
  R3(config-if)# interface Serial0/0.201 point-to-point
➊ R3(config-subif)# frame-relay interface-dlci 201
➋ R3(config-fr-dlci)# ip address 10.10.10.34 255.255.255.224
  R3(config-subif)# exit
➌ R3(config)# ip route 0.0.0.0 0.0.0.0 10.10.10.33

路由器 R3 的配置几乎与 R2 相同,但它使用 DLCI 201 ➊和来自第二子网的 IP 地址 ➋。此外,你需要使用在路由器 R1 的接口 DLCI 200 下配置的 IP 地址 ➌(IP 地址 10.10.10.33)设置默认网关。

就这样!现在,所有三个路由器应该都能够相互 ping 通。简而言之,每个路由器将数据帧封装,并在数据帧离开其串行接口时通过 Frame Relay DLCI 编号进行标识。当 Frame Relay 交换机从路由器接收到数据时,数据帧将根据 DLCI 到串口的映射通过交换机转发到其他路由器。由于 R1 被配置为 Frame Relay 集线器,并且了解两个子网,因此它可以通过两个 PVC 在这两个子网之间转发数据。在这个例子中,一个 PVC 由 DLCI 100 映射到 DLCI 101,另一个 PVC 由 DLCI 200 映射到 DLCI 201 组成。

为了验证你的 Frame Relay 电路是否处于活动状态,请在每个路由器上输入命令 show frame-relay pvc

R1# show frame-relay pvc

PVC Statistics for interface Serial0/0 (Frame Relay DTE)

             Active      Inactive      Deleted       Static
Local         ➊ 2             0            0            0
Switched        0             0            0            0
Unused          0             0            0            0

如果你已经正确设置了一切,你的 PVC 应该显示为Active ➊。

使用 IOS 创建 Frame Relay 交换机

尽管 Frame Relay 交换机节点非常方便,但有时你可能需要使用 IOS 路由器创建你自己的 Frame Relay 交换机。也许你想使用不同的 LMI 类型(如 Cisco 或 q933a),或者你的学习需要了解实际的 Cisco Frame Relay 交换机的详细信息。无论如何,使用 IOS 交换机的设置相对简单。

以下的列表创建了一个使用 DLCI 映射的 IOS Frame Relay 交换机,这些映射与你之前配置的 GNS3 Frame Relay 交换机节点相同。它乍一看可能令人畏惧,但其实并不是;你只需要理解如何使用 Frame Relay connect 命令来配置 DLCI 到串口的映射。

➊ FRSW(config)# frame-relay switching
  FRSW(config)# interface Serial0/0
  FRSW(config-if)# description Serial connection to Router R1 (Hub)
  FRSW(config-if)# no shutdown
  FRSW(config-if)# no ip address
➋ FRSW(config-if)# encapsulation frame-relay
➌ FRSW(config-if)# clock rate 64000
➍ FRSW(config-if)# frame-relay lmi-type ansi
➎ FRSW(config-if)# frame-relay intf-type dce
  FRSW(config-if)# interface Serial0/1
  FRSW(config-if)# description Serial connection to Router R2 (Spoke)
  FRSW(config-if)# no shutdown
  FRSW(config-if)# no ip address
  FRSW(config-if)# encapsulation frame-relay
  FRSW(config-if)# clock rate 64000
  FRSW(config-if)# frame-relay lmi-type ansi
  FRSW(config-if)# frame-relay intf-type dce
  FRSW(config-if)# interface Serial0/2
  FRSW(config-if)# description Serial connection to Router R3 (Spoke)
  FRSW(config-if)# no shutdown
  FRSW(config-if)# no ip address
  FRSW(config-if)# encapsulation frame-relay
  FRSW(config-if)# clock rate 64000
  FRSW(config-if)# frame-relay lmi-type ansi
  FRSW(config-if)# frame-relay intf-type dce
  FRSW(config-if)# exit
➏ FRSW(config)# connect PVC1 Serial0/0 100 Serial0/1 101
➐ FRSW(config)# connect PVC2 Serial0/0 200 Serial0/2 201

配置 Frame Relay 交换机时,必须先使用 frame-relay switching 命令 ➊ 启用 Frame Relay 交换。你还需要在每个串行接口上使用 encapsulation frame-relay 命令配置 Frame Relay 封装。然后,使用 clock rate 命令 ➌ 设置时钟频率,选择 LMI 类型使用 frame-relay lmi-type ➍,并使用 frame-relay intf-type dce 命令 ➎ 设置接口类型为 DCE。接口启用后,你就可以定义你的 PVC。

注意

在某些 IOS 版本中,clock rate 命令可能需要输入为 clockrate

DLCI 到端口的映射是通过connect connection-name interface dlci interface dlci 命令进行配置的。此配置中的最后两个命令定义了两个 Frame Relay PVC 之间的连接映射。命令 connect PVC1 Serial0/0 100 Serial0/1 101 ➏ 定义了 R1 和 R2 之间的 PVC,并用于创建我们的第一个子网。源接口是 Serial0/0,源 DLCI 是 100。通过接口 Serial0/1 和配置在路由器 R2 上的 DLCI 101 完成 PVC。

命令 connect PVC2 Serial0/0 200 Serial0/2 201 ➐ 使用相同的语法在路由器 R1 和 R3 之间创建第二个 PVC(用于第二个子网)。

创建自己的帧中继交换机就这么简单。在使用 Cisco IOS 配置帧中继交换机时,LMI 类型可以设置为 ciscoansiq933a,但必须确保所有参与帧中继网络的路由器保持一致。

ATM 交换机

GNS3 提供了一种简便的方式来配置 异步传输模式(ATM) 交换机。ATM 类似于帧中继,它是一个数据链路层协议,用于将物理端口映射到逻辑电路。

要配置 VPI/VCI 到端口的映射,右键点击 ATM 交换机图标并选择 配置,如图 7-6 所示。在这里,我使用 ATM1 交换机节点上的两个端口配置了一个简单的虚拟电路。

节点配置器

图 7-6. 节点配置器

使用源和目标字段来创建端口映射,然后点击 添加。当你完成所有端口映射后,点击 应用确定 来完成配置。

现在让我们快速演示如何使用 ATM 交换机创建一个简单的点对点 WAN 连接。首先创建图 7-7 所示的拓扑。

示例 ATM 网络

图 7-7. 示例 ATM 网络

将一个 ATM 交换机添加到工作区,并使用来自图 7-6 的信息进行配置。接下来,添加两个路由器,并在每个路由器与交换机之间创建一条链路。你需要使用7200 系列路由器,每台路由器都需要配置一个ATM 端口适配器(PA-A1),安装在槽位 1。创建从每个路由器的 a1/0 到 ATM 交换机的链路,如图 7-7 所示,然后输入以下命令来配置 R1 路由器上的 ATM。

R1(config)# interface ATM1/0
R1(config)# no shutdown
R1(config)# interface ATM1/0.100 point-to-point
R1(config-subif)# ip address 10.10.10.1 255.255.255.252
R1(config-subif)# pvc 25/100
R1(config-if-atm-vc)# protocol ip 10.10.10.2 broadcast
R1(config-if-atm-vc)# encapsulation aal5snap

接下来,将类似的配置应用于路由器 R2。

R2(config)# interface ATM1/0
R2(config)# no shutdown
R2(config)# interface ATM1/0.200 point-to-point
R2(config-subif)# ip address 10.10.10.2 255.255.255.252
R2(config-subif)# pvc 25/200
R2(config-if-atm-vc)# protocol ip 10.10.10.1 broadcast
R2(config-if-atm-vc)# encapsulation aal5snap

要验证你的 ATM 电路是否启用,请输入 show atm pvc 命令。

R1# show atm pvc

如果 PVC 状态显示为 UP,那么两个路由器现在应该可以互相 ping 通。

云节点

云节点是一个高度可配置的设备节点,它并不模拟特定的硬件。而是提供了广泛的网络输入/输出(NIO)连接选项,允许 GNS3 虚拟设备与其他程序或实际硬件(如你 PC 的以太网适配器)进行通信。

你通过从 GNS3 设备(如路由器)到云节点创建标准链接来连接到云节点。完成后,任何离开虚拟接口的数据都会通过云节点的 NIO 连接传输到 GNS3 外部的目标,如物理以太网适配器。请记住,GNS3 中显示的吞吐量限制也适用于连接到云模式的虚拟接口,这意味着这些限制会影响你的整体性能。

要配置 NIO 连接(如图 7-8 所示),右键点击云图标并选择 配置

云节点配置器

图 7-8。云节点配置器

节点配置器提供六种连接选项:

  • NIO 以太网。创建与计算机中一个或多个物理或逻辑接口的连接。NIO 以太网配置让你可以设置通用的 NIO 和仅限 Linux 的 NIO。

  • NIO UDP。创建一个 UDP 套接字,以便在 GNS3 和其他程序之间建立链接。

  • NIO TAP。创建与虚拟 TAP 接口的连接。TAP 接口通常会桥接到你计算机中的物理接口。

  • NIO UNIX。在 GNS3 和其他应用程序之间创建一个 UNIX 套接字连接。

  • NIO VDE。在 GNS3 和虚拟分布式以太网设备之间创建一个链接。

  • NIO NULL。在 GNS3 和 NULL 设备之间创建一个链接,形成一个虚拟链路。

  • 其他. 允许你重命名一个云节点。

要配置连接,选择 NIO 连接类型,选择你想要的选项,然后点击 添加。你可以为每个云节点配置多个连接,这样你可以将多个 GNS3 设备链接在一起,就像你可以在 GNS3 交换机或路由器上使用多个接口一样。

在 Linux 系统中,你可能希望使用通用的 NIO 连接,这可能比特定于 Linux 的 NIO 更可靠。一个原因是特定于 Linux 的 NIO 可能会去除传入的 VLAN 标签。如果你在 Linux 上遇到连接困难,尝试两者,看看哪一个效果更好。

将 GNS3 设备连接到物理硬件

将项目连接到物理硬件的能力,是将 GNS3 从一个粗糙的钻石转变为非洲之星的关键。通过使用云节点,你可以与实时的 Cisco 交换机建立干道链接,甚至可以从 GNS3 设备访问互联网。这使 GNS3 拥有几乎无限的网络可能性。将 GNS3 连接到真实设备在某些系统上比在其他系统上更容易,但它应该能在所有主要操作系统上工作。

Dynamips 权限

在将 GNS3 设备连接到物理以太网适配器之前,你可能需要对 PC 进行一些更改。如果你的 Cloud 节点在 Windows 系统上使用 NIO 以太网配置,你应该通过右键点击 GNS3 图标并选择以管理员身份运行来以管理员权限运行 GNS3。为了使此选项永久生效,右键点击 GNS3 图标并选择属性,然后选择兼容性选项卡,在以管理员身份运行此程序前打勾。

在基于 Unix 的系统上,你需要提升 Dynamips 的权限才能使用 NIO 以太网或 NIO TAP 连接。如果跳过此步骤,你将不得不以 root 账户运行 GNS3。否则,NIO 连接将失败,GNS3 将在控制台窗口显示错误消息。

在 OS X 上设置正确的 Dynamips 权限,请使用以下命令:

$ **sudo chown root /Applications/GNS3.app/Contents/Resources/dynamips***
$ **sudo chmod 4755 /Applications/GNS3.app/Contents/Resources/dynamips***

在大多数 Linux 发行版上设置权限的方式相同;只需将文件路径替换为你的dynamips文件的正确位置,如以下代码所示。如果你使用的是基于 Debian 的 Linux 系统(如 Ubuntu),则应该使用setcap命令,因为它更安全。

$ **sudo apt-get install libcap2**
$ **sudo setcap cap_net_raw,cap_net_admin+eip /usr/local/bin/dynamips***

更改 Dynamips 权限后,你可以作为普通用户运行 GNS3,但 Dynamips 将被视为由 root 账户运行。

为桥接准备你的 PC

一些操作系统不允许 GNS3 直接与 PC 的以太网硬件通信,Wi-Fi 适配器通常也无法使用。在这些系统上使用以太网适配器前,可能需要安装额外的软件才能使其工作。

一种常见的解决方案是安装虚拟接口驱动程序,并使用桥接将其与 PC 的物理以太网适配器关联。然后,GNS3 会将网络数据传递给虚拟接口,虚拟接口通过桥接将数据转交给物理以太网接口。在基于 Unix 的系统中,虚拟接口通常通过 TUN/TAP 驱动程序提供。在 Windows 系统中,你将使用一个回环适配器,并将其桥接到物理以太网适配器。

即使 PC 的以太网硬件能够直接与 GNS3 协同工作,以下方法仍然是推荐的,并且是连接 GNS3 到外部网络的可预测方式。

在 Windows 上使用回环适配器

在 Windows 中,回环适配器驱动程序 提供了一个虚拟网络接口,可以与 PC 中的物理以太网适配器桥接。要在 Windows 中添加回环适配器,打开 控制面板设备管理器。右键点击列表中的计算机名称,选择 添加遗留硬件。点击 下一步,选择 手动从列表中选择要安装的硬件(高级),然后再次点击 下一步。从列表中选择 网络适配器 并点击 下一步。在添加硬件向导中,如 图 7-9 所示,选择 Microsoft 作为制造商,然后滚动并选择名为 Microsoft 回环适配器 的网络适配器。点击 下一步完成 完成安装。安装 Microsoft 回环适配器后,必须重启 Windows。

也可以通过在 GNS3 安装目录中运行 loopback-manager.cmd 命令来安装 Microsoft 回环适配器。

要在回环适配器和以太网适配器之间创建桥接,请打开 控制面板网络和共享中心,选择 更改适配器设置。选择这两个适配器,右键点击并弹出菜单,如 图 7-10 所示。选择 桥接连接,以在两个适配器之间创建桥接接口。完成后,重启 Windows 以使更改生效。

选择 Microsoft 回环适配器

图 7-9. 选择 Microsoft 回环适配器

使用 Microsoft 回环适配器和以太网适配器创建桥接

图 7-10. 使用 Microsoft 回环适配器和以太网适配器创建桥接

为了让 GNS3 在 Windows 系统中使用物理以太网适配器,你需要用回环适配器配置一个云节点(参见 将 GNS3 设备连接到物理硬件)。建议你重命名回环适配器,以便在 GNS3 中清晰地识别它。在这个示例中,我建议将 本地连接 2 改为 回环适配器

OS X 上的 TUN/TAP 驱动程序

如果你使用的是 OS X,你需要先安装虚拟接口驱动程序,才能让 GNS3 访问物理以太网接口。要在 OS X 上安装 TUN/TAP 驱动程序,请从 SourceForge (tuntaposx.sourceforge.net/) 下载适用于你 OS X 版本的驱动软件,运行安装程序并按照指示操作。

驱动程序应该安装在 /Library/Extensions 目录下,并应在你重启系统时自动加载。若要手动加载驱动程序,切换到 /Library/Extensions 目录并输入以下命令:

$ **sudo kextload tap.kext**

在启动 GNS3 之前,输入以下命令来设置你的 TAP 接口权限。每次重启你的 Mac 时,你都需要输入该命令。

$ **sudo chown $(id -un):$(id -gn) /dev/tap***

要激活 TAP 接口并将其与 PC 中的物理以太网端口桥接,你必须在添加云节点并将路由器连接到使用 /dev/tap0 配置的 nio_tap 接口后输入以下命令。如果提前输入这些命令,它们将失败,桥接也无法正常工作。每次加载包含云节点的项目时,你都需要输入这些命令。

$ **sudo ifconfig bridge0 create**
$ **sudo ifconfig bridge0 addm en0**
$ **sudo ifconfig bridge0 addm tap0 up**

在终端输入命令后,OS X 应该会将 tap0 接口与 Mac 中的物理以太网接口(本例中为 en0)进行桥接。你应该使用 ifconfig 命令来验证你 Mac 上以太网接口的名称,然后用该名称替换 en0。

注意

如果你更改了接口的最大传输单元(MTU)大小,在创建桥接时可能会看到“ifconfig: BRDGADD tap0: Invalid argument”错误。在这种情况下,你需要确保物理接口的 MTU 大小与 TAP 接口的 MTU 大小匹配。

我建议在你的项目中添加一个注释,其中包含这些命令,以便在打开项目时提醒你创建桥接。然后,在打开项目后,你可以复制该注释并将其粘贴到终端窗口中,从而节省时间。别忘了每次打开一个将以太网接口桥接到 TAP 接口的项目时,都要输入这些命令,否则它不会起作用

Ubuntu Linux 上的 TUN/TAP 驱动程序

在 Linux 上,你应该能够使用云配置器中的 NIO 以太网标签将云节点直接连接到你的以太网接口,但如果你发现 Ubuntu 需要 TUN/TAP 驱动程序,请更新你的包管理器并输入以下命令来安装该软件包。

$ **sudo apt-get install uml-utilities**

如果你运行的是其他版本的 Linux,可能需要安装不同的软件包,但这个软件包应该适用于大多数基于 Debian 的发行版。

连接到实时交换机

GNS3 是一个很棒的软件,但它也有一些限制。例如,NM-16ESW 交换模块并没有包含实际二层或三层交换机的所有高级功能。如果你想进行高级交换操作,你必须使用额外的软件,如 Cisco IOU 或使用物理的 Cisco 交换机。如果你正在创建 CCNA 实验室,那么一个实际的 Cisco 交换机可能就足够了,但如果你创建的是 CCNP 或 CCIE 实验室,你可能需要使用多个实际交换机。通常,目标是让 GNS3 路由器连接到每个外部交换机。这有些棘手,因为大多数 PC 只有一个以太网适配器。幸运的是,GNS3 和 IOS 已经解决了这个问题。你的选择是通过 PC 的单个以太网适配器将 VLANs 传输到交换机,或者在你的 PC 中安装多个以太网适配器。

在本节中,我将介绍两种将 GNS3 设备连接到实际 Cisco 交换机的方法。

  • 标准 802.1Q 中继。这种方法使用标准 802.1Q 中继,通过 PC 的以太网适配器,使 GNS3 设备能够与实际的 Cisco 交换机通信。

  • 断开交换机。这种方法使用一个特别配置的以太网交换机,称为断开交换机,允许 GNS3 设备通过 PC 的单个以太网适配器连接到多个实际交换机。要创建断开交换机,你必须手头有第二个物理以太网交换机作为断开交换机。

你选择的选项取决于你拥有多少交换机,你的 PC 操作系统,以及你 PC 中已安装了哪些以太网适配器。让我们首先看看 802.1Q 中继是如何工作的,以便连接到 Cisco 交换机。

配置标准 802.1Q 中继

在我看来,802.1Q 中继是将实际交换机连接到你的 GNS3 项目的最佳方式。标准 802.1Q 中继的优点是它易于设置,且与将交换机连接到物理网络的方式相同。缺点是你的 PC 操作系统或以太网驱动程序可能不支持它。通常它们会去掉从交换机传入你 PC 的数据包中的 802.1Q 标签。没有正确的标签,GNS3 就无法知道你的数据包属于哪个 VLAN,进而不知道该如何转发数据包,这会导致网络故障。

如果你在网上搜寻,你会发现人们提出了各种各样的创意解决方案来绕过这个问题,但这些解决方案通常是平台特定的,并且因机器而异。

注意

一种防止在 OS X 和 Linux 上去除标签的方法是使用支持 802.1Q 标签和 Jumbo 帧的 USB 以太网适配器。一款表现良好的适配器是 StartTech USB31000SW 适配器,但任何使用 ASIX AX88772A 芯片组的适配器应该都可以使用。

在这个示例中,你将把一个 EtherSwitch 路由器或以太网交换节点放入工作空间,并使用 802.1Q 干道协议进行配置。接下来,将一个云节点添加到工作空间,并使用 NIO 接口进行配置,然后将其连接到 GNS3 交换机。云节点可以直接连接或通过桥接连接到你的 PC 的以太网适配器(具体取决于操作系统)。然后,将以太网电缆从 PC 的以太网适配器插入到实时 Cisco 交换机的一个端口。你选择的交换机端口也需要配置为 802.1Q 干道。配置完成后,你应该能够通过干道将 GNS3 生成的 VLAN 数据包路由到实时交换机。

在本节中,我们将创建一个简单的项目,将我们的 GNS3 网络通过两个 VLAN(10 和 20)连接到实时 c3550 交换机。首先,创建图 7-11 中显示的拓扑。在配置云节点时,选择你的 PC 的以太网适配器名称,该名称可以在 NIO 以太网标签下找到。

使用标准 dot1q 干道连接到实时交换机的示例拓扑

图 7-11. 使用标准 dot1q 干道连接到实时交换机的示例拓扑

要使用EtherSwitch 路由器配置 VLAN 和 802.1Q 干道,打开 ESW1 的控制台并输入以下命令:

  ESW1# vlan database
➊ ESW1(vlan)# vlan 10
➋ ESW1(vlan)# vlan 20
  ESW1(vlan)# apply
  ESW1(vlan)# exit
  ESW1# configure terminal
  ESW1(config)# int f1/15
➌ ESW1(config-if)# switchport mode trunk
➍ ESW1(config-if)# switchport trunk encapsulation dot1q
  ESW1(config-if)# int f1/0
  ESW1(config-if)# switchport mode access
➎ ESW1(config-if)# switchport access vlan 10
  ESW1(config-if)# int f1/1
  ESW1(config-if)# switchport mode access
➏ ESW1(config-if)# switchport access vlan 20

之前的命令在交换机上创建了 VLAN 10 ➊和 VLAN 20 ➋,配置了一个使用 dot1q 协议的干道端口 ➌ 以及将接入端口分配给 VLAN 10 ➎(用于路由器 R2)和 VLAN 20 ➏(用于路由器 R3)。

如果你选择使用以太网交换节点,配置一个端口为 802.1Q 干道,其余端口为 VLAN 接入端口,如图 7-12 所示。

配置了 dot1q 干道端口的以太网交换节点

图 7-12. 配置了 dot1q 干道端口的以太网交换节点

端口 1 和端口 2 被配置为接入端口,分别使用 VLAN 10 ➊和 VLAN 20 ➋,端口 3 是 dot1q 干道端口 ➌,连接到云节点。

接下来,登录到实时 Cisco 交换机并创建相同的 VLAN。然后,配置 802.1Q 干道端口,并将其连接到你的 PC 以太网适配器。以下列表是如何使用你在本章中看到的命令来配置 c3550 交换机的示例。

c3550# configure-terminal
c3550(config)# ip routing
c3550(config)# interface vlan 10
c3550(config-vlan)# ip address 10.1.1.1
c3550(config-vlan)# interface vlan 20
c3550(config-vlan)# ip address 20.1.1.1
c3550(config-vlan)# exit
c3550(config)# Interface f0/1
c3550(config-if)# switchport trunk encapsulation dot1q
c3550(config-if)# switch port mode trunk
c3550(config-if)# switchport trunk allowed vlan all
c3550(config-if)# speed 100
c3550(config-if)# duplex full

为完成项目,配置路由器 R2 和 R3。登录到路由器 R2 并为 VLAN 10 配置 IP 地址和默认网关。

R2(config)# interface f0/0
R2(config-if)# description Using VLAN 10
R2(config-if)# ip address 10.1.1.2 255.255.255.0
R2(config-if)# no shutdown
R2(config-if)# exit
R2(config)# ip route 0.0.0.0 0.0.0.0 10.1.1.1

现在,登录到路由器 R3 并为 VLAN 20 配置 IP 地址和默认网关。

R3(config)# interface f0/0
R3(config-if)# description Using VLAN 20
R3(config-if)# ip address 20.1.1.2 255.255.255.0
R3(config-if)# no shutdown
R3(config-if)# exit
R3(config)# ip route 0.0.0.0 0.0.0.0 20.1.1.1

通过从一个 VLAN 到另一个 VLAN 输入ping命令,测试 VLAN 通过交换机的路由功能。

R3# ping 10.1.1.2
!!!!!

项目完成后,你可以使用 CDP 或 Wireshark 等工具进一步验证配置。

创建难以捉摸的突破交换机

突破交换机是将真实交换机连接到 GNS3 项目的另一种方式,通常使用 Ubuntu Linux 设置。尽管突破交换机在其他系统上也可以工作,但在 Linux 上设置最为简单。如前所述,像 Windows 和 OS X 这样的其他操作系统可能会去除数据包中的 VLAN 信息。因此,如果你计划创建突破交换机,最好在真实硬件上安装 Ubuntu。如果你使用虚拟机,底层的主机操作系统可能会去除 VLAN 标签,导致突破交换机无法正常工作。有时,你可以通过使用 USB 以太网适配器来解决这个问题,比如在配置标准 802.1Q 中继中提到的 StartTech USB31000SW。

这种交换方法至少需要两台真实的 Cisco 交换机;一台是突破交换机,另一台是你在 GNS3 项目中使用的一个或多个实时 Cisco 交换机。突破交换机用于欺骗实时 Cisco 交换机,让它们认为你的每个 GNS3 路由器都通过以太网电缆直接连接到实时交换机。实际上,你的 PC 只使用一个以太网适配器将所有 GNS3 路由器连接到实时交换机,这个适配器连接到突破交换机。突破交换机随后配置为将所有 VLAN 打破为单独的接口,你可以通过以太网电缆(每个 VLAN 一根)将它们插入到其他实时 Cisco 交换机中。我称这些为突破电缆。图 7-13 显示了你的 PC 和交换机的物理布局。

使用突破交换机和实时 Cisco 交换机的物理布局

图 7-13. 使用突破交换机和实时 Cisco 交换机的物理布局

下面是它如何工作的飞行视角图。突破 VLAN 配置在你的 Linux 以太网适配器上,使用 vlan 包,而在突破交换机上配置一个 802.1Q 中继。在 GNS3 中,你将添加一个或多个云节点,这些节点使用 NIO 以太网接口配置 Linux 突破 VLAN。在 GNS3 项目中,一个路由器连接到每个云节点的 VLAN 接口(每个接口一个路由器)。离开路由器的数据包进入云节点,Linux 给它们标记 VLAN ID,并通过你的 PC 的以太网适配器将它们传递到突破交换机。突破交换机在标准的 802.1Q 中继端口接收这些数据包。从那里,突破交换机使用 VLAN ID 来识别并透明地将数据包传递到一个(或多个)实时 Cisco 交换机。这种方法的巧妙之处在于,每个 GNS3 路由器都有一根单独的以太网电缆,连接到实时 Cisco 交换机的端口,尽管你的 PC 只有一个以太网适配器。

在 Linux 上配置断开开关相对简单。首先,更新您的包管理器并在 Ubuntu 系统上安装 VLAN 支持。

$ **sudo apt-get install vlan**

现在,使用 modprobe 命令启用 8021q Linux 模块。

$ **sudo modprobe 8021q**

接下来,增加以太网接口的 MTU 帧大小,并使用 vconfig 命令创建您的断开 VLAN。确保将 eth0 替换为您的接口名称。

➊ $ **sudo ifconfig eth0 mtu 1546**
➋ $ **sudo vconfig add eth0 10**
➌ $ **sudo vconfig add eth0 20**

注意

您的以太网适配器必须支持超过标准最大值 1500 字节的帧大小。

增加的帧大小 ➊ 为额外的 VLAN 标签提供了空间。为您的项目中的每个路由器创建一个断开 VLAN。在前面的列表中,我在我的 Linux PC 的 eth0 接口上创建了两个断开 VLAN(10 ➋ 和 20 ➌)。

注意

不要将断开 VLAN 与您在 GNS3 项目中创建的 VLAN 混淆。重要的是要理解,断开 VLAN 应仅由 Linux 和断开交换机使用——它们不能在您的 GNS3 项目或实时 Cisco 交换机中使用。

开始通过增加系统范围的 MTU 大小来配置断开开关。输入命令后,必须重新加载交换机才能使更改生效。

Breakout(config)# system mtu 1546

交换机重启后,登录并按如下方式配置 802.1Q 中继链路:

  Breakout# configure terminal
  Breakout(config)# interface FastEthernet 0/1
➊ Breakout(config-if)# switchport trunk encapsulation dot1q
➋ Breakout(config-if)# switchport mode trunk
➌ Breakout(config-if)# switchport trunk allowed vlan all

配置为中继的接口然后通过以太网电缆连接到您的 PC 的物理以太网适配器。如图所示,dot1q 封装 ➊ 配置在中继端口 ➋ 上,并且所有 VLAN ➌ 都允许通过中继。

接下来,进入您计划连接到实时交换机的每个接口,并为每个 VLAN 配置一个断开 VLAN 和一个 dot1q 隧道,如以下列表所示:

  Breakout(config)# vlan 10
  Breakout(config-vlan)# vlan 20
  Breakout(config-vlan)# exit
  Breakout(config)# interface FastEthernet 0/2
  Breakout(config-if)# description GNS3 R1 Physical Uplink to Live Switch SW1
➊ Breakout(config-if)# switchport access vlan 10
➋ Breakout(config-if)# switchport mode dot1q-tunnel
➌ Breakout(config-if)# l2protocol-tunnel cdp
  Breakout(config-if)# interface FastEthernet 0/3
  Breakout(config-if)# description GNS3 R2 Physical Uplink to Live Switch SW2
➍ Breakout(config-if)# switchport access vlan 20
  Breakout(config-if)# switchport mode dot1q-tunnel
  Breakout(config-if)# l2protocol-tunnel cdp

在这里,我们的断开开关的 FastEthernet 0/2 接口配置为 VLAN 10 ➊,dot1q 隧道 ➋ 和 Cisco 发现协议隧道 ➌。FastEthernet 0/3 配置方式相同,但用于 VLAN 20 ➍。这些接口用于将 GNS3 路由器连接到您的实时 Cisco 交换机。

我们已经知道,Cisco 发现协议(CDP)用于共享和收集与直接连接的 Cisco 设备(通常称为 邻居)的信息。然而,我们的实时 Cisco 交换机并未直接连接到 GNS3;它是通过断开开关连接的。在这种情况下,使用 CDP 的唯一方法是通过断开开关隧道协议到实时 Cisco 交换机,使用 l2protocol-tunnel cdp 命令。(您也可以隧道 STP 和 VTP。)事情变得复杂的地方是,CDP 隧道并非在所有交换机上都能工作。如果您需要使用 CDP,务必选择完全支持 CDP 隧道的断开交换机。表 7-1 列出了几款常见的 Cisco 交换机及其 CDP 隧道能力。

表 7-1. 常见的 Cisco 交换机及其 CDP 隧道兼容性

交换机 CDP 隧道兼容性
Cisco 2950 CDP 在任何方向都无法工作。该交换机不支持层 2 隧道。
Cisco 3550 CDP 仅在一个方向上工作。不论 IOS 版本如何,交换机上无法看到邻居。
Cisco 3560 CDP 仅在一个方向上工作。不论 IOS 版本如何,交换机上无法看到邻居。
Cisco 3750 双向 CDP 和完全功能(层 2 和层 3),使用 IP 服务镜像。IP 基础镜像不支持隧道功能。
Cisco 4948 双向 CDP 和完全功能(层 2 和层 3),使用最低 IP 服务镜像。

Cisco 3750 交换机表现良好,既可以作为分路交换机,也可以用于隧道 CDP,但它不是最便宜的交换机。如果你没有足够的预算购买此型号,你可以选择一个较便宜的型号,应该能够作为分路交换机工作,但你在 GNS3 项目中不会获得完全透明性。

在继续之前,请确保分路交换机的 Fa0/1 端口已连接到你的 PC 的以太网端口,Fa0/2 和 Fa0/3 已连接到你现场项目交换机的以太网端口。检查完这些连接后,启动 GNS3 并使用你之前创建的 Linux VLAN 配置云节点,如图 7-14 所示。

使用 Linux VLAN 配置云节点

图 7-14. 使用 Linux VLAN 配置云节点

注意

即使你使用的是 Linux,使用通用以太网 NIO 而不是 Linux 以太网 NIO 也很重要。否则,VLAN 标记可能无法正常工作。

当你完成将分路 VLAN 添加到云节点后,向工作空间添加几个路由器,并为每个路由器创建一个与云节点上分路 VLAN 的连接。在图 7-15 中,路由器 R1(F0/0)通过nio_gen_eth:eth0.10连接到云中的 VLAN 10,路由器 R2(F0/0)通过nio_gen_eth:eth0.20连接到 VLAN 20。

使用云节点连接到 Linux VLAN 的虚拟路由器

图 7-15. 使用云节点连接到 Linux VLAN 的虚拟路由器

因为分路交换机仅用于将 VLAN 分割到多个物理端口,所以无需进一步配置。在这个示例中,路由器 R1 现在连接到任何插入分路交换机端口 f0/2 的活动交换机,而 R2 应连接到任何插入端口 f0/3 的活动交换机。

注意

如果你使用多个 VLAN 创建大型项目,可能希望每个云节点只分配一个 Linux VLAN 接口,以帮助清晰地展示工作空间中的布局。

现在你的 GNS3 路由器应该能够与一个或多个实际的 Cisco 交换机进行通信。

可选的分路交换机配置

如果你正在运行 Windows 或 OS X,你可能能够使用 GNS3 交换机节点将你的项目连接到突破交换机,如 图 7-16 所示。在此设置中,突破交换机与之前配置的方式相同,但你需要对你的 PC 进行一些调整。以太网交换机节点通过一个 NIO 接口连接到云节点,该接口在 Windows 上配置为回环适配器,在 OS X 上配置为 TAP 接口。虚拟适配器与 PC 的物理以太网适配器桥接。这样,云 1 就可以通过 PC 的以太网适配器连接到突破交换机。

使用以太网交换机节点配置突破交换机

图 7-16. 使用以太网交换机节点配置突破交换机

为了让突破交换机正常工作,你应该增加 PC 物理以太网适配器的 MTU 大小,但并不是所有适配器都支持此功能。

如果你是 OS X 用户,必须增加你物理适配器和虚拟适配器的 MTU 大小。要通过命令行增加 MTU 大小,可以使用以下示例:

$ **sudo ifconfig en0 mtu 1546**
$ **sudo ifconfig tap0 mtu 1546**

注意

在 OS X 上,使用相同的 MTU 大小配置虚拟适配器和物理适配器,否则桥接创建将失败。

你可能需要查看以太网适配器的文档,以便在 Windows 上配置你的适配器。然而,在许多适配器上,MTU 设置可以在适配器的高级属性中找到,如 图 7-17 所示。在这个示例中,Jumbo Packet 的值被设置为 9014 字节,适用于 Intel PRO/1000 MT 卡。

在 Windows 上设置 Jumbo 包大小

图 7-17. 在 Windows 上设置 Jumbo 包大小

接下来,启动以太网交换机节点的节点配置器,定义 VLAN 和 dot1q 中继端口,如 图 7-18 所示。

配置为突破交换机的以太网交换机节点

图 7-18. 配置为突破交换机的以太网交换机节点

在此示例中,R1 连接到接入端口 1(VLAN 10),R2 连接到接入端口 2(VLAN 20),端口 3 是连接到突破交换机的 dot1q 中继端口。在 GNS3 中完成所有配置后,你可以登录并按之前描述的方式配置突破交换机的 VLAN 和 dot1q 隧道。

在你的 PC 上使用多个适配器

与其使用 802.1Q 中继或分离交换机,您可以为 GNS3 中的每个路由器使用一个物理以太网接口。如果您有一台笔记本电脑,可以使用 USB 集线器并将多个 USB 以太网适配器连接到计算机;如果是台式机,您可以使用 USB 集线器方法或购买多端口以太网卡。图 7-19 显示了设计的物理布局。

使用多个适配器的物理布局

图 7-19. 使用多个适配器的物理布局

将计算机中的每个以太网适配器连接到实时的 Cisco 交换机上的物理端口。登录到每个交换机,并使用 switchport mode access 命令配置接入端口。然后,通过输入 switchport access vlan {vlan number} 来为端口分配一个唯一的 VLAN 编号,如以下列表所示。

从第一个交换机(c3550_sw1)开始:

c3550_sw1(config)# interface f0/1
c3550_sw1(config-if)# description VLAN used for PC Ethernet Adapter 1
c3550_sw1(config-if)# switchport mode access
c3550_sw1(config-if)# switchport access vlan 10

接下来,配置第二个交换机(c3550_sw2):

c3550_sw2(config)# interface f0/1
c3550_sw2(config-if)# description VLAN used for PC Ethernet Adapter 2
c3550_sw2(config-if)# switchport mode access
c3550_sw2(config-if)# switchport access vlan 20

要将 GNS3 设备连接到交换机,请在工作区中添加一个 Cloud 节点,并为计算机中的每个以太网适配器分配一个 NIO Ethernet 接口。通过每个接口连接一个 GNS3 路由器。

注意

OS X 用户需要为每个适配器创建一个独特的桥接接口,并将每个以太网接口桥接到一个独特的 TAP 接口。OS X 支持最多 16 个 TAP 设备(tap0 到 tap15)。

在项目中的所有设备配置完成后,您的 GNS3 设备应该能够与实时的 Cisco 交换机通信。交换机上需要进一步配置,以启用 GNS3 路由器之间的路由,这取决于您创建的交换机块设计。

现在让我们来看一下将 GNS3 连接到互联网的步骤。

将 GNS3 设备连接到互联网

要将 GNS3 设备连接到互联网,您需要在计算机中使用以太网适配器。如果直接使用无线网络适配器,则不支持,尽管如果将其桥接到回环适配器或 TAP 接口,可能会有一个适配器能工作(但不能完全依赖它)。将 GNS3 设备连接到以太网的方式与连接物理交换机相同:将一个 Cloud 节点添加到项目中,并使用 NIO TAP 或 NIO Ethernet 接口进行配置。

配置 Windows

在 Windows 系统上,使用回环适配器和计算机的物理以太网适配器创建一个桥接。然后,在 GNS3 中,使用配置了 NIO Ethernet 的 Cloud 节点并选择回环适配器。因为回环适配器已桥接到物理以太网适配器,您可以通过 Cloud 连接到 GNS3 外部的网络——包括互联网。

在 Windows 8.x 上,安装一个回环适配器,但不要将其添加到桥接中。相反,在您的物理接口(以太网或 Wi-Fi)上配置 Internet 连接共享(ICS)。操作方法是,右键点击 开始 按钮并选择 网络连接。接下来,右键点击您的物理接口并选择 属性。选择 共享 标签页,然后勾选 允许其他网络用户通过此计算机的 Internet 连接进行连接 选项。最后,从家庭网络连接下拉菜单中选择您的回环适配器,并点击 确定

配置基于 Unix 的系统

在 Ubuntu Linux 上,使用您的 PC 的以太网接口创建一个 NIO 以太网连接。在 OS X 和一些 Linux 系统上,使用配置了 /dev/tap0 的 NIO TAP 连接,并将 TAP 接口桥接到 PC 的以太网接口。

创建一个简单网络

通过将一个路由器和一个云节点添加到您的工作空间,并将路由器与云之间添加一条连接来创建一个项目。在图 7-20 中,云是使用 Windows 回环适配器配置的,名为 Local Area Connection 2

使用 Windows 回环适配器连接到云

图 7-20. 使用 Windows 回环适配器连接到云

要测试 Internet 连接性,将一根以太网电缆从您的 PC 连接到一个互联网设备,如电缆调制解调器,并在您的 GNS3 路由器上配置一个 IP 地址。如果像我这里一样使用 DHCP 来分配 IP 地址,您可能需要稍等片刻,直到路由器获得 IP 地址后才能测试连接性。

R1(config)# ip domain-lookup
R1(config)# ip name-server 8.8.8.8
R1(config)# interface f0/0
R1(config)# no shutdown
R1(config-if)# ip address dhcp

*Mar 1 00:01:08.875: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned
DHCP address 192.168.1.101, mask 255.255.255.0, hostname R1

在路由器获取到 IP 地址后,您应该能够 ping 通 Internet 上的主机。试着 ping www.gns3.net!您不仅限于使用路由器连接到 Internet;您也可以使用 ASA 设备、Juniper 路由器或任何其他支持 TCP/IP 的设备。

注意

如果您的路由器 R1 后面有其他设备,您需要在 R1 上配置 NAT,才能让它们路由到 Internet。欲了解更多信息,请访问思科网站 (www.cisco.com/en/US/tech/tk648/tk361/technologies_tech_note09186a0080094e77.shtml#topic6)。

最后的想法

在本章中,我们探讨了如何配置 GNS3 设备节点,并将其集成到您的项目中,使用 Cisco IOS。它们非常容易设置,并且非常适合大型项目,因为它们大大减少了 PC 的负载。与 Dynamips 设备相比,GNS3 设备节点几乎不使用 PC 资源。

将 GNS3 设备连接到实际的 Cisco 交换机是一个比较棘手的操作。如果你选择创建一个标准的 802.1Q 中继链路来连接实际交换机,你可以使用 EtherSwitch 路由器或以太网交换机节点,但你的 PC 操作系统和以太网适配器驱动程序必须都支持 802.1Q 标记。如果没有正确的 VLAN 标签,中继功能将无法正常工作。

如果你有一台额外的 IOS 交换机,你可以创建一个分裂交换机,这是一种非常可靠的方式,可以将多个真实的 Cisco 交换机集成到你的 GNS3 项目中。分裂交换机在 Linux 系统上最为可靠,但也可以在 Windows 和 OS X 上进行配置。

在下一章,我们将介绍一些更高级的功能,包括 Cisco、ASA 以及 IDS/IPS。

第八章。Cisco ASA、IDS/IPS 和 IOS-XRv

你已经看到了一些 GNS3 如何与其他软件和操作系统交互的方法。在本章中,你将深入了解 GNS3 的高级功能,并探索如何通过与额外的 Quick Emulator(QEMU)虚拟设备和软件进行交互来扩展你的项目。

了解像 Cisco 的 ASA、入侵检测系统/入侵防御系统(IDS/IPS)和 IOS-XR 这样的技术,可以拓宽你对 Cisco 和 GNS3 的视野,并在选择网络认证路径时有所帮助。此外,操作虚拟化的 Cisco 产品也很有趣,而这些产品通常是大多数人无法接触到的。学习如何使用一些 Cisco 的基于图形界面的工具也是非常重要的。

我将首先向你展示如何安装 Cisco 配置专业版(CCP)软件,这是一个基于 Web 的配置路由器的替代方法,替代了使用 Cisco 命令行接口的传统方式。接下来,你将学习如何配置和运行 ASA。我还会讨论如何使用 Cisco 的自适应安全设备管理器(ASDM)软件,这与前面提到的 CCP 软件类似,但用于配置 ASA。到本章结束时,你将了解到,耐心不仅是一种美德,更是设置 Cisco IDS/IPS 时的必要条件。最后,我将向你展示如何在 GNS3 中配置和使用 Cisco IOS-XRv 设备。

Cisco 配置专业版

大多数工程师使用 IOS 命令来配置路由器和交换机,但也有其他方法。CCP 是一种基于 Web 的替代方案,它使用“智能向导”来简化路由器配置,并提供工具帮助你监控和排查网络和 VPN 的故障。简而言之,CCP 允许经验较少的用户让他们的设备快速启动并运行。

项目配置

要在 GNS3 中使用 CCP,你需要创建一个简单的项目,使用一台路由器和一台运行 Microsoft Windows 的 VirtualBox 虚拟机,如图 8-1 所示。虽然有其他方法可以实现这一点,但我选择演示这种方法,因为它应该适用于任何运行 GNS3 的 PC(Windows、Linux 和 OS X)。

使用路由器和 Windows 主机的 CCP 拓扑

图 8-1。使用路由器和 Windows 主机的 CCP 拓扑

登录到 Windows 计算机并禁用防火墙,以确保 CCP 可以与路由器进行无障碍通信。(这不是强制性的,但可能会避免后续的麻烦。)为 Windows 客户机分配一个与路由器在同一子网中的 IP 地址(在此示例中为 10.10.10.100)。

接下来,在你的路由器上创建一个基本配置。

➊ R1(config)# ip http server
  R1(config)# ip http secure-server
  R1(config)# ip http authentication local
➋ R1(config)# username admin privilege 15 secret cisco
  R1(config)# interface f0/0
➌ R1(config-if)# ip address 10.10.10.1 255.255.255.0
  R1(config-if)# no shutdown

你需要启用路由器的 Web 服务器 ➊,创建一个具有完全 EXEC 模式权限的用户 ➋,并为接口分配一个 IP 地址 ➌。在这个示例中,路由器被分配了 IP 地址 10.10.10.1。

注意

你必须创建一个具有完全 EXEC 模式权限(权限 15)的 Cisco 管理员账户,以便后续使用 CCP 配置路由器时拥有足够的权限。

配置完路由器后,使用 ping 命令测试 Windows 客户机与路由器之间的连接。

C:> **ping 10.10.10.1**

如果你能成功 ping 通路由器,那么可以安全地继续。如果无法 ping 通路由器,请检查你的 IP 地址和接口设置。

CCP 安装

CCP 是一个基于 Java 的应用程序,它与 Web 浏览器交互,因此在开始之前,如果你尚未安装 Java,请先下载并安装 Java(* www.java.com/)。确保你也安装了最新版本的 Adobe Flash Player( www.adobe.com/)。你可以从 Cisco 网站( www.cisco.com/*)下载 Cisco 配置专业版。

要安装 CCP,登录到你的 Windows 虚拟机并启动安装程序;你应该能看到 CCP 安装向导。点击下一步并按照提示完成安装。

运行 CCP

通过右键点击程序图标并选择以管理员身份运行,启动 Cisco 配置专业版。当程序打开后,系统会要求输入你想要管理的路由器的 IP 地址。你应该能看到 CCP 设备管理器,如图 8-2 所示。

CCP 设备管理器

图 8-2. CCP 设备管理器

输入你分配给路由器的 IP 地址(10.10.10.1),输入你之前设置的管理员用户名和密码(admincisco),然后点击确定。登录后,你应该能看到 CCP 管理界面,如图 8-3 所示。

Cisco CCP 管理界面

图 8-3. Cisco CCP 管理界面

在你能够管理路由器之前,首先需要通过点击路由器主机名 R1 ➊,然后点击发现 ➋,以便 CCP 能够发现其特性和功能。发现后,你可以通过点击工具栏中的配置 ➌ 来设置路由器。使用 CCP 的优点是,它会引导你完成分配 IP 地址、NAT、VPN 和其他 Cisco 功能的过程,而无需你了解任何 IOS 命令。请注意,Cisco 认证考试主要关注 IOS 命令,而不是使用 CCP 配置设备。

Cisco ASA 防火墙

Cisco 的 ASA 是旧款 PIX 防火墙的改进版本。GNS3 模拟了 Cisco ASA 5520 型号。虽然它不是路由器,但你可能会惊讶地发现,ASA 支持多种路由协议,包括 RIP、EIGRP 和 OSPF,这使得你可以轻松地将其与其他 GNS3 路由设备联网。

获取镜像

在你可以在 GNS3 中使用 ASA 虚拟机之前,你需要一个 ASA 操作系统的镜像文件。获取 ASA 操作系统镜像的最快方法是从你已经拥有的 ASA 设备中复制它(即从 ASA 安装光盘或直接从 ASA 设备复制)。从 Cisco ASA 复制文件的方式与从 Cisco 路由器复制文件的方式相同:你可以使用 FTP 或 TFTP。在这个示例中,你将使用 TFTP 服务器。市面上有很多免费的 TFTP 服务器可供选择,所以可以选择一个你喜欢的并安装到你的 PC 上。

在你的网络上运行 TFTP 服务器后,登录到你的物理 ASA,并将 ASA 镜像文件复制到你的 PC 上。在下面的列表中,我的 ASA 镜像文件名为 asa824-k8.bin,而我的 TFTP 服务器运行在 IP 地址为 192.168.1.100 的 PC 上:

ciscoasa# copy flash:asa824-k8.bin tftp
Address or name of remote host []? **192.168.1.100**

在你获得 ASA 镜像文件后,你需要对文件进行一些修改,才能在 GNS3 中使用它。

为 GNS3 准备 ASA 镜像

Cisco ASA 实际上只是一台小型的 Linux 计算机,像 asa824-k8.bin 这样的 ASA 镜像文件包含了一个紧凑型的 Linux 操作系统,专为在 ASA 硬件上运行而设计。

镜像文件包括一个 Linux 内核和为该设备提供支持的软件。要使用 GNS3 运行 ASA 软件,你需要解压 .bin 文件,进行一些修改,并将其重新打包成适合 QEMU 的格式。幸运的是,Linux 和 Cisco 社区中有很多聪明人写了图像解包软件,帮你完成这项工作。你可以从 GNS3 网站下载适用于 Windows 的 Cisco 图像解包工具,或者使用像 repack.v4.sh 这样的 Linux shell 脚本。无论你选择哪个解包工具,都需要找到适合你的 ASA 软件版本的工具。运行脚本后,你应该得到两个文件:asa-vmlinuz(一个 Linux 内核)和 asa-initrd.gz(一个 RAM 磁盘文件)。这些就是 QEMU 和 GNS3 使用的文件。

如果你不想修改自己的 ASA 镜像文件,可以通过快速的互联网搜索找到许多现成可用的 ASA 镜像文件。这些镜像文件通常以 .zip 文件的形式提供,包含两个文件(asa-vmlinuxasa-initrd.gz)。

配置 GNS3 以使用 ASA

在配置 GNS3 中的 ASA 之前,请确认 QEMU 已经在你的 PC 上安装并通过测试。(请参考第六章中针对你操作系统的 QEMU 安装信息。)接下来,启动 GNS3,在 Linux 和 Windows 中选择 编辑首选项,或在 OS X 中选择 GNS3首选项,然后从左侧面板中选择 QEMU 虚拟机,如图 8-4 所示。

QEMU 虚拟机首选项

图 8-4. QEMU 虚拟机首选项

要在 GNS3 中创建新的 ASA,请点击新建以启动新的 QEMU VM 向导。从类型下拉菜单中选择ASA 8.4(2),如图 8-5")所示。

创建新的 QEMU 虚拟机并将类型设置为 ASA 8.4(2)

图 8-5. 创建新的 QEMU 虚拟机并将类型设置为 ASA 8.4(2)

默认情况下,您的设备会自动命名为ASA,但您可以根据需要重新命名。命名完成后,点击下一步继续。

向导应自动定位并选择适合您 PC 的 QEMU 二进制文件,如图 8-6 所示。

选择 ASA 虚拟机的 QEMU 二进制文件和内存

图 8-6. 选择 ASA 虚拟机的 QEMU 二进制文件和内存

如果没有找到 QEMU 二进制文件,请验证您的 PC 上是否正确安装了 QEMU,然后重试。默认的 RAM 值是 1024MB,但这是运行 ASA 镜像所需的最小值。您可以通过在字段中输入新值来增加该值。完成后,点击下一步继续向导。

最后的步骤是浏览并选择您的初始 RAM 磁盘和内核镜像,如图 8-7 所示。

Linux 启动特定设置的 ASA 虚拟机

图 8-7. Linux 启动特定设置的 ASA 虚拟机

将初始 RAM 磁盘(initrd)和内核镜像设置为您计算机的正确文件;这些文件通常命名为 asa842-initrd.gzasa842-vmlinuz

选择完这两个镜像后,点击完成以完成安装。成功添加 ASA 后,ASA 设备应显示在 QEMU VM 偏好设置窗口中,如图 8-8 所示。

QEMU 虚拟机的 ASA 偏好设置

图 8-8. QEMU 虚拟机偏好设置的 ASA 虚拟机

您当前的 ASA 设置应显示在右侧面板中,您需要注意的一项设置是 CPU 限制(位于优化选项下)。

与 Dynamips 设备不同,ASA 没有闲置 PC 选项来控制 CPU 消耗。这意味着 ASA 可能会占用整个 CPU,就像没有设置闲置 PC 值的 Dynamips 路由器一样。为了避免这种情况,GNS3 使用另一个开源应用程序(cpulimit)来调整 QEMU/ASA 实例可以消耗的最大 CPU 量。默认值为 80%,在大多数情况下效果良好。你可以编辑 ASA 设置,增加或减少该值,但要小心;通过降低百分比使用太少的 CPU 可能会导致 ASA 性能不佳并频繁崩溃,而将百分比设置得太高则可能导致整体 PC 性能变慢。

在优化设置中,另一个需要注意的设置是进程优先级。GNS3 中的默认值为低,但可以设置为低、中或高。进程优先级决定了 QEMU/ASA 实例何时获得 CPU 时间。高优先级的进程会在低优先级的进程之前获得 CPU。通常,改变优先级应该对系统几乎没有影响,但为了安全起见,保持设置为低,以防 ASA 可能覆盖重要的系统进程。

在 Windows 和 OS X 上,cpulimit 程序应该已经随着 GNS3 一起安装。在 Ubuntu Linux 上,你需要使用以下命令安装 cpulimit:

$ **sudo apt-get install cpulimit**

现在你的 ASA 虚拟机不会接管你的系统,让我们登录到一个 ASA 并进行基本配置。

在 GNS3 中测试 ASA

从设备工具栏中将 ASA 防火墙节点拖到工作区。你的 ASA 应该位于工具栏的安全设备部分。启动 ASA 并打开 GNS3 控制台连接。在加载过程中,你应该看到标准的 ASA 启动消息,随后是 ASA 命令提示符:

ciscoasa>

在提示符前出现一些错误消息是完全正常的,但如果 ASA 无法启动或你看到很多错误,请检查设置或尝试使用不同的 ASA 镜像文件。

注意

在 GNS3 中,ASA 在启动过程中挂起或停滞并不罕见,尤其是在较旧的硬件上。如果发生这种情况,停止并重新启动 ASA。可能需要尝试几次才能成功启动。

为了测试简单的网络连接性,创建一个连接,将你的 ASA 与工作区中的另一个 GNS3 设备连接。接下来,打开 ASA 的控制台连接,并为接口配置一个 IP 地址。

ciscoasa> **enable**
ciscoasa# configure terminal
ciscoasa(config)# interface GigabitEthernet0
ciscoasa(config-if)# ip address 10.10.10.1 255.255.255.0
ciscoasa(config-if)# nameif inside
ciscoasa(config-if)# no shutdown

配置完接口后,使用ping命令测试从你的 ASA 到项目中其他设备的连接。

警告

即使启用了 CPU 限制,ASA 设备仍然是处理器密集型的,因此你可能希望在项目中谨慎使用它们,特别是当你使用低端 PC 时。

在验证你的 ASA 设备正常运行后,你可以开始将其添加到项目中。这对学习如何配置 ASA 或准备思科认证考试很有帮助。

ASDM 安装

Cisco 的 ASDM 类似于在 Cisco 配置专业工具中介绍的 CCP 软件,因此许多细节是相同的。像 CCP 一样,ASDM 提供了一个基于 Java 的图形化网页界面。CCP 和 ASDM 的主要区别在于,ASDM 仅用于配置 Cisco ASA 设备,而不用于配置其他 Cisco 设备。

在安装 ASDM 软件之前,创建一个类似于图 8-9 中的项目。你将使用 Windows 虚拟机来安装和运行 ASDM 应用程序,然后启动 ASDM 并用它来查看 ASA 设备。

ASDM 拓扑,包含 ASA 防火墙和 Windows 虚拟机

图 8-9. ASDM 拓扑,包含 ASA 防火墙和 Windows 虚拟机

获取 ASDM 软件有两种方法:从真实 ASA 的闪存中复制,或者在线查找。在获得 ASDM 软件后,需要将其存储在虚拟 ASA 的闪存驱动器上;然后通过网页浏览器在 Windows 虚拟机 PC 上安装它。我推荐使用 Mozilla Firefox,因为我发现它比 Internet Explorer 更能顺畅运行 ASDM。(只要确保禁用任何弹出窗口拦截器和防火墙,并安装最新版本的 Java。)你还需要 FTP 或 TFTP 服务器软件,将 ASDM 软件从 GNS3 Windows 虚拟机复制到 ASA 设备。

在获得 ASDM 镜像后,需要在 ASA 设备上进行一些准备工作,以便将 ASDM 镜像复制过来。请在 ASA 上输入以下命令:

  ciscoasa(config)# interface gigabitEthernet0
➊ ciscoasa(config-if)# ip address 10.10.10.1 255.255.255.0
  ciscoasa(config-if)# nameif inside
  ciscoasa(config-if)# no shutdown
  ciscoasa(config-if)# exit
➋ ciscoasa(config)# username admin password cisco privilege 15
➌ ciscoasa(config)# http server enable
  ciscoasa(config)# http 10.10.10.0 255.255.255.0 inside

就像设置 CCP 时一样,首先为内部接口分配一个 IP 地址➊。然后,创建一个本地用户账户➋,并启用 HTTP 服务器➌。

在 ASA 配置完成且你已将 ASDM 软件放到 FTP 或 TFTP 服务器上后,将软件从 Windows 虚拟机复制到 ASA 的闪存内存中。

ciscoasa# copy tftp flash
Source filename []? **asdm-641.bin**
Address or name of remote host []? **10.10.10.100**
Destination filename [asdm-641.bin] <enter>
Accessing tftp://10.10.10.100/asdm-641.bin !!!!!!!!!!!

本例通过 TFTP 将一个名为asdm-641.bin的文件从我的 GNS3 Windows 虚拟机复制到我的 ASA 设备。

复制 ASDM 文件后,你需要在 Windows 虚拟机上安装该软件。启动你的网页浏览器,并打开到 ASA 的 IP 地址的 HTTPS 连接。你应该会看到一个类似于图 8-10 的屏幕。

Cisco ASDM 安装屏幕

图 8-10. Cisco ASDM 安装屏幕

由于你将使用 Java Web Start 选项,请点击运行 ASDM。你的 PC 应该会下载 Java 软件,并向你展示一些安全警告,你可以安全地点击跳过,直到看到 Cisco ASDM-IDM 启动器,如图 8-11 所示。

Windows ASDM-IDM 启动器

图 8-11. Windows ASDM-IDM 启动器

输入你的 ASA 用户名和密码(admincisco),然后选择 OK 以登录到 ASA。成功登录后,你可以从 ASDM 设备仪表盘开始配置系统,见图 8-12。

ASDM 设备仪表盘

图 8-12. ASDM 设备仪表盘

ASDM 设备仪表盘包含了几个向导,提供了创建常见网络和虚拟私人网络(VPN)配置的引导设置。它还提供了许多实时统计数据,帮助你监控网络性能。虽然在 GNS3 中不一定有用,但这些信息对于维持现实中的健康网络可能非常宝贵。

Cisco IDS/IPS

Cisco IDS/IPS 可以识别并阻止网络上的恶意活动。在现实中,IDS/IPS 可以是一个独立的 Cisco 设备,也可以是你插入 ASA 或集成服务路由器的模块。

在 GNS3 中创建 IDS/IPS 虚拟机相比于大多数任务来说确实比较麻烦,因此在开始之前,你可能需要腾出几个小时。

获取 IDS/IPS 镜像

与 PIX 和 ASA 一样,IDS/IPS 运行在特殊的 Linux 软件上。如果你拥有物理 IDS/IPS 设备,那么应该会随设备附带一个包含软件的升级/恢复 CD。

要使用 QEMU 虚拟机安装 IDS/IPS,你需要一个 CD 的 ISO 镜像文件。你可以使用你的 CD 创建自己的 ISO 镜像文件,或者在网上找到一个。在这个示例中,我使用了一个名为 IPS-K9-cd-1.1-a-6.0-6-E3.iso 的 IOS 镜像文件。其他版本的软件可能也可以正常工作,但这个版本已经证明在创建兼容 GNS3 的 IDS/IPS 时效果良好。

创建一个适用于 QEMU 的 IDS/IPS 系统

IDS/IPS 软件通过 QEMU 运行,因此在开始之前,请确保你已经在 PC 上安装了 QEMU,并且已在 GNS3 中测试过它。然后,为你的 IDS/IPS 创建一个构建目录,并将 ISO 文件复制到该目录。这里就是你将创建 IDS/IPS 虚拟机的地方。

要在 QEMU 虚拟机上安装 IDS/IPS 软件,你需要创建两个 QEMU 虚拟硬盘镜像文件。打开终端窗口并输入以下命令来创建镜像:

$ **qemu-img create ipsdisk1.img 512M**
$ **qemu-img create ipsdisk2.img 4000M**

注意

在 Windows 和 OS X 上,你可能需要设置系统路径,以包含 QEMU 安装的位置。请参考 在 Windows 和 OS X 上安装 QEMU 获取详细信息。

既然你已经创建了虚拟磁盘,输入以下命令以从 ISO 镜像文件启动你的虚拟机:

$ **qemu-system-i386 -hda ipsdisk1.img -hdb ipsdisk2.img -m 1024 -cdrom IPS-K9**
**-cd-1.1-a-6.0-6-E3.iso -boot d**

在 Windows 系统中,将此命令中的 qemu-system-i386 替换为 qemu-system-i386w。系统启动后,你应该看到一个类似于 图 8-13 的画面。

IDS/IPS 安装屏幕

图 8-13. IDS/IPS 安装屏幕

boot: 提示符下,输入 k 执行完整系统恢复。在恢复过程中,你的 QEMU 虚拟机会从 ISO 镜像启动 Linux,安装 GRUB 引导加载器,并安装 IDS/IPS 软件。当安装完成并复制文件后,虚拟机会自动重启,并显示一个 “FATAL” 启动错误信息,如图 8-14 所示。

致命错误:没有可启动设备

图 8-14. 致命错误:没有可启动设备

不用担心,这个错误是完全正常并且预期的。退出 QEMU 并输入以下命令再次启动 IDS/IPS:

$ **qemu-system-i386 -name IPS4215 -hda ipsdisk1.img -hdb ipsdisk2.img -m**
**1024 -smbios type=1,product=IDS-4215 -net nic,vlan=1,model=e1000 -net**
**nic,vlan=2,model=e1000**

IDS/IPS 虚拟机会启动进入 Linux GRUB 启动菜单。在启动菜单中,输入 e 来编辑条目。使用箭头键向下移动,突出显示 kernel 条目,再次输入 e 来编辑该条目。

使用回退箭头键定位并将 init=/loadrc 修改为 init=1。按下 ENTER 接受更改,然后按 b 从修改后的 GRUB 菜单启动。系统应该现在能够启动,绕过 IDS/IPS 启动,进入 Linux 控制台。从控制台命令行,你将使用 vi 编辑器修改一些 IDS/IPS 配置文件。

注意

你必须使用 vi 编辑器来修改文件,因为没有安装其他编辑器。如果你不熟悉 vi,最好在继续之前复习一下它。只需在线搜索 man vi 或在命令行输入 man vi 查看手册页。

在你熟悉了 vi 编辑命令之后,就可以继续进行下一步了。

劫持硬件

首先,你需要通过欺骗 IDS/IPS 软件,让它认为你的 QEMU 虚拟机是一个真实的 Cisco IDS-4215 Appliance Sensor。为了欺骗软件,你需要修改两个文件:ids_functionsinterface.conf。修改这些文件相当繁琐,最小的错误都会导致你无法创建一个正常工作的 IDS/IPS 设备。

从 shell 提示符开始,输入以下命令:

-sh-2.05b# /loadrc
-sh-2.05b# cd /etc/init.d
-sh-2.05b# ./rc.init

这将挂载 IDS/IPS 使用的 Linux 文件系统并初始化系统。接下来,使用 vi 打开 ids_functions 文件。

-sh-2.05b# vi ids_functions

打开文件后,输入命令 /845 让 vi 定位到以下条目:

elif [[ `isCPU 845` -eq $TRUE && $NUM_OF_PROCS -eq 1 ]]; then
        MODEL=$IDS4215
        HTLBLOW=8
        MEM_PAGES=${HTLBLOW}
        DEFAULT_MGT_OS="fe0_0"
        DEFAULT_MGT_CIDS="FastEthernet0/0"

接下来,编辑 elif 语句和 DEFAULT_MGT 语句,使其如下所示:

elif [[ **1 -eq 1** ]]; then
        MODEL=$IDS4215
        HTLBLOW=8
        MEM_PAGES=${HTLBLOW}
        DEFAULT_MGT_OS=**"ma0_0"**
        DEFAULT_MGTCIDS=**"Management0/0"**

当你完成编辑并确定已经做出正确修改时,保存文件并退出 vi 编辑器。

接下来,你需要编辑 interface.conf 文件。

-sh-2.05b# cd /usr/cids/idsRoot/etc
-sh-2.05b# vi interface.conf

使用箭头键向下移动到以 ####### IDS-4215 ######## 开头的部分,修改每个接口条目,从 [models/IDS-4215/interfaces/1] 开始,到 [models/IDS-4215/interfaces/6] 结束。每个条目必须完全与以下六个条目一致:

[models/IDS-4215/interfaces/1]
**name-template=Management0/0**
**port-number=0**
**pci-path=3.0**
vendor-id=0x8086
**device-id=0x100e**
type=fe
mgmt-capable=yes
net-dev-only=yes
**tcp-reset-capable=yes**

[models/IDS-4215/interfaces/2]
**name-template=FastEthernet0/0**
**port-number=1**
**pci-path=4.0**
vendor-id=0x8086
**device-id=0x100e**
type=fe
sensing-capable=yes
tcp-reset-capable=yes

[models/IDS-4215/interfaces/3]
**name-template=FastEthernet0/1**
**port-number=2**
**pci-path=5.0**
vendor-id=0x8086
**device-id=0x100e**
type=fe
sensing-capable=yes
tcp-reset-capable=yes

[models/IDS-4215/interfaces/4]
 **name-template=FastEthernet0/2**
 **port-number=3**
 **pci-path=6.0**
 vendor-id=0x8086
 **device-id=0x100e**
 type=fe
 sensing-capable=yes
 tcp-reset-capable=yes

[models/IDS-4215/interfaces/5]
 **name-template=FastEthernet0/3**
 **port-number=4**
 **pci-path=7.0**
 vendor-id=0x8086
 **device-id=0x100e**
 type=fe
 sensing-capable=yes
 tcp-reset-capable=yes

[models/IDS-4215/interfaces/6]
 **name-template=FastEthernet0/4**
 **port-number=5**
 **pci-path=8.0**
 vendor-id=0x8086
 **device-id=0x100e**
 type=fe
 sensing-capable=yes
 tcp-reset-capable=yes

在你编辑完接口之后,滚动浏览条目并确认每个接口是否配置正确。如果你确定一切正确,保存文件并退出 vi。使用reboot命令重启 IDS/IPS 虚拟机。

-sh-2.05b# reboot

系统应该会启动,配置一些内容,并自动重启。在自动重启后,当你看到 GRUB 引导管理器时,立即退出 QEMU,参见图 8-15。如果你未能退出并且在没有使用正确选项的情况下重新启动 QEMU,安装将失败,你将不得不从头开始。

退出 QEMU 后,使用以下命令选项重新启动你的 IDS/IPS 虚拟机:

$ **qemu-system-i386 -name IPS4215 -hda ipsdisk1.img -hdb ipsdisk2.img -m**
**1024 -smbios type=1,product=IDS-4215 -net nic,vlan=1,model=e1000 -net**
**nic,vlan=2,model=e1000**

GRUB 引导管理器屏幕

图 8-15. GRUB 引导管理器屏幕

你的 IDS/IPS 现在应该已经启动,进入登录提示界面,如图 8-16 所示。

IDS/IPS 登录提示

图 8-16. IDS/IPS 登录提示

你快完成了!通过输入默认用户名cisco和密码cisco登录系统,你应该会被引导重置密码。如果 IDS/IPS 设置中的任何部分出现问题,你可能会看到“检测到不受支持的硬件”的消息,如图 8-17 所示。

此时,你可以继续使用 IDS/IPS 虚拟机,或者从头开始。我建议你重新开始并创建一个新的 IDS/IPS,直到你能够无错误地登录。如果继续操作,IDS/IPS 系统可能会产生进一步的错误并无法正常工作。

“检测到不受支持的硬件”错误

图 8-17. “检测到不受支持的硬件”错误

当你能够无错误地登录时,你就可以继续了。

测试 IDS/IPS(或耐心是一种美德)

第一次登录到 IDS/IPS 虚拟机时,你需要等待大约 20 分钟左右,系统将重建其正则表达式缓存表。这是正常现象,即使是实际的 IDS/IPS 设备也是如此,你不应打断它。你可以使用iplog-status命令定期检查进度。

sensor# iplog-status

如果状态消息显示“错误:getIpLogList:分析引擎正在忙于重建正则表达式表。这可能需要一些时间。”,那么系统仍在工作中,切勿中断它。重建完成后,你应该看到“No IP logs available”。

当重建完成后,输入reset命令关闭并重启虚拟机。不幸的是,目前没有优雅的方式来关闭系统。为了避免文件损坏,当重启进入 GRUB 启动菜单时,应该退出 QEMU。

配置 GNS3 用于 IDS/IPS

将 IDS/IPS 添加到 GNS3 的方式类似于添加 ASA。要添加 IDS/IPS 设备,启动 GNS3,在 Linux 和 Windows 中选择编辑首选项,或在 OS X 中选择GNS3首选项,然后从侧边栏选择QEMU 虚拟机,如图 8-18 所示。

IDS 首选项

图 8-18. IDS 首选项

要在 GNS3 中创建一个新的 IDS/IPS,点击新建启动新 QEMU 虚拟机向导。从类型下拉菜单中选择IDS,如图 8-19 所示。

在新 QEMU 虚拟机向导中选择 IDS

图 8-19. 在新 QEMU 虚拟机向导中选择 IDS

默认情况下,设备会自动命名为IDS。点击下一步继续。GNS3 应该会自动定位并选择适合你电脑的 QEMU 二进制文件,如图 8-20 所示。

QEMU 二进制文件和内存界面

图 8-20. QEMU 二进制文件和内存界面

将内存设置为1024 MB或更大,然后点击下一步进入磁盘映像(hda)选择界面,如图 8-21 所示。

选择磁盘映像

图 8-21. 选择磁盘映像

浏览并选择在构建 QEMU 就绪 IDS 系统时创建的名为ipsdisk1.img的文件。点击下一步进入磁盘映像(hdb)选择界面,并选择ipsdisk2.img。点击完成以完成安装。现在你可以开始测试你的 IDS。

验证 GNS3 中的 IDS/IPS

要验证你的 IDS/IPS 是否正常工作,将一个 IDS/IPS 节点拖入工作区并启动设备。GNS3 在设备完全启动之前无法打开 IDS/IPS 设备的控制台连接。这意味着在登录提示出现之前,你将看不到任何 IDS/IPS 消息。登录提示出现后,你应该能够登录并配置 IDS/IPS。为了防止文件损坏,在关闭设备时使用reset命令。

在确认你的 IDS/IPS 正常工作后,你应该备份 QEMU 磁盘映像文件。如果你的 IDS/IPS 设备出现问题,备份文件可以节省你大量的工作时间。

Cisco IOS-XRv

Cisco 提供了一种名为 IOS-XRv 的 32 位虚拟机版本。IOS-XRv 的特点是,它不是像 IOU 或 NX-OSv 那样的模拟器,而是一个“受限版”的 IOS-XR,只包含一个路由处理器(RP)。网络吞吐量限制为 2Mbps,并且有一个硬编码的 AAA 用户,用户名为cisco,密码为cisco,这使得它无法在生产环境中使用,除非你想要一个缓慢且不安全的网络。尽管有这些限制,操作系统仍包含管理功能、路由和转发能力。

该软件设计为使用 VMware ESXi 或 QEMU 运行,因此在 GNS3 中使用非常方便。如果你有一个 Cisco CCO 帐户,你应该能够从 Cisco 文件交换下载该软件。

配置 GNS3 以支持 IOS-XRv

Cisco IOS-XRv 文件有两种镜像格式;第一种是 OVA 文件,第二种是虚拟机磁盘(VMDK)文件。OVA 镜像(以.ova结尾)适用于 VMware ESXi;VMDK 文件(以.vmdk结尾)已经准备好用于 QEMU,并且是你将在 GNS3 中使用的文件。在这个例子中,我将使用一个名为iosxrv-k9-demo-5.2.2.vmdk的镜像文件。

将 IOS-XRv 设备添加到 GNS3 非常简单。你只需启动新的 QEMU 虚拟机向导并按照提示操作;然后编辑设备,做一个小修改以增加适配器数量。要添加 IOS-XRv 设备,在 Linux 和 Windows 上选择编辑首选项,在 OS X 上选择GNS3首选项,然后从左侧面板选择QEMU 虚拟机。点击新建开始配置,并打开图 8-22 中的对话框。

新的 QEMU 虚拟机向导

图 8-22. 新的 QEMU 虚拟机向导

将类型设置为默认并为您的设备输入名称;我输入的是IOS-XRv。完成后,点击下一步以继续进行 QEMU 二进制文件和内存设置,如图 8-23 所示。

配置 64 位系统上的 IOS-XRv

图 8-23. 配置 64 位系统上的 IOS-XRv

IOS-XRv 可以使用 32 位或 64 位 QEMU 硬件仿真运行。由于我在 PC 上运行的是 64 位操作系统,所以我选择使用 64 位 QEMU 二进制文件,名为qemu-system-x86_64(如图 8-23 所示),并将 RAM 设置为2048 MB,这是推荐的内存大小。然而,如果你运行的是 32 位操作系统,例如 Windows,你需要将 RAM 设置为小于 2048MB。这是因为 32 位 QEMU 程序无法为 IOS-XRv 虚拟机分配这么多内存。在这种情况下,你应该输入1920 MB并使用下拉菜单选择名为qemu-system-i386w.exe的 QEMU 二进制文件,如图 8-24 所示。

配置 IOS-XRv 以支持 32 位 Windows 系统

图 8-24. 配置 IOS-XRv 以支持 32 位 Windows 系统

配置完 QEMU 二进制文件和 RAM 后,点击下一步进入图 8-25 所示的磁盘镜像选择界面。

选择磁盘镜像

图 8-25. 选择磁盘镜像

点击浏览按钮以定位并选择你的 IOS-XRv .vmdk镜像文件。我选择了一个名为iosxrv-k9-demo-5.2.2.vmdk的磁盘镜像文件。

选择完镜像后,点击完成以关闭向导。接下来,选择你刚创建的 IOS-XRv 设备并点击编辑。选择网络标签,增加适配器数量至4。点击确定关闭窗口,然后点击应用确定以提交更改。你可以根据需要设置适配器数量,但四个适配器对于大多数 GNS3 项目来说应该是足够的。

创建一个简单的 IOS-XR 项目

Cisco IOS-XR 非常像 IOS,但它并不是 IOS。在本节中,你将使用一个 Dynamips 路由器和一个 IOS-XRv 设备配置一个简单的项目,如图 8-26 所示。

一个简单的 IOS-XRv 项目

图 8-26. 一个简单的 IOS-XRv 项目

你将使用 EIGRP 从路由器 R1 广告三个网络到 IOS-XRv1 设备。最后,你将使用一些 IOS-XR 命令验证路由。这只是对 IOS-XR 的一个基础介绍。如果你想真正学习 IOS-XR,你需要深入研究 Cisco 的文档。

配置路由器

首先配置路由器 R1。为与 IOS-XRv1 相连的以太网接口配置一个 IP 地址。

R1# configure terminal
R1(config)# interface f0/0
R1(config-if)# ip address 10.1.1.1 255.255.255.0
R1(config-if)# no shutdown

接下来,配置路由器 R1 环回接口上的三个 IP 地址。

R1(config-if)# interface loopback1
R1(config-if)# ip address 172.16.1.1 255.255.255.0
R1(config-if)# interface loopback2
R1(config-if)# ip address 172.16.2.1 255.255.255.0
R1(config-if)# interface loopback3
R1(config-if)# ip address 172.16.3.1 255.255.255.0
R1(config-if)# exit

这些地址将通过 EIGRP 广告到你的 IOS-XRv1 设备。最后,配置 EIGRP 并广告所有网络。

R1(config)# router eigrp 10
R1(config-router)# no auto-summary
R1(config-router)# network 10.0.0.0
R1(config-router)# network 172.16.0.0

配置完路由器 R1 后,配置 IOS-XR 设备。

配置 IOS-XR 设备

登录到 IOS-XRv1,并创建一个与在路由器 R1 上创建的配置类似的配置。你将配置一个 IP 地址,并启用 EIGRP,以便 IOS-XRv1 和路由器 R1 可以交换路由信息。

➊ RP/0/0/CPU0:ios#
  RP/0/0/CPU0:ios# configure terminal
  RP/0/0/CPU0:ios(config)# interface GigabitEthernet 0/0/0/0
➋ RP/0/0/CPU0:ios(config-if)# ipv4 address 10.1.1.2/24
  RP/0/0/CPU0:ios(config-if)# no shutdown
  RP/0/0/CPU0:ios(config)# router eigrp 10
➌ RP/0/0/CPU0:ios(config-eigrp)# address-family ipv4
➍ RP/0/0/CPU0:ios(config-eigrp-af)# interface GigabitEthernet 0/0/0/0
➎ RP/0/0/CPU0:ios(config-eigrp-af)# commit

IOS 与 IOS-XR 之间的第一个显著区别是命令提示符。IOS-XRv1 的命令提示符 ➊ 表示你的上下文是第一个路由处理器(RP/0/0/CPU0)。由于这是 IOS-XRv 的演示版本,因此它仅限于这个单一的路由处理器。

接下来,当在以太网接口上配置 IP 地址时,必须指定你使用的 IP 地址的类型(IPv4 或 IPv6),并且子网掩码以 CIDR 表示法(/24)表示 ➋。类似地,在配置 EIGRP 路由进程时,也需要指定 IPv4 或 IPv6 ➌。最后,通过将已配置 IP 的接口放入 EIGRP 路由进程中来广播网络 ➍。完成后,确保提交你的更改 ➎。

一旦你配置完所有内容,输入show eigrp neighbors命令,你应该会看到以下输出:

RP/0/0/CPU0:ios# show eigrp neighbors
IPv4-EIGRP Neighbors for AS(10) VRF default

H   Address                 Interface      Hold Uptime   SRTT   RTO  Q   Seq
                                           (sec)         (ms)        Cnt Num
0   ➊10.1.1.1            ➋Gi0/0/0/0      13 00:28:09   19    200   0   3

在正确的配置下,EIGRP 邻居关系将与 IP 地址为 10.1.1.1 的路由器 R1 建立邻接 ➊,并来自接口 Gi0/0/0/0 ➋。

现在,使用show route命令验证所有 172.16.0.0 网络是否已经从路由器 R1 广播到 IOS-XRv1。

RP/0/0/CPU0:ios# show route
--*snip*--

C    10.1.1.0/24 is directly connected, 02:58:51, GigabitEthernet0/0/0/0
L    10.1.1.2/32 is directly connected, 02:58:51, GigabitEthernet0/0/0/0
D   ➊172.16.1.0/24 [90/2570240] via 10.1.1.1, 00:43:21, GigabitEthernet0/0/0/0
D   ➊172.16.2.0/24 [90/2570240] via 10.1.1.1, 00:43:21, GigabitEthernet0/0/0/0
D   ➊172.16.3.0/24 [90/2570240] via 10.1.1.1, 00:43:21, GigabitEthernet0/0/0/0

所有的 172.16.0.0 网络已经成功添加到 IOS-XR 路由表中 ➊。你可以通过 ping 其中一个地址来测试连接性。

  RP/0/0/CPU0:ios# ping 172.16.1.1
  Thu Oct 16 03:20:27.508 UTC
  Type escape sequence to abort.
  Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
  !!!!!
➊ Success rate is 100 percent (5/5), round-trip min/avg/max = 9/19/49 ms

在这里,ping 测试是 100%成功的 ➊。现在,保存配置。

RP/0/0/CPU0:ios# copy running-config nvram:
Thu Oct 16 03:22:39.679 UTC
Destination file name (control-c to abort): [/running-config]? <enter>
Building configuration.
24 lines built in 1 second
[OK]

到目前为止,应该很明显,IOS-XR 与传统的 IOS 有些不同,但也有相似之处。IOS-XRv 是一个可靠的平台,并且在 GNS3 中玩起来非常有趣。或许有一天,思科会将 IOS-XR 的一个版本从它们的运营商级路由器移植到更小型的商业路由器上。如果那样的话,在 GNS3 中练习 IOS-XRv 将有助于为此做准备。

最后的思考

使用 GNS3,你可以迅速掌握配置和安装 ASA 防火墙的技能。我从事思科设备工作已有十多年,我了解到 ASAs 非常稳定,并且非常适合小型网络安装。对于任何从事小型企业网络工作的人来说,了解如何配置 ASA 是必不可少的。它们是少数几个价格合理、功能丰富且易于安装的非企业级思科产品之一。

使用 ASDM,你可以快速配置 ASA,允许远程用户通过 IPSec VPN 连接到他们的企业网络。许多跨平台的 VPN 客户端都兼容思科的 ASA 和路由器;OS X 内置了思科 VPN 客户端。在 Windows 上,你需要安装思科 VPN 客户端或思科 AnyConnect 软件。在 Linux 上,你可以使用 Virtual Private Network Connection(VPNC),它工作得非常好。我每天在 Linux 上使用 VPNC 访问全国各地的 VPN。

在下一章中,你将学习 Cisco IOU,并了解如何将 IOU 设备集成到 GNS3 项目中。这是一个令人兴奋的新进展,拓宽了 GNS3 的未来。

第九章。Cisco IOS 在 UNIX 和 NX-OSv 上

在这一章中,我将讨论将 Cisco IOU 设备与 GNS3 安装和集成的策略。你还将学习如何使用 VirtualBox 和 NX-OSv 安装和运行 Cisco 的下一代交换操作系统(NX-OS)。

Cisco IOU

Cisco IOU 是近年来在 Cisco 教育社区中发生的最酷的事情之一。IOU 的功能类似于 Dynamips,但使用的资源要少得多。像 Dynamips 一样,IOU 允许你在 GNS3 项目中添加路由器和交换机。不同于 Dynamips,IOU 镜像模拟的是 IOS 技术系列的特性,而不是特定 Cisco 模型的硬件组件。每个 IOU 镜像文件都是一个独立的二进制应用程序,运行着一个设备实例。现在有为路由、交换、IP 语音(VoIP)和 Pagent(用于生成 IP 流量)设计的镜像。IOU 不需要一个虚拟化管理程序来模拟 Cisco 硬件,这使得 IOU 设备比 Dynamips 设备更少占用内存和 CPU。显而易见的优势是,你可以在配置较为普通的 PC 上创建更大的拓扑结构。

2010 年,Cisco 将 IOU 集成到 Cisco Learning Network 中,为 CCNA 和 CCNP 学生提供在线虚拟实验室。这些实验室价格低廉且设计精良。如果你对 Cisco 学习实验室感兴趣,应该去看看 Cisco Learning Center (learningnetwork.cisco.com/).

正如名字所示,IOS on Unix 仅在基于 Unix 的系统上运行。有时被称为 IOS on Linux (IOL),它是在 Solaris Unix 和 Linux 上开发的。

IOU 对 GNS3 的意义

在 Cisco 宣布其将不再使用行业标准硬件,转而采用专有的集成服务路由器(ISR)硬件后,GNS3 社区开始担心 Dynamips 和 GNS3 是否迎来了终结。由于无法获得新专有硬件的技术规格,因此无法创建一个新虚拟化管理程序来运行最新的 IOS 软件。最终,旧的 Dynamips 设备将停止接收 IOS 更新并变得过时。

Cisco 实际上为 GNS3 使用的 7200 系列路由器保持着最新的 IOS,但所有其他 GNS3 路由器的 IOS 版本都停留在 12.4(15)T,这限制了学习现代技术(如 VoIP)。这就是为什么 IOU 如此令人兴奋的原因。它通过让你将更新的 IOS 技术集成到 GNS3 项目中,为 GNS3 注入了新的活力——这真是太酷了!

交换、交换、更多交换!

将 IOU 集成到 GNS3 中的最佳原因之一是,你可以使用 Cisco 的许多高级交换功能,这些功能在 Dynamips 中的 NM-16ESW 模块中是没有的(请参见附录 C)。这些功能使得 GNS3 能够提升其性能,成为一个适用于更高级认证(如 CCIE)的全方位培训工具。

使用 IOU 后,你不再需要购买物理交换机并创建分割交换机,或者使用像 ISL 桥接这种奇怪的小技巧来访问真实的交换机。通过使用 GNS3 的 EtherSwitch 路由器,现在你可以从 Dynamips 交换机创建一个常规的 802.1Q 干道链路到运行在 PC 上的 IOU 交换机块。IOU 交换机稳定、运行迅速,并且与物理交换机不同,IOU 交换机是完全便携的,这意味着它们可以作为你的 GNS3 项目的一部分随你携带在笔记本电脑上。

IOU 镜像

IOU 镜像是围绕 IOS 特性设计的,它们的文件名通常能揭示它们包含哪些特性,就像 IOS 镜像的文件名一样。例如,我们来拆解一个名为I86BI_LINUXL2-UPK9-M-15.0的 IOU 交换机文件名。

  • I86BI. 表示这是一个 Intel 32 位二进制镜像。

  • LINUX. 表示它运行在 Linux 上。

  • L2. 表示这是一个 L2/L3 交换机。

  • UPK9. 表示镜像包含高级加密特性,如 3DES/AES。

  • M. 表示这是一个主干 IOS。

  • 15.0. 指定该镜像基于的 IOS 版本。

使用这些信息,你应该能够查看几乎任何 IOU 文件名,快速判断它包含哪些特性。

安装 IOU 前需要了解的事项

默认情况下,标准的 GNS3 安装不允许你运行 IOU 设备。IOU 设备是 Linux 二进制文件,因此只能在 Linux 操作系统上运行。通常,这些镜像是 32 位二进制文件,但在适当的库文件支持下,你可以轻松地在 64 位 Linux 系统上运行它们。如果你在 Windows 或 OS X 上运行 GNS3,你需要安装像 VirtualBox 这样的虚拟化程序,并通过 Linux 虚拟机运行 IOU 设备。幸运的是,GNS3 提供了一个 IOU 虚拟机,你可以从 GNS3 网站下载。这个 GNS3 IOU 虚拟机已经准备好运行 IOU 镜像,提供了一个简单的方式让你上传镜像,并且不需要你了解如何使用 Linux 命令。

在 Linux 上运行 GNS3 的好处是,安装和配置 IOU 更加直接,所有的配置应该能顺利运行,无需额外设置。缺点是,你需要了解一些 Linux 知识,但在我看来,这是一个小代价。当你在 Windows 或 OS X 上运行 GNS3 时,必须配置它与 Linux 虚拟机通过 TCP/IP 通信,这可能很麻烦。如果你的工作站或 IOU 虚拟机的 IP 地址发生变化(这种情况经常发生),你需要重新配置 GNS3 以使用新的 IP 地址。而且,每次升级 GNS3 时,你还必须升级运行在 IOU 虚拟机上的 GNS3 服务器软件。版本号必须一致,否则 IOU 将无法运行。当你在 Linux 上同时运行 GNS3 和 IOU 时,这些步骤是多余的。

在 Linux PC 上设置 IOU

在 Linux PC 上运行 GNS3 和 IOU 有一些明显的优势。最大的优势是你不需要使用 IOU 虚拟机,因为在 Linux 上 IOU 镜像文件可以原生运行。这意味着你不必浪费宝贵的资源,如 CPU 周期和内存,这些资源通常会被 IOU 虚拟机占用。另一个优势是你可以使用 Wireshark 来捕获和监控两个 IOU 设备之间的数据包,而在使用 IOU 虚拟机时无法做到这一点。这是因为在启动 Wireshark 捕获时生成的 .pcap 捕获文件保存在 IOU 虚拟机中,而不是本地保存,因此 Wireshark 无法访问该文件。

如果你在 Linux 上运行 GNS3,请按照本节中的说明进行操作,启动 IOU。如果你使用的是其他操作系统,请跳至 在 Windows 和 OS X 上使用 GNS3 IOU 虚拟机。

安装 IOU

当你运行 IOU 镜像时,镜像会查找文件 libcrypto.so.4,没有它无法运行。虽然系统中可能已经安装了 libcrypto 库文件,但你应该安装 libssl1.0.0,因为此版本已被证明与 IOU 镜像兼容且稳定。接下来,从 libcrypto.so.1.0.0 创建一个符号链接(sym-link)到 libcrypto.so.4;符号链接是 Linux 系统中与 Windows 快捷方式相当的概念。如果你使用的是 32 位版本的 Ubuntu,可以使用以下命令安装 libcrypto:

$ **sudo apt-get install libssl1.0.0**
$ **sudo ln -s /lib/i386-linux-gnu/libcrypto.so.1.0.0 /lib/libcrypto.so.4**

在运行 64 位 Ubuntu 系统时,你需要先安装 32 位 libssl 包,才能配置 libcrypto 并运行 32 位 IOU 镜像。如果你使用的是 32 位 Ubuntu 系统,可以跳过以下命令。

$ **sudo apt-get install libssl1.0.0:i386**
$ **sudo ln -s /lib/i386-linux-gnu/libcrypto.so.1.0.0 /lib/i386-linux-gnu/**
**libcrypto.so.4**

如果你不是在运行 Ubuntu,那么你可能需要做一些研究来配置系统中的 libcrypto,因为并非所有的 Linux 系统使用相同的库文件和版本,甚至可能将文件存储在与 Ubuntu 不同的目录中。关键是 libcrypto 文件必须链接到 libcrypto.so.4

配置完 libcrypto.so.4 后,将一个或多个 IOU 镜像文件复制到你的 Ubuntu 系统。你必须先将 IOU 文件设置为可执行文件,才能运行;方法如下:

$ **sudo chmod 555 I86BI_LINUXL2-UPK9-M-15.0.bin**

接下来,安装 GNS3 iouyap 应用程序所需的依赖项。此程序负责在 IOU 和其他 GNS3 设备(如 Dynamips 路由器)之间建立通信。首先安装 bison 和 flex,这两个软件包是 iouyap 编译之前所必需的。

$ **sudo apt-get install bison**
$ **sudo apt-get install flex**

现在,使用以下命令安装并编译 iniparser 程序:

$ **sudo apt-get install git**
$ **git clone http://github.com/ndevilla/iniparser.git**
$ **cd iniparser**
$ **make**
$ **sudo cp libiniparser.* /usr/lib/**
$ **sudo cp src/iniparser.h /usr/local/include**
$ **sudo cp src/dictionary.h /usr/local/include**

一个包含 iouyap 的 ZIP 文件应该已经包含在你的 GNS3 for Linux 下载中。解压 iouyap-.zip,将 替换为你拥有的版本,并使用以下命令编译该程序:

$ **cd iouyap-x**
$ **sudo make**
$ **sudo make install**

如有必要,将编译后的应用程序复制到 /usr/local/bin 目录。

$ **sudo copy iouyap /usr/local/bin**

现在所有应用程序都已安装完毕,你需要进行一些配置。

创建许可证文件

在运行 IOU 之前,你必须创建一个包含你 PC 主机名和有效许可证密钥的许可证文件。许可证密钥是从你的 Linux 主机名生成的,因此请确保你对 PC 的主机名感到满意。如果你更改了主机名,则需要输入新的许可证密钥。

一旦你获得了许可证密钥,使用文本编辑器创建许可证文件。我通常将文件命名为.iourc,但任何名称都可以。以下是一个例子,展示了使用许可证密钥 1234567812345678 的名为 Ubuntu 的 PC 的许可证文件。主机名是区分大小写的,所以在许可证文件中输入时要小心。

[license]
Ubuntu = 1234567812345678

如果你不确定你的 Linux 主机名是什么,可以从终端使用hostname命令显示主机名。

配置 GNS3

接下来,在“IOS on UNIX 偏好设置”中设置 iouyap 应用程序和 IOU 许可证文件的路径。iouyap 应用程序用于将 Dynamips 和其他 GNS3 设备与 IOU 设备连接起来,这样你所有的设备就可以无缝地联网。选择编辑偏好设置,然后从左侧菜单中选择IOS on UNIX,如图 9-1 所示。

IOS on UNIX 偏好设置,常规设置选项卡

图 9-1. IOS on UNIX 偏好设置,常规设置选项卡

在“常规设置”选项卡中,在“IOURC 路径”中设置你的许可证文件的路径和名称。这指的是你之前创建的 IOU 许可证文件。另外,在“iouyap 路径”中设置你的iouyap文件的文件路径,通常为/usr/local/bin/iouyap。接下来,转到“服务器设置”选项卡,如图 9-2 所示。

选择始终使用本地服务器(仅限 Linux)复选框,以便 IOU 使用本地 PC 进行 GNS3 和 IOU 集成。然后,转到“高级设置”选项卡,如图 9-3 所示。

每个 IOU 设备都会在定义的范围内分配一个唯一的控制台端口号。除非这些值与 PC 上运行的其他基于 IP 的应用程序发生冲突,否则不要更改这些值;UDP 隧道端口范围也是如此。UDP 端口用于设置 IOU 与其他 GNS3 设备之间的网络通信。

IOS on UNIX 偏好设置,服务器设置选项卡

图 9-2. IOS on UNIX 偏好设置,服务器设置选项卡

IOS on UNIX 偏好设置,高级设置选项卡

图 9-3. IOS on UNIX 偏好设置,高级设置选项卡

最后,在“偏好设置”窗口的左侧菜单中展开IOS on UNIX,以显示 IOU 设备部分,如图 9-4 所示。在这里,您可以将一个或多个 IOU 镜像文件添加到 GNS3 中。

将 IOU 镜像添加到 GNS3

图 9-4. 将 IOU 镜像添加到 GNS3

要将 IOU 镜像文件添加到 GNS3,请点击新建按钮以启动新建 IOU 设备向导,如图 9-5 所示。

新建 IOU 设备向导

图 9-5. 新建 IOU 设备向导

为您的新设备输入名称(例如本示例中的IOU_L2);然后点击浏览按钮定位并选择您的 IOU 镜像文件。完成后,点击完成以结束向导。添加后,您的 IOU 镜像文件应复制到 GNS3 用户目录下的GNS3/images/IOU文件夹中。

要配置 IOU 设备,请从设备工具栏将 IOU 设备图标拖到工作区中。右键单击设备并选择配置,打开节点配置器(如图 9-6 所示)。

IOU 节点配置器

图 9-6. IOU 节点配置器

“常规设置”选项卡上的选项允许您重命名设备并更改 IOU 镜像文件、控制台端口号、默认 RAM 和 NVRAM 值。

您可以通过调整“网络”选项卡上的值来更改安装的以太网和串行适配器数量。默认情况下,每个适配器有两个,但它们提供四个接口,每个 IOU 设备总共提供八个以太网接口和八个串行接口,这对于大多数项目来说已经足够了。不过,您可以根据需要轻松调整数量。以太网和串行适配器的总数不能超过 16 个,每个 IOU 设备的接口总数为 64 个。

一个 IOU 设备可以与任何其他 GNS3 设备连接,就像您连接标准的 Dynamips 路由器或交换机一样。您甚至可以热连接它们到设备上,这意味着设备启动后,连接可以在设备之间形成。

要导出 IOU 配置,请从 IOU 控制台输入copy running-config unix:initial -config.cfg,然后右键单击工作区中的 IOU 设备并选择导出配置。接下来,系统会提示您输入文件名和保存位置,文件将保存到该位置。您也可以选择导入配置来导入配置。

如果您希望在 Windows 或 OS X 中运行 IOU,请阅读下一节。如果不是,您可以跳过并查看 NX-OSv。

在 Windows 和 OS X 上使用 GNS3 IOU 虚拟机

正如我在安装 IOU 前需要了解的事项中提到的,Windows 和 OS X 系统只能通过使用 Linux 虚拟机来运行 IOU。如果你还没有这样做,下载并安装 VirtualBox(www.virtualbox.org/)。接受默认安装设置应该能提供运行 IOU 虚拟机所需的一切。

安装 VirtualBox 后,访问 GNS3 网站(www.gns3.com/),下载名为 GNS3 IOU VM.ova 的 OVA 文件。这是一个已预配置好所有运行 IOU 所需工具的 Linux 虚拟机,但它不包含任何 IOU 镜像文件。相反,它提供了一个基于网页的工具,允许你轻松地将镜像文件上传到设备中,但在使用之前,你需要将该设备导入到 VirtualBox 中。

将 GNS3 IOU 虚拟机导入到 VirtualBox

首先启动 VirtualBox 应用程序。应用程序加载后,选择 文件导入设备。你应该会看到导入虚拟设备的对话框,如图 9-7 所示。

选择虚拟设备

图 9-7. 选择虚拟设备

使用浏览图标找到并选择 GNS3 IOU VM.ova 文件。在图 9-7 中,我的虚拟机位于我的 下载 目录,路径为 C:\Users\jneumann\Downloads。选择文件后,点击 下一步 并验证设备设置。它们应与图 9-8 类似。

虚拟设备设置

图 9-8. 虚拟设备设置

你应该可以接受建议的设备设置。注意,默认的内存设置为 2048MB。如果你只在项目中使用少数几个 IOU 设备,我发现可以将内存减少到 1024MB。这将减少你的 PC 使用的总内存,并且如果你的资源紧张,可能会帮助 GNS3 性能更好。如果不确定的话,就接受默认设置,点击 导入 完成导入。你随时可以稍后修改这些设置。

导入虚拟机后,点击 设置,然后点击 网络 进入网络面板,如图 9-9 所示。

将网络适配器桥接到你的 PC

图 9-9. 将网络适配器桥接到你的 PC

在“Adapter 1”选项卡中,选择启用网络适配器选项。然后,在“附加到”字段旁边选择桥接适配器。完成后,点击确定。这将你的虚拟机以太网适配器桥接到你的 PC,并允许它访问互联网,以便在需要时安装额外的软件包。

上传 IOU 镜像文件

现在你已经导入了 GNS3 IOU 虚拟机,你应该能够启动虚拟机并上传你的 IOU 镜像文件。要启动虚拟机,选择GNS3 IOU VM,如图 9-10 所示,并点击启动

选择并启动你的 GNS3 IOU 虚拟机。

图 9-10. 选择并启动你的 GNS3 IOU 虚拟机。

虚拟机启动时,可能需要一两分钟,因为它正在启动一个完整功能的 Linux 操作系统。虚拟机启动并运行后,屏幕上应显示类似以下的控制台信息:

Welcome to GNS3 IOU appliance
Use 172.16.231.204 to configure a remote server in GNS3 Preferences
Use your browser with http://172.16.231.204:8000/upload to upload IOS images

gns3-iouvm login:

请注意,屏幕会提示你使用 PC 的网页浏览器将 IOU 镜像文件上传到设备。为了让此过程正常工作,你的 PC 和 GNS3 IOU 虚拟机必须分别从本地网络中获得 IP 地址。在此示例中,我的虚拟机的 IP 地址是 172.16.231.204。

注意

有时 IOU 虚拟机可能不会显示 IP 地址。如果出现这种情况,请使用用户名 root 和密码 cisco 登录虚拟机。然后输入 ifconfig eth0 来显示虚拟机以太网接口的 IP 地址。

要上传 IOU 镜像文件,打开网页浏览器并浏览到该 IP 地址,按照指示使用端口 8000。在输入 URL(在本例中是*172.16.231.204:8000/upload)后,您应看到一个类似于图 9-11 的网页。

选择并上传你的 IOU 镜像文件。

图 9-11. 选择并上传你的 IOU 镜像文件。

使用浏览...按钮从 PC 中选择一个 IOU 镜像文件。选择后,点击上传完成过程。对于每个你想与 GNS3 一起使用的镜像和 IOU 许可证文件,重复此步骤。镜像存储在 IOU 虚拟机的/home/gns3/GNS3/images目录下,并且路径会在网页上显示以供参考。在你配置 GNS3 中的 IOU 镜像时,你需要这些信息,因此现在最好复制并保存完整路径和文件名。这样,之后就不需要重新输入了。

配置 GNS3 以使用 IOU

现在 IOU 已经准备好,你只需要准备 GNS3。首先,在你的 PC 上创建一个纯文本许可证文件,使用主机名gns3-iouvm,如下所示的例子。将 1234567812345678 替换为你的许可证号码。

[license]
gns3-iouvm = 1234567812345678

IOU 许可证文件常用的名称是.iourc,但你可以使用任何对你有意义的名称(例如,你可以将其命名为iou-license.txt),并且许可证文件可以存储在系统中的任何位置。

创建好许可证文件后,你就可以配置 GNS3 的 IOU 偏好设置了。启动 GNS3,在 Windows 上选择编辑偏好设置,或在 OS X 上选择GNS3偏好设置,然后选择GNS3 服务器,如图 9-12 所示。

GNS3 服务器偏好设置,远程服务器标签

图 9-12。GNS3 服务器偏好设置,远程服务器标签

选择“远程服务器”标签。在“主机”➊下输入你的 GNS3 IOU 虚拟机的 IP 地址,点击添加,然后点击应用。在这个例子中,我的 GNS3 IOU 虚拟机的 IP 地址是 172.16.231.204。

接下来,告诉 GNS3 在哪里找到 IOU 许可证文件。从左侧窗格中点击IOS 在 UNIX 上,然后选择常规设置标签,如图 9-13 所示。

点击“浏览...”按钮,位于“IOURC 路径”字段的右侧,找到你的许可证文件。选择该文件,然后点击添加应用。在这个例子中,我的许可证文件路径是C:\Users\jneumann\GNS3\iourc_license.txt

IOS 在 UNIX 上的偏好设置,常规设置标签

图 9-13。IOS 在 UNIX 上的偏好设置,常规设置标签

接下来,在左侧窗格中展开IOS 在 UNIX 上,以显示 IOU 设备,如图 9-14 所示。

最后的配置步骤是添加 IOU 镜像文件的路径。选择IOS 设备偏好设置,点击新建以启动向导。在“服务器类型”下,确保选中了远程,然后点击下一步。会弹出选择镜像文件路径的消息,点击确定,你应该会看到新的 IOU 设备窗口,如图 9-15 所示。

为你的 IOU 设备输入一个名称(例如IOU_L2),然后输入 IOU 镜像文件路径。由于 IOU 镜像文件安装在 Linux 虚拟机中,你需要输入镜像文件的“Linux 路径名”。该路径是/home/gns3/GNS3/images/<image_name>。在这个例子中,我输入的是/home/gns3/GNS3/images/i86bi-linux-l2-adventerprisek9-15.1a.bin。你可以在用来上传镜像文件的 IOU 网页上找到此信息(参考图 9-11)。务必正确输入路径和文件名,否则 IOU 将无法正常工作。我建议直接从 IOU 虚拟机网页复制并粘贴信息,以避免混淆。

IOU 设备首选项

图 9-14. IOU 设备首选项

新的 IOU 设备窗口

图 9-15. 新的 IOU 设备窗口

完成后,点击完成以关闭向导,然后点击应用确定完成配置。一旦添加了 IOU 镜像,你就可以在项目中开始使用 IOU 设备了。

如果你将 GNS3 升级到新版本,你还需要将 GNS3 IOU 虚拟机上的服务器升级到相同的版本,否则它将无法正常工作。要升级服务器,请登录到 GNS3 IOU 虚拟机并输入以下命令,将version替换为你所使用的 GNS3 版本:

Login: **root**
Password: **cisco**
# pip3 install gns3-server==*version*

IOU 操作

现在让我们创建一个简单的项目,使 IOU 交换机能够在两个 VLAN 之间路由 TCP/IP 流量。首先创建如图 9-16 所示的项目。

使用 IOU 交换机进行 VLAN 路由

图 9-16. 使用 IOU 交换机进行 VLAN 路由

在这个项目中,你将配置一个具有两个 VLAN(VLAN 10 和 VLAN 20)的 IOU L2 交换机。然后,你将路由器 R1 分配给 VLAN 10,路由器 R2 分配给 VLAN 20。在这个实验中,IOU 交换机将路由数据包在这两个 VLAN 之间,以便 R1 和 R2 能够互相 ping 通。首先按以下步骤配置 IOU1 交换机:

  IOU1# configure terminal
➊ IOU1(config)# ip routing
➋ IOU1(config)# vlan 10
  IOU1(config-vlan)# vlan 20
➌ IOU1(config-vlan)# interface vlan 10
➍ IOU1(config-if)# ip address 192.168.1.1 255.255.255.0
➎ IOU1(config-if)# no shutdown
  IOU1(config-if)# interface vlan 20
  IOU1(config-if)# ip address 192.168.2.1 255.255.255.0
  IOU1(config-if)# no shutdown
➏ IOU1(config)# interface Ethernet 0/0
➐ IOU1(config-if)# switchport mode access
➑ IOU1(config-if)# switchport access vlan 10
  IOU1(config-if)# no shutdown
  IOU1(config-if)# interface Ethernet 0/1
  IOU1(config-if)# switchport mode access
  IOU1(config-if)# switchport access vlan 20
  IOU1(config-if)# no shutdown

启用 IP 路由 ➊,然后使用vlan命令 ➋创建两个 VLAN(10 和 20)。接下来,为每个 VLAN 创建一个交换虚拟接口(SVI) ➌并为每个 SVI 分配一个 IP 地址 ➍。使用no shutdown命令 ➎启用接口。现在,转到与 R1 和 R2 连接的物理接口 ➏,将它们设置为接入端口 ➐,并将它们分配到适当的 VLAN ➑。

接下来,为路由器 R1 配置一个 IP 地址。

R1(config)# interface f0/0
R1(config-if)# ip address 192.168.1.100 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# ip route 0.0.0.0 0.0.0.0 192.168.1.1

在为 R1 的 F0/0 接口分配 IP 地址后,将默认网关地址设置为 192.168.1.1,这样路由器就会使用 IOU1 作为其网关。最后,按照类似的方式配置 R2。

R2(config)# interface f0/0
R2(config-if)# ip address 192.168.2.100 255.255.255.0
R2(config-if)# no shutdown
R2(config-if)# ip route 0.0.0.0 0.0.0.0 192.168.2.1

配置项目后,你可以使用ping命令测试 VLAN 路由。路由器 R1 应该能够通过 IOU1 交换机 ping 通路由器 R2,如下所示:

R1# ping 192.168.2.100

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.100, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/24/32 ms

以上就是让 IOU 设备与 GNS3 一起运行的全部步骤。现在,让我们来看看 Cisco 的最新操作系统,NX-OS。

NX-OSv

Cisco NX-OS 运行在一种称为 Nexus 的数据中心级交换机上。尽管与 IOS 相似,NX-OS 并非 IOS,且使用不同的配置命令集。NX-OSv,有时也称为 Titanium,是一个 Linux 虚拟机,运行 NX-OS 模拟器,使用虚拟化软件,如 VirtualBox。NX-OSv 并不是一个完整的操作系统模拟,它缺少很多功能。它仅提供足够的功能和命令,让你感受 NX-OS 的工作方式,并且可以与 GNS3 设备联网。在获取 NX-OSv 镜像后,建议做一个备份,并保存在安全的地方,以防你的工作副本被损坏。

在你的 GNS3 目录下创建一个 NX-OSv 的目录,并将 NX-OSv 镜像文件复制到该目录中。你应该会有一个名为N7K.vmdk的文件。根据你使用的 NX-OSv 版本,文件名可能会有所不同。将镜像文件放置好后,接下来就可以在 VirtualBox 中配置 NX-OSv 了。

将 NX-OSv 导入 VirtualBox

NX-OSv 通常以一个虚拟机硬盘文件(.vmdk文件)的形式准备好运行,你可以使用 VMware、VirtualBox 或 QEMU 来运行它。VirtualBox 是免费的,并且即使在旧款处理器(如 Core 2 Duo)上也能可靠地运行 NX-OSv,所以我在这里将重点介绍 VirtualBox。配置过程包括将硬盘镜像文件导入到一个自定义的 Linux 虚拟机中,并调整几个设置。如果你的 PC 上还没有安装 VirtualBox,请立即下载并安装。

启动 VirtualBox,点击New创建一个新的虚拟机。你应该会看到创建虚拟机向导,如图 9-17 所示。

创建虚拟机向导,名称和操作系统窗口

图 9-17. 创建虚拟机向导,名称和操作系统窗口

为设备输入名称,将类型设置为Linux,版本设置为Other Linux (64-bit),然后点击Next继续。接下来你应该看到内存大小窗口,如图 9-18 所示。

调整内存大小时,可以使用滑块或在提供的字段中输入数值。NX-OSv 在 2048MB 内存下运行最佳。完成后,点击Next配置硬盘设置,如图 9-19 所示。

创建虚拟机向导,内存大小窗口

图 9-18. 创建虚拟机向导,内存大小窗口

创建虚拟机向导,硬盘窗口

图 9-19. 创建虚拟机向导,硬盘窗口

要将 NX-OS 虚拟硬盘附加到虚拟机,请选择使用现有虚拟硬盘文件,点击浏览图标以定位你的 NX-OSv .vmdk 文件。选择该文件并点击创建以完成虚拟机的创建。

配置 GNS3 以支持 NX-OSv

启动 GNS3 并将 NX-OSv 虚拟机添加到虚拟机库中。选择编辑首选项,展开VirtualBox以显示 VirtualBox 虚拟机,如图 9-20 所示。在这里,你可以将 VirtualBox 虚拟机添加到 GNS3,这是使用 NX-OSv 之前的最后一步。

将 NX-OSv VirtualBox 虚拟机添加到 GNS3

图 9-20. 将 NX-OSv VirtualBox 虚拟机添加到 GNS3

点击新建以启动 VirtualBox 向导,从虚拟机名称下拉菜单中选择你的 NX-OSv 虚拟机,然后点击完成。现在点击编辑并进入常规设置标签页。勾选启用远程控制台在无头模式下启动虚拟机框,并点击应用。在网络标签页下,将接口数量从 1 更改为 6,然后点击应用以关闭窗口。接着点击应用确定以完成安装。要在项目中使用 NX-OSv 虚拟机,将你的 NX-OSv 虚拟机从终端设备工具栏拖到工作区。

NX-OSv 实战

现在你已经将 NX-OSv 设备添加到 GNS3,让我们在一个项目中使用它。创建一个包含一个 NX-OSv 设备和一个 IOS 路由器的拓扑,如图 9-21 所示。该项目将使用 Cisco EIGRP 从 R1 向 NX-OSv 广播所有 172.16.0.0 网络。

使用 NX-OSv 的简单拓扑

图 9-21. 使用 NX-OSv 的简单拓扑

在你创建了项目后,启动所有设备并打开到 NX-OSv 的控制台连接。运行在 PC 上的 NX-OS 启动时间较长,且在显示 SCSI disk detected 消息时,通常会暂停约一分钟,如图 9-22 所示。这是正常现象,因此请耐心等待其启动。

启动 NX-OSv

图 9-22. 启动 NX-OSv

如果你没有看到启动信息,可能是配置有误。请返回并检查 VirtualBox 和 GNS3 中的所有设置。如果问题仍然存在,可能是你的N7K.vmdk镜像文件出了问题。

系统启动后,你应该会看到一个登录提示,像下面这样:

User Access verification
vNX-OS-01 login:

默认的登录名和密码应该是 adminadmin。使用这些凭据登录到 NX-OSv。此时可以输入一些命令。我会从 show runshow versionshow interface brief 开始,但你也可以尝试任何你熟悉的 IOS 命令。某些命令在 NX-OS 上是相同的,其他则不同。你可以使用问号 (?) 来显示完整的命令列表。

现在你已经了解了 NX-OSv 的一些基本内容,你可以开始配置你的项目了。首先,你需要配置路由器 R1。打开路由器 R1 的控制台,输入以下命令以配置项目所需的所有 IP 地址:

R1# configure terminal
R1(config)# interface f0/0
R1(config-if)# no shutdown
R1(config-if)# ip address 10.1.1.1 255.255.255.0
R1(config-if)# interface loopback1
R1(config-if)# ip address 172.16.1.1 255.255.255.0
R1(config-if)# interface loopback2
R1(config-if)# ip address 172.16.2.1 255.255.255.0
R1(config-if)# interface loopback3
R1(config-if)# ip address 172.16.3.1 255.255.255.0

接下来,启用 EIGRP 并广播所有的 IP 网络。

R1(config-if)# router eigrp 10
R1(config-router)# no auto-summary
R1(config-router)# network 10.0.0.0
R1(config-router)# network 172.16.0.0

现在登录到 NX-OSv,并配置一个与 R1 接口 f0/0 在同一子网的 IP 地址。

vNX-OS-01# configure terminal
vNX-OS-01(config)# interface ethernet 2/1
vNX-OS-01(config-if)# ip address 10.1.1.2/24
vNX-OS-01(config-if)# no shutdown

你首先应该注意到的是,NX-OS 只接受使用 CIDR 表示法的 IP 地址,因此在这里,子网掩码输入的是 /24 而不是常见的 255.255.255.0。现在使用 ping 命令测试从 NX-OSv 到路由器 R1 的连通性,并退出到配置模式。

vNX-OS-01(config-if)# do ping 10.1.1.1
PING 192.168.1.1 (110.1.1.1): 56 data bytes
64 bytes from 10.1.1.1: icmp_seq=0 ttl=254 time=19.494 ms
64 bytes from 10.1.1.1: icmp_seq=1 ttl=254 time=7.849 ms
64 bytes from 10.1.1.1: icmp_seq=2 ttl=254 time=7.511 ms
64 bytes from 10.1.1.1: icmp_seq=3 ttl=254 time=20.637 ms
64 bytes from 10.1.1.1: icmp_seq=4 ttl=254 time=8.524 ms

--- 10.1.1.1 ping statistics ---
5 packets transmitted, 5 packets received, 0.00% packet loss
round-trip min/avg/max = 7.511/12.803/20.637 ms
vNX-OS-01(config-if)# exit

现在让我们配置 NX-OSv,使其能够与路由器 R1 交换 EIGRP 广播的路由。请注意,除非你有功能许可证,否则 NX-OS 只允许运行 EIGRP,且仅有 120 天的宽限期。输入 license grace-period 命令以开始宽限期。

vNX-OS-01(config)# license grace-period
vNX-OS-01(config)# feature eigrp
vNX-OS-01(config)# router eigrp 10
vNX-OS-01(config)# network 10.0.0.0/8
vNX-OS-01(config)# exit

你可以使用 show ip route 命令验证 R1 的路由是否被广播到 NX-OSv。

vNX-OS-01# show ip route
IP Route Table for VRF "default"
'*' denotes best ucast next-hop
'**' denotes best mcast next-hop
'[x/y]' denotes [preference/metric]
'%<string>' in via output denotes VRF <string>

10.1.1.0/24, ubest/mbest: 1/0, attached
    *via 10.1.1.2, Eth2/1, [0/0], 00:49:54, direct
10.1.1.2/32, ubest/mbest: 1/0, attached
    *via 10.1.1.2, Eth2/1, [0/0], 00:49:54, local
172.16.1.0/24, ubest/mbest: 1/0
    *via 10.1.1.1, Eth2/1, [90/130816], 00:32:04, eigrp-10, internal
172.16.2.0/24, ubest/mbest: 1/0
    *via 10.1.1.1, Eth2/1, [90/130816], 00:32:04, eigrp-10, internal
172.16.3.0/24, ubest/mbest: 1/0
    *via 10.1.1.1, Eth2/1, [90/130816], 00:32:04, eigrp-10, internal

在前面的行中,注意到此命令的输出与 IOS 不同,但所有相关信息都在。举例来说,所有 172.16.0.0 的路由已经通过 EIGRP 从 R1 广播到 NX-OSv,因此你应该能够 ping 通这些地址。现在试试看。

NX-OSv-01# ping 172.16.2.1
PING 172.16.2.1 (172.16.2.1): 56 data bytes
64 bytes from 172.16.2.1: icmp_seq=0 ttl=254 time=20 ms
64 bytes from 172.16.2.1: icmp_seq=1 ttl=254 time=10 ms
64 bytes from 172.16.2.1: icmp_seq=2 ttl=254 time=20 ms
64 bytes from 172.16.2.1: icmp_seq=3 ttl=254 time=10 ms
64 bytes from 172.16.2.1: icmp_seq=4 ttl=254 time=20 ms

--- 172.16.2.1 ping statistics ---
5 packets transmitted, 5 packets received, 0.00% packet loss
round-trip min/avg/max = 10/16/20 ms

最后,保存你的配置。该命令与 IOS 中的命令相同,但它提供不同的输出。

vNX-OS-01# copy running-config startup-config
[########################################] 100%
Copy complete.
vNX-OS-01#

现在你已经创建了一个简单的项目,可以开始自行实验 NX-OSv。记住,一些功能肯定会缺失。例如,在我的版本中,L2 交换机功能完全不可用,只有 L3 路由功能可用。另一个需要注意的是 Tab 补全功能;它只在某些命令上有效,所以不要因为 NX-OSv 在命令行中没有提供 Tab 补全就认为某个命令不工作。

尽管存在这些限制,我仍然觉得将 NX-OS 设备添加到我的项目中很有趣,我相信你也会。要了解更多关于 Cisco Nexus 和 NX-OS 的信息,请访问 www.cisco.com/en/US/products/ps9402/index.html

最后的思考

在本章中,你探索了 Unix 上的 IOS,并学习了如何利用 IOU 向 GNS3 添加几乎完整的交换功能,而无需使用物理交换机。虽然 CCNA 认证不要求使用 IOU 交换功能,但对于 CCNP 和 CCIE 认证来说,IOU 交换非常有用。

接下来,你安装了 NX-OSv,这是一个模拟运行 NX-OS 的 Cisco Nexus 交换机的虚拟机。NX-OSv 可以通过 OSPF 和 EIGRP 等协议与 GNS3 设备进行联网,虽然玩起来很有趣,但它缺乏你在真实 Nexus 交换机上会发现的许多功能。

在下一章中,我将向你展示一些使用 GNS3 可以做的有趣事情,比如创建一个模拟访问服务器来管理你的路由器。

第十章:雨天可以做的有趣事情

现在你已经了解了 GNS3 最常用的功能,接下来我们将探索一些你可以在 GNS3 项目中进行的有趣操作。首先,你将创建一个模拟的思科接入服务器,它像真实的思科设备一样运行。

接下来,我将向你展示如何将 GNS3 项目从一个操作系统迁移到另一个操作系统,以及如何将你的 GNS3 虚拟路由器配置从 GNS3 复制到真实的思科路由器。最后,你将学习如何利用多台 PC 共享项目的资源负载,创建一些技术性实验室,并模拟一些真实的网络场景。

从接入服务器管理设备

一个接入服务器允许你通过一个中央控制台管理所有网络设备,这样你就可以同时登录到多个设备控制台,并轻松地在它们之间切换。这是管理大型思科网络设备的高效方法,只需稍加努力,你就可以创建一个完全功能的虚拟思科接入服务器(有时称为终端通信服务器)来管理你的 GNS3 设备。我发现使用虚拟接入服务器是管理和配置 GNS3 设备的快速方法,同时你也可以通过它学习真实接入服务器的命令和按键操作。

一个 GNS3 虚拟接入服务器由两个组件组成。第一个是配置了虚拟接口的 Cloud 节点;在 Windows 中,你将使用回环适配器驱动程序,在 Linux 中,你将使用 TAP 适配器。第二个是作为管理控制台的思科 Dynamips 路由器。虚拟接入服务器的配置根据你的操作系统略有不同。我将介绍 Windows 和 Ubuntu Linux,但这些概念同样适用于其他 Linux 操作系统。不幸的是,在撰写时,OS X 尚不支持。

安装虚拟接口

无论你使用 Windows 还是 Linux,你都需要安装一个虚拟网络适配器并为其分配一个 IP 地址。在 Windows 上,你需要安装一个回环适配器驱动程序,而在类似 Linux 的 Unix 系统上,你需要安装一个 TAP 驱动程序。如果你是 Linux 用户,可以跳到在 Linux 中配置 TAP 适配器。

在 Windows 中配置回环适配器

如果你还没有安装,请安装 Microsoft 回环适配器驱动程序。(参见在 Windows 上使用回环适配器。)安装完适配器后,为其分配一个 IP 地址。你选择的 IP 地址和子网掩码必须与 PC 上已配置的任何网络适配器的地址不同,并且与计划在 GNS3 网络拓扑中使用的任何 IP 地址不同。

要配置适配器,打开 Windows 控制面板,然后选择 网络和共享中心。接下来,选择 更改适配器设置,以显示可用适配器列表,如图 10-1 所示。

选择属性以配置 Microsoft 回环适配器驱动程序

图 10-1. 选择属性以配置 Microsoft 回环适配器驱动程序

右键单击 Microsoft 回环适配器驱动程序,选择 属性。在属性窗口中,选择 Internet Protocol Version 4 (TCP/IPv4),然后点击 属性 按钮,显示 IP 地址设置,如图 10-2 所示。

配置带有 IP 地址的回环适配器驱动程序

图 10-2. 配置带有 IP 地址的回环适配器驱动程序

选择 使用以下 IP 地址,并输入一个唯一的 IP 地址和子网掩码。我选择了 9.9.9.9 和 255.255.255.0,但任何地址和掩码都可以,只要它们与电脑中任何以太网适配器分配的地址以及你计划在 GNS3 网络拓扑中使用的任何地址不同。无需包括默认网关地址或提供任何 DNS 服务器,因为访问服务器不会使用它们。完成后,点击 确定 完成配置。现在关闭所有打开的窗口并启动 GNS3。如果你是 Linux 用户,请继续阅读;否则,你可以跳转到 准备 GNS3 服务器。

在 Linux 中配置 TAP 适配器

在 Ubuntu Linux 上,你将使用虚拟 TAP 适配器作为访问服务器。打开终端,输入以下命令安装驱动程序:

$ **sudo apt-get install uml-utilities**

要启用 tap0,请输入以下命令,将 jneumann 替换为你的 Linux 用户名:

$ **sudo tunctl -u *jneumann* -t tap0**

接下来,给 tap0 接口分配一个唯一的 IP 地址。你选择的 IP 地址和子网掩码必须与 PC 上配置的任何网络适配器以及你计划在 GNS3 网络拓扑中使用的任何 IP 地址不同。

$ **sudo ifconfig tap0 9.9.9.9 netmask 255.255.255.0 up**

为确保 tap0 接口在重启后保持其 IP 地址并可用,你需要更改 Linux 网络设置。

在文本编辑器(如 pico 或 vi)中打开 /etc/networks/ 下的 interfaces 文件。你需要管理员权限才能更改该文件,因此请以 root 身份登录,或使用 sudo 命令运行编辑器,如 sudo pico interfaces。然后,将以下内容附加到文件末尾:

**auto tap0**
**iface tap0 inet static**
        **pre-up tunctl -t tap0**
        **up ifconfig tap0 up**
        **down ifconfig tap0 down**
        **address 9.9.9.9**
        **netmask 255.255.255.0**

在这些命令到位后,保存 interfaces 文件,关闭并重启。当 Ubuntu 重启时,TAP 驱动程序应该会自动加载,接口 tap0 应该可以使用。

警告

编辑 /etc/networks/interfaces 文件时请小心。输入错误的内容可能导致 Ubuntu 无法正常启动。

输入 ifconfig 命令以验证 tap0 设置:

  $ ifconfig
  --*snip*--
➊ tap0    Link encap:Ethernet HWaddr 16:81:25:c1:cc:8c
➋         inet addr:9.9.9.9 Bcast:9.9.9.9.255 Mask:255.255.255.0
           UP BROADCAST MULTICAST MTU:1500 Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:500
           RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

ifconfig 的输出应该显示 tap0 适配器已启用 ➊ 并配置了 IP 地址 ➋。安装并配置虚拟适配器后,你需要设置 GNS3 服务器。

准备 GNS3 服务器

在 Windows 上以管理员身份运行 GNS3。首先将 GNS3 服务器绑定到虚拟接口的 IP 地址,否则访问服务器将无法正常工作。点击 编辑首选项,然后从左侧栏目中选择 GNS3 服务器。选择 主机绑定 下拉菜单,然后选择分配给虚拟接口的 IP 地址,如 图 10-3 所示。

在 图 10-3 中,IP 地址为 9.9.9.9 ➊。点击 应用确定,GNS3 服务器应该会以新的主机绑定重新启动。

修改 GNS3 服务器主机绑定

图 10-3. 修改 GNS3 服务器主机绑定

在 GNS3 中创建虚拟访问服务器

在 GNS3 服务器绑定到虚拟适配器的 IP 地址后,你可以创建虚拟访问服务器。访问服务器是通过两个设备创建的:一个 Cloud 节点和一个 Dynamips IOS 路由器。

配置 Cloud 节点

通过向工作区添加 Cloud 节点开始一个项目。右键点击 Cloud 节点并选择 配置。如果你在 Windows 上运行,选择 NIO Ethernet 标签页(如 图 10-4 中所示)。

点击“通用以太网 NIO”下拉菜单,选择你的 Microsoft 环回适配器驱动程序(本示例中为 Loopback1);然后点击 添加,应用确定 完成配置。

如果你在 Ubuntu Linux 上运行 GNS3,请使用 tap0 配置 Cloud 节点。选择 NIO TAP 标签页,而不是 NIO Ethernet,然后在 TAP 接口字段中输入 tap0,如 图 10-5 所示。

在 Windows 中配置带有环回适配器驱动程序的 Cloud 节点

图 10-4. 在 Windows 中配置带有环回适配器驱动程序的 Cloud 节点

在 Ubuntu Linux 上配置 NIO TAP 和 tap0

图 10-5. 在 Ubuntu Linux 上配置 NIO TAP 和 tap0

配置完成后,点击 添加,应用,然后点击 确定 完成云节点的配置。

配置接入服务器路由器

配置云节点后,向工作空间添加一个 Dynamips 路由器,并从该路由器创建一条到云节点的连接。这两台设备共同组成虚拟接入服务器,如图 10-6 所示。它们不会与 GNS3 项目中的其他设备相连接。

虚拟接入服务器

图 10-6. 虚拟接入服务器

在将虚拟接入服务器组件连接在一起后,向工作空间添加更多路由器,以创建一个简单的三路由器网络,如图 10-7 所示。这就是将通过虚拟接入服务器进行管理的网络拓扑。

配置了虚拟 Cisco 接入服务器的网络

图 10-7. 配置了虚拟 Cisco 接入服务器的网络

图 10-7 显示,你已经使用路由器 R1 和云节点(Cloud 1)创建了一个虚拟接入服务器,并且创建了由三个路由器组成的网络拓扑,这些路由器分别命名为 R2、R3 和 R4。

现在,你已经创建了接入服务器和 GNS3 网络拓扑,你可以配置接入服务器路由器。为路由器 R1 分配一个与 PC 虚拟适配器同一网络的 IP 地址,并测试从 R1 到虚拟适配器接口的连通性。例如,如果你为虚拟适配器分配了 IP 地址 9.9.9.9 255.255.255.0,像我一样,你可以为接入服务器路由器 R1 分配该网络范围内的任何 IP 地址。我使用的是 IP 地址 9.9.9.8 和子网掩码 255.255.255.0。

要配置 f0/0 接口的地址,请打开与路由器 R1 的控制台连接,并输入以下命令:

R1>**enable**
R1#**configure terminal**
R1(config)#**interface f0/0**
R1(config-if)#**ip address 9.9.9.8 255.255.255.0**
R1(config-if)#**no shutdown**
R1(config-if)#**exit**
R1(config)#**exit**
R1#**ping 9.9.9.9**
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 9.9.9.9, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms

在此配置中,路由器 R1 的 f0/0 接口与云节点连接,并配置为 IP 地址 9.9.9.8 255.255.255.0。使用 ping 命令测试 R1 与虚拟接口之间的连接。如果 ping 测试成功,则可以继续操作。如果 ping 测试不成功,请验证所有接口是否启用,并且虚拟接口(回环接口或 TAP)是否配置了正确的 IP 地址和子网掩码。

配置 Cisco IP 主机名表

在虚拟接入服务器(R1)上配置 IP 地址后,您就可以开始配置 IP 主机名表格,使用从接入服务器将要管理的设备收集的信息。在本项目中,设备是路由器 R2、R3 和 R4。使用 Cisco IOS 命令,您将使用虚拟接口的 IP 地址(9.9.9.9)和 GNS3 分配给您网络拓扑中路由器的控制台端口号来创建 IP 主机名表格。Cisco 的 IP 主机名表格与 Unix 的 hosts 文件类似,不同的是,您还需要在表格中包含端口号。您将为每个您想要管理的拓扑设备创建一个条目。

首先,找出接入服务器将要管理的路由器的控制台端口号。在本项目中,您只关心路由器 R2、R3 和 R4 的控制台端口号。您可以通过将鼠标悬停在设备上,快速找到任何设备的控制台端口号,如图 10-8 所示。

显示设备信息

图 10-8. 显示设备信息

路由器 R2 的控制台在端口 2002。由于控制台端口号会随着设备的添加按顺序分配,因此路由器 R2、R3 和 R4 应该分别被分配到 2002、2003 和 2004 端口。如果不确定,可以将鼠标悬停在每个设备图标上验证信息。

注意

如果同时添加多个路由器,而不是逐个添加,控制台端口号可能不会按顺序分配。

要创建 IP 主机名表格,请打开路由器 R1(接入服务器)的控制台并输入以下命令:

R1#**configure terminal**
R1(config)#**ip host R2 2002 9.9.9.9**
R1(config)#**ip host R3 2003 9.9.9.9**
R1(config)#**ip host R4 2004 9.9.9.9**
R1(config)#**exit**
R1#

请注意,主机端口号与您想要管理的三台路由器的唯一控制台端口号相对应,但 IP 地址始终是相同的;它是分配给虚拟适配器的 IP 地址(9.9.9.9)。这是因为当虚拟接入服务器打开到其中一台实验室路由器的控制台时,GNS3 使用虚拟适配器的 IP 地址通过 telnet 会话从接入服务器连接到路由器。然后,它连接到您分配的单独控制台端口号。例如,当接入服务器打开到路由器 R2 的控制台连接时,GNS3 通过端口号 2002 使用 IP 地址 9.9.9.9 进行 telnet 连接。这与实际的 Cisco 接入服务器工作原理相似。

现在,使用show hosts命令验证在您的虚拟接入服务器上配置了哪些主机。

R1>**show hosts**
Default domain is not set
Name/address lookup uses static mappings

Codes: UN - unknown, EX - expired, OK - OK, ?? - revalidate
       temp - temporary, perm - permanent
       NA - Not Applicable None - Not defined

Host➊                      Port➋ Flags      Age Type  Address(es)➌
R2                         2002  (perm, OK)  0   IP    9.9.9.9
R3                         2003  (perm, OK)  0   IP    9.9.9.9
R4                         2004  (perm, OK)  1   IP    9.9.9.9

此命令显示接入服务器上为每个主机配置的主机名➊、端口号➋和 IP 地址➌。

虚拟接入服务器的限制

虚拟接入服务器可以管理的设备是有限制的。由于 GNS3 服务器绑定到虚拟适配器,并在您的 PC 上“本地”运行,因此虚拟接入服务器只能管理本地设备。

在 Windows PC 上,你不能管理 VirtualBox 虚拟机,包括 IOU,但可以管理 QEMU 设备,如 Junos。在 Ubuntu Linux 上,你可以管理所有设备,包括 Dynamips、IOU、QEMU 和 VirtualBox,只要它们在你的 Linux PC 上本地运行。

若要了解更多关于配置和使用真实 Cisco 访问服务器的信息,请访问 Cisco 官网(www.cisco.com/)并搜索配置通讯服务器*。目前,你应该已经知道了尝试虚拟访问服务器所需的一切。

看到虚拟访问服务器的实际操作

在你完全配置好访问服务器并启动了项目中的路由器后,你应该能够使用访问服务器管理这些路由器。你可以打开多个路由器的控制台连接,并轻松切换它们。

打开控制台

首先,打开与 R1 的控制台连接。右键点击路由器 R1 并选择控制台。接着,输入你想管理的主机名并按

R1>**R2**
Translating "R2"
Trying R2 (9.9.9.9➊, 2002➋)... Open
Connected to Dynamips VM "R2" (ID 1, type c3600) - Console port
Press ENTER to get the prompt.

R2>➌

在这个示例中,我通过在访问服务器命令行输入R2来打开与路由器 R2 的会话。输出显示,通过 IP 地址 9.9.9.9 ➊和端口号 2002 ➋建立了会话,并且提示符➌已经更改为正在管理的路由器(在这个示例中是 R2)。会话打开后,你可以像从 GNS3 直接打开控制台一样配置路由器。

配置完路由器后,返回访问服务器控制台;只需按 SHIFT-CTRL-6,然后按X键。(Cisco 将这种操作组合称为逃逸序列。)返回到访问服务器控制台后,输入项目中另一个路由器的名称以打开其控制台。现在尝试输入R3,并按照你需要的方式配置路由器。当你完成后,再次使用逃逸序列返回到访问服务器。

即使你当前已登录到访问服务器控制台,另外两个路由器的会话仍然保持打开状态。要显示已打开会话及其对应的连接编号,请输入show sessions命令。

R1>**show sessions**
Conn Host                     Address          Byte  Idle  Conn Name
     1 R2                      9.9.9.9           0     0    R2
 ➊*  2 R3                     9.9.9.9           0     0    R3

你应该能看到两个活动连接(1 和 2)。连接 2 旁边的星号➊表示路由器 R3 是最后一个使用的会话。要返回到上一个会话,按 ENTER 键。要返回到其他会话,输入连接编号并按 ENTER 键;例如,你可以输入1返回到路由器 R2。

关闭控制台

当你准备断开一个开放连接时,输入disconnect命令后跟连接编号;然后按 ENTER 确认关闭会话。

R1>**disconnect 2**
Closing connection to R3 [confirm]
R1>

在这个示例中,我已经断开了与路由器 R3(连接 2)的会话。断开会话后,你需要再次输入主机名才能重新连接到设备。

设置连接超时

您可能希望调整路由器和访问服务器上的超时设置(通过控制台exec-timeout参数),以确保在空闲时(例如您不再配置路由器时)不会自动注销。默认值为十分钟,但可以设置为更高、更低,或设置为无限。

以下命令将控制台超时设置为零分钟零秒(无限):

R1>**enable**
R1#**configure terminal**
R1(config)#**line console 0**
R1(config-line)#**exec-timeout 0 0**

GNS3 的默认startup-config文件应该已经为您完成了这个操作,但需要注意,从安全角度看,在生产环境中,永不让路由器超时是一个不好的做法。然而,在 GNS3 等实验环境中,这样做非常方便。

将配置部署到真实硬件

GNS3 的一个好处是,它允许您创建和测试网络配置,这些配置可以稍后用于真实的设备。您只需在 GNS3 中导出路由器配置并将其加载到真实的 Cisco IOS 路由器上。

将 GNS3 配置导出到 Cisco 路由器

在 GNS3 中彻底测试路由器配置后,您可以准备将其导出并加载到真实的 Cisco 路由器上。您可以导出项目中所有路由器的配置,或者只导出单个设备的配置。在导出 GNS3 IOS 路由器配置之前,请登录到该路由器并将其running-config文件保存到startup-config文件中。保存的startup-config将是 GNS3 导出的配置。

R1#**copy running-config startup-config**

如果您的项目中有任何 IOU 设备,您还需要复制它们的running-config文件。只需登录到设备并输入以下命令以创建 IOU 配置的文本文件:

IOU#**copy running-config unix:initial-config.cfg**

在保存了running-config文件后,您可以通过选择文件导入/导出设备配置同时导出所有设备的配置。GNS3 随后会显示图 10-9 中的对话框。

配置文件的导入/导出工具

图 10-9. 配置文件的导入/导出工具

从下拉菜单中选择导出配置到目录,点击确定,浏览到您想要保存配置文件的位置,点击打开以保存配置文件。导出的配置文件将以工作区内设备的名称命名,例如 R1_startup-config.cfgIOU1_initial-config.cfg。对于每个 IOS 设备,您还会看到一个私有配置文件,该文件仅由 GNS3 使用,包含 SSH 加密密钥。您无需将其上传到真实的 Cisco 路由器。这种导出方法是一个全有或全无的过程,它会导出项目中所有设备的配置。要导出单个设备的配置,请保存配置,右键点击项目中的设备,选择导出配置。保存的文件将使用设备名称命名。

将 Cisco 路由器配置导入到 GNS3

现在,让我们看看如何将实时的 Cisco 路由器配置导入到 GNS3 中。首先,登录到你的真实 Cisco 路由器,并使用 FTP 或 TFTP 将其配置保存到 PC 上。使用文本编辑器清理任何接口名称不一致的情况。接下来,将导出的文件名后缀改为.cfg,确保 GNS3 能够识别该文件。如果你还没做过,请保存你的 GNS3 项目并停止 GNS3 路由器,该路由器是导入的目标。最后,右键点击 GNS3 路由器,选择导入配置。浏览到保存.cfg文件的目录,并选择该文件导入到路由器中。重新启动 GNS3 路由器时,它应该会加载并运行你从实时 Cisco 路由器复制过来的 IOS 配置。

注意

在将配置文件在真实路由器和 GNS3 之间来回迁移时,你可能需要进行一些 IOS 配置清理。例如,你的 GNS3 路由器可能有一个名为FastEthernet 0/0的接口,而你的真实 Cisco 路由器则有一个名为FastEthernet 0的接口。在这种情况下,使用文本编辑器修改文件,然后再将其导入到 GNS3 中。

在平台之间复制 GNS3 项目

总有一天,你可能希望将项目迁移到使用不同操作系统的 PC 上。如果你的 GNS3 项目仅包含 Dynamips IOS 路由器和交换机,你可以在不同的平台之间(如 Windows 和 Linux)轻松复制它们。但如果项目中包含其他设备类型,如 IOU、QEMU 或 VirtualBox,过程可能会变得复杂。无论如何,在平台之间迁移项目,通常只是将一个或多个项目从旧的 GNS3 项目文件夹复制到新 PC 上的项目文件夹而已。

仅使用 IOS 的项目

如果你的项目仅由 Dynamips 路由器组成,则几乎不需要额外配置,只要目标计算机拥有兼容的镜像文件。如果目标 PC 配置了不同的 IOS 镜像文件,或者镜像文件存储在不同的目录中,GNS3 应该会提示你用已配置在目标计算机上的镜像文件替换原始镜像文件,如图 10-10 所示。

替换 IOS 镜像文件

图 10-10. 替换 IOS 镜像文件

在这个例子中,你将一个项目从 Windows PC 迁移到 Linux 主机。即使在图 10-10 中 Linux 主机已配置了c3725-adventerprisek9-mz-124-15.T14.image文件,GNS3 仍然无法找到它,因为 Windows 存储 IOS 镜像文件的路径与 Linux 不同。

在这种情况下,GNS3 应显示已配置的 IOS 镜像列表,并允许您选择其中一个。使用下拉菜单选择镜像并点击OK。选择镜像后,GNS3 应更新目标 PC 上项目文件中的路径信息。为了使更改永久生效,您必须保存您的项目。所有原始的 IOS 配置应保持不变,您的项目应按照预期运行。如果没有,重新开始并尝试使用不同的镜像文件。

含有 IOU 设备的项目

复制包含 IOU 设备的项目可能会稍显复杂。最简单的方法是在目标 PC 上重新创建 IOU 设备,然后上传原始 IOU 配置。在将项目复制到新平台之前,请按照以下步骤操作:

  1. 登录到项目中的每个 IOU 设备,将运行配置复制到unix:initial-config.cfg文件。右键点击 IOU 设备,选择导出配置以保存配置。确保在复制项目时将导出的配置文件复制到新系统中。

  2. 在目标 PC 上打开项目,并解决任何 IOS 镜像文件替换问题(参考图 10-10)。

  3. 在目标 PC 上,从您的项目中删除 IOU 设备,添加一个新设备,并使用与原始项目相同的接口将 IOU 设备连接到其他项目设备。

要导入配置,请执行以下步骤:

  1. 右键点击目标 PC 上的 IOU 设备,并点击导入配置

  2. 浏览到保存 IOU 配置的目录并选择文件。对项目中的每个 IOU 设备执行此操作。

  3. 当您完成后,启动新项目中的所有设备,并验证一切是否按预期工作。登录到每个 IOU 设备并检查其配置。如果一切正常,保存您的更新项目。

最后,让我们来看看如何转移使用 VirtualBox 的项目。

含有 VirtualBox 设备的项目

如果您在原始项目中使用了 VirtualBox 设备,您需要将其导出为 OVA 文件。启动 VirtualBox,选择文件导出设备来保存设备文件。准备好 OVA 文件后,按照以下步骤操作:

  1. 将 OVA 文件复制到新 PC,启动 VirtualBox,并选择文件导入设备来导入该文件。

  2. 启动 GNS3 并在偏好设置中添加 VirtualBox 虚拟机,如在导入设备中讨论的那样。

  3. 将设备添加到您的 GNS3 项目中,并将其与其他设备连接,选择在原始项目中使用的相同接口。

当您在新 PC 上启动项目时,您的 VirtualBox 设备应具有与旧 PC 上相同的配置。

探索 GNS3 控制台

GNS3 管理控制台提供了一个命令行界面,您可以用它来控制项目设备。该管理控制台基于最初为 Dynamips 编写的 Dynagen 控制台,已经进行了适配和更新。我不会在这里介绍控制台的每个方面,但我会展示一些您可以用它做的更有用的操作。

默认情况下,启动 GNS3 时管理控制台应该是可见的。如果没有,选择 视图停靠控制台 来显示控制台窗口。

从管理提示符(=>)输入 help 或问号(?)以查看命令列表。如以下列出所示,您可以通过 CLI 执行熟悉的任务,例如启动和停止设备:

=> **?**

Documented commands (type help <topic>):
========================================
console  debug  help  reload  show  start  stop  suspend  version

要显示特定命令的详细信息和语法,请输入 help 后跟命令名称,如下所示:

=> **help show**
   Show detail information about every device in current lab:
    show device

    Show detail information about a device:
    show device <device_name>

    Show the whole topology:
    show run

    Show topology info of a device:
    show run <device_name>

show 命令提供了许多不同的选项,用于显示关于虚拟机监控程序、设备和配置的信息。例如,show run 命令显示项目配置文件的全部内容。

两个对于测试网络非常有用的命令是 suspendstart。这两个命令可以一起用于模拟路由器故障和恢复。另一个有用的命令是 debug 命令。当项目运行不正常时,它可以提供有用的信息。

使用多台 PC 创建项目

您可以使用多台 PC 运行设备,从而将资源负载分布到多台计算机上。共享资源使您可以使用一台 PC 设计项目,同时将设备本身运行在一台或多台其他 PC 上。这意味着您可以使用低端工作站(例如旧笔记本)创建和管理您的 GNS3 项目,而实际运行设备则在高端服务器上。如果您使用多台服务器,您可以构建一个 GNS3 超级实验室!

在本节中,我将向您展示如何在基本的客户端/服务器设置中共享资源,并介绍创建超级实验室的策略。在开始配置客户端/服务器(或多服务器)负载共享之前,请禁用所有 PC 上的防火墙,让我们开始吧。

一个 Dynamips 客户端/服务器设置

在这种场景下,您在一台计算机上操作 GNS3,而另一台计算机上运行 GNS3 服务器。如果您在 OS X 或 Windows 上运行 GNS3,这可能听起来很熟悉,因为这就是 IOU 虚拟机的工作方式。IOU 虚拟机运行在虚拟计算机上,而不是单独的 PC 上,但概念是相同的。

准备您的工作站

在这个示例中,我将使用 Windows 作为客户端 PC,使用 Ubuntu Linux 作为服务器 PC。首先,在两台工作站上安装 GNS3。一台工作站将作为客户端,配置和管理项目,另一台作为服务器。服务器仅运行 Dynamips 路由器,它应该拥有更好的硬件,因为它将承担大部分工作。服务器的处理能力和内存越强大,设备的性能就会越好。

在每台计算机上启动 GNS3 并配置一个 IOS 镜像文件。这让你可以同时运行本地和远程的 Dynamips 路由器,并使用客户端 PC 通过 GNS3 将它们联网。在配置服务器 PC 上的 GNS3 时,务必记录下你的 IOS 镜像文件的路径和文件名。在我的 Ubuntu 服务器上,镜像文件路径是/home/jneumann/GNS3/images/IOS/c3725-adventerprisek9-mz.124-15.T14.image。你需要这些信息来配置客户端 PC 上的远程 Dynamips 路由器。

接下来,找到每台 GNS3 PC 的 IP 地址。在这个例子中,我的客户端 PC 配置了 IP 地址 172.16.231.202,我的服务器 PC 配置了 IP 地址 172.16.231.205。配置好 GNS3 并记录下 IP 地址和镜像路径信息后,你就可以开始了。

运行 gns3server

你必须从gns3server程序的安装目录运行它。登录到远程服务器 PC,并在 Linux 和 OS X 上打开终端窗口,或者在 Windows 上打开命令提示符。在 Windows 上,进入C:\Program Files\GNS3目录,在 OS X 上,进入/Applications/GNS3.app/Contents/Resources/Server/Contents/MacOS目录。

启动服务器程序时,必须指定你的服务器 PC 的 IP 地址和服务器将监听的端口号;输入命令gns3server --host server-ip --port port-number。如果你不知道服务器 PC 的 IP 地址,可以懒一点,使用 0.0.0.0,gns3server会监听所有配置的接口。在下面的示例中,我已经在 Ubuntu Linux 上从/usr/local/bin/目录启动了gns3server程序。

$ **gns3server –-host 172.16.231.205 -–port 8000**
2015-06-06 18:32:45 INFO main.py:145 GNS3 server version x.x
2015-06-06 18:32:45 INFO main.py:147 Copyright (c) 2007-2015 GNS3 Technologies
Inc.
2015-06-06 18:32:45 INFO main.py:150 Config file /home/jneumann/.config/GNS3/
gns3_server.conf loaded
2015-06-06 18:32:45 INFO main.py:163 Running with Python 3.4.2 and has PID 3436
2015-06-06 18:32:45 INFO main.py:72 Current locale is en_US.UTF-8
2015-06-06 18:32:45 WARNING project.py:397 Purge old temporary project f3b11fb8
-82ed-42c1-b66a-226198ce6189
2015-06-06 18:32:45 INFO server.py:214 ➊ Starting server on 172.16.231.205:8000

启动服务器后,你应该看到类似的输出,如果一切顺利,服务器将会在 172.16.231.205:8000 ➊上启动,并显示在输出的最后一行。这表示服务器程序正在使用 IP 地址 172.16.231.205 和端口号 8000 进行监听。

注意

如果你想让 GNS3 服务器监听其他端口号,比如 8001,你可以输入gns3server --host 172.16.231.205 --port 8001。要查看服务器选项的完整列表,可以在命令行输入gns3server -–help

配置客户端

这就是配置服务器的全部内容,接下来你可以将注意力转向 GNS3 客户端,在这个例子中是 Windows PC。在 GNS3 中,选择编辑首选项,然后选择GNS3 服务器,如图 10-11 所示。

设置主机绑定为以太网适配器的 IP 地址

图 10-11. 设置主机绑定为以太网适配器的 IP 地址

点击主机绑定下拉菜单,并选择你的以太网接口的 IP 地址。在这台 PC 上,地址是 172.16.231.202。点击应用以完成配置。

接下来,将远程 GNS3 服务器的 IP 地址添加到客户端的远程服务器列表中。点击 远程服务器 标签,如 图 10-12 所示。

配置客户端主机上的远程服务器 IP

图 10-12. 配置客户端主机上的远程服务器 IP

在“Host”字段中,输入远程 GNS3 服务器的 IP 地址。在这个例子中,IP 地址是 172.16.231.205。默认的端口号应为 8000,但如果你在远程 PC 上选择了其他端口号,可以进行更改。添加远程服务器后,点击 应用 保存设置。

接下来,从侧边菜单中选择 Dynamips,并点击 常规设置 标签,如 图 10-13 所示。

取消勾选 使用本地服务器 设置,然后点击 应用。这确保你在配置 Dynamips 路由器时可以选择远程服务器。接下来,点击 IOS 路由器,如 图 10-14 所示。

Dynamips 服务器设置

图 10-13. Dynamips 服务器设置

配置远程 Dynamips 路由器

图 10-14. 配置远程 Dynamips 路由器

点击 新建 将远程 IOS 路由器添加到客户端 PC,如 图 10-15 所示。

选择远程服务器类型

图 10-15. 选择远程服务器类型

在“服务器类型”下,选择 远程,并取消勾选 在所有可用的远程服务器之间负载均衡。点击 在服务器上运行 下拉菜单,从列表中选择远程服务器的 IP 地址,然后点击 下一步 继续。输入你从远程服务器记录的路径和 IOS 镜像名称,如 图 10-16 所示。

输入远程 IOS 镜像路径

图 10-16. 输入远程 IOS 镜像路径

输入路径和文件名后,点击 下一步 继续。在“名称”字段中输入路由器名称,如 图 10-17 所示。

命名你的路由器

图 10-17. 命名你的路由器

我已将我的路由器命名为 c3725_on_Ubuntu,这样可以在设备工具栏中轻松识别路由器,并且从名称上可以知道它配置为运行在远程服务器上。

此时,您可以像配置本地 Dynamips 路由器一样点击其余选项。记得在提示时输入 Idle-PC 值,如果还没有计算,可以自行计算。请记住,Idle-PC 值是按每个镜像计算的,因此在使用相同 IOS 镜像文件的任何 PC 上都可以使用相同的值。

当您完成添加路由器时,它应显示在设备工具栏中的路由器部分,如图 10-18 所示。

这个示例中有两台 c3725 路由器,一台是安装在 Windows PC 上的本地路由器,另一台是安装在远程 Ubuntu 服务器上的路由器。当您创建一个项目时,您可以在同一个项目中使用这两台路由器,从而减少客户端 PC 上的 CPU 和内存消耗。

设备工具栏中的路由器部分

图 10-18. 设备工具栏中的路由器部分

现在您已经知道如何使用多台 PC 设置 GNS3,可以利用这一能力创建大型的 GNS3 项目。

在远程服务器上运行 QEMU

除了在远程服务器上运行 IOU 和 IOS 路由器外,您还可以在远程服务器上运行 QEMU。只需确保在开始之前已经在服务器 PC 上安装了 QEMU。设置远程 QEMU 设备的过程几乎与其他远程设备相同。然而,在新建 QEMU 虚拟机向导中,您需要选择虚拟机的 QEMU 二进制文件,如图 10-19 所示。

配置 QEMU 二进制文件

图 10-19. 配置 QEMU 二进制文件

GNS3 应该查询远程服务器以获取已安装的 QEMU 二进制文件列表,您创建的虚拟机应使用您选择的二进制文件在远程服务器上运行。使用下拉菜单选择虚拟机的二进制文件,通常是 qemu-system-i386qemu-system-x86_64。调整 RAM 大小并点击 下一步。像配置本地设备一样配置剩余选项。

创建 GNS3 超大实验室

GNS3 强调可扩展性,您可以使用它创建非常大的项目,包含数十个交换机和路由器。创建超大实验室(uberlab)的最佳方法之一是使用多个 GNS3 服务器。但是,如果您有一台非常快速的计算机和几台性能较差的计算机怎么办呢?在这种情况下,您可能希望在一台计算机上运行更多的设备,而在其他计算机上运行较少的设备。例如,您可以在高端服务器上运行大多数路由器,在性能较低的机器上运行较少的设备。

超级实验室不必仅限于本地局域网中的计算机。如果你在一个通过 VPN 连接的多个站点的公司网络中使用 GNS3,你可以使用客户端/服务器模型,从市区甚至全国各地运行各种虚拟化管理程序!你需要做的就是在远程计算机上启动 gns3server 应用程序(通过 VPN),并使用远程 PC 的 IP 地址配置本地客户端。这和常规的客户端/服务器设置的唯一不同是,数据包将通过 VPN 发送到远程服务器。

趣味与盈利的极客实验室

你已经探索了在 GNS3 中配置各种项目所需的工具,但你应该如何利用这份新获得的知识呢?你可以为认证做准备,或者只是玩得开心!在本节中,我会讨论这两者。许多这些项目面向的是高级用户,但你可以随意修改它们,创建更适合你技能水平的项目和挑战。

准备 Cisco 考试

GNS3 是一个惊人的教育和认证工具,它拥有一切你需要的资源来获得 Juniper 或 Cisco 的认证,从入门级的 JNCIA 或 CCNA 一直到 Cisco 认证的皇冠上的明珠,CCIE。

对于 CCNA 或 CCNP 等入门级考试,可以通过在线搜索找到各种网络示例。你甚至可以使用 CBT Nuggets 或 Bryant Advantage 的视频与 GNS3 配合使用。它们的视频是一个很好的起点,GNS3 是一个很棒的工具,用来实验他们介绍的概念。如果你在为 CCIE 考试做准备,你可能想使用像 INE 工作簿这样的资料(www.ine.com/)。他们已经证明自己是 CCIE 实验室准备领域的领导者。

保护你的网络

如今,几乎每个人都将机密信息存储在某种网络服务器上,因此,拥有一个安全的网络基础设施不仅是一个好主意,它还是防止重大财务损失、避免不必要的诉讼以及避免与你公司错误和疏漏(E&O)保险承保方发生纠纷的一种方法。

在本节中,我概述了一些安全相关的挑战,这些挑战既有趣又具有教育意义,并且可以防止数据盗窃或丢失。

“破解我的机架”挑战

和朋友们一起举办一个安全竞赛吧!每个挑战者在他们的 PC 上创建一个 GNS3 项目,并尽可能为他们的设备应用安全措施。挑战是让每个用户攻破其他用户的安全防护。在每个用户创建好自己网络后,他们可以在朋友的 PC 上安装一个 VirtualBox 虚拟机,并使用他们想要的任何系统破解工具。当挑战者们完成自己网络的创建后,他们交换电脑并开始计时。现在,皇家大战开始了!使用你的 VirtualBox 虚拟机来攻破另一个挑战者的 GNS3 网络。

创建 Cisco VPN

使用 Cisco 路由器和 ASA 设备创建一个站点到站点的 VPN 或多站点 VPN。尝试配置一个具有 VPN 故障转移的多宿 Cisco 路由器。在这种情况下,你的 WAN 边缘路由器可能有两个或更多接口,使用 BGP 模拟与互联网服务提供商的 WAN 链路。总有一天你可能需要一个自己的,或者客户可能需要一个。学会在 GNS3 中做这件事,比在客户的时间里摸索要好得多!

实践真实世界场景

以下项目思路旨在让你开始考虑 GNS3 沙盒外的实际情况。作为一名网络管理员或工程师,你需要理解多宿网络、交换机块设计和多服务器集成等方面的工作原理,仅举几例。在 GNS3 中设计、运行和排除这些类型的网络故障是为现实世界做好准备的好方法。

Cisco 交换机块设计

理解交换机是管理网络的重要部分。虽然 GNS3 的 EtherSwitch 路由器和 IOU 具有有限的功能,但它们在配置和测试使用 HSRP、VRRP 和 GLBP 等协议的冗余交换机块时非常有用。试着创建一个完全冗余的 Cisco 校园模型交换机块,并提供互联网访问。

多宿网络

虽然许多小企业通过单个静态 IP 地址连接到互联网,但更大的公司需要更多的静态 IP 和 BGP 链接来维持其在互联网中的存在。使用几个 GNS3 路由器和 BGP,你可以模拟一个连接到多个互联网服务提供商的多宿网络。向你的虚拟 ISP 添加额外的路由器,模拟类似* www.google.com/ www.gns3.com/ *这样的站点。然后从你的多宿网络 ping 这些虚拟站点。

多厂商集成

使用 Cisco、Juniper、Arista、Linux 或任何其他你能想到的可路由设备创建一个项目。使用 RIP、OSPF、BGP 等开放标准配置这些设备,或者使用路由重分发将来自一个厂商设备的路由翻译到另一个厂商设备上。目的是尽可能多地了解多厂商集成。

使用所有设备,包括“厨房水槽”

这个项目涉及所有内容!很简单:构建你能想象的最大、最强大的项目。尽可能多地使用远程 PC,并运行 GNS3 提供的所有内容:Cisco 路由器、交换机、ASA、防火墙、IDS/IPS、Juniper、Firefly、Vyatta、Arista,任何你能想到的设备。应用每种路由和交换协议,并使用pingtraceroute测试端到端的连通性。确保至少设置一个 ATM 交换机,一个帧中继云和一两个 VPN。

需要多少个路由器才能炸掉一个灯泡?

这里有一个有趣的方式可以赢得炫耀的权利。挑战朋友,看谁的 PC 在 GNS3 中能运行更多的路由器。通过正确的 Idle-PC 值,你可能会发现你可以在 Dynamips 崩溃或 GNS3 开始变得太慢以至于无法使用之前,运行超过 100 个路由器。一个技巧是将 GNS3 运行在 Linux 上,因为 Dynamips 在 Linux 上的扩展性似乎比在 Windows 或 OS X 上更好。

路由器失控

这个“画蛇添足”的挑战是和朋友一起玩的一种方式。每个挑战者都可以使用尽可能多的路由器来构建一个复杂的网络,越多越好!然后配置这些网络并彻底测试。等到两个挑战者都确信他们的网络运行正常后,他们交换计算机,通过更改几个配置设置来破坏对方的网络(就像往药膏里放只苍蝇一样)。

一次“休息”可能是简单地关闭一个接口,或者复杂到过滤 BGP 路由。这完全取决于个人的技能和他们网络的复杂性。一旦网络被破坏,竞争者们再次交换计算机,每个人都尽力首先分析并修复他们原本的网络。

最后思考

虚拟的 Cisco 接入服务器需要一些配置工作,但一旦设置完成,它是管理设备的简便方式。如果你有一个只用几个路由器的小项目,可能不需要它。但如果你需要管理几十台设备,它很快就会成为一个不可或缺的工具。

GNS3 可以在多个 PC 操作系统上运行,但你并不局限于你当前使用的那个系统。项目在不同系统之间移动相对简单,所以不要害怕尝试新东西。GNS3 是在 Linux 上设计的,并且移植到 Windows 和 OS X,所以它在 Linux 上运行得很好,通常比在 Windows 上运行时占用更少的资源。

如果你没有最新的 PC 硬件,你可以将虚拟化管理程序跨多个 PC 进行负载均衡,创建比单台 PC 更流畅的大型项目。这也是重新利用家里或办公室里闲置旧 PC 的好方法。

但关于 GNS3 最重要的一点是,它好玩,因为你可以创建那些原本可能无法实现的网络。所以发挥创造力,享受乐趣吧!

附录 A. 救命!我摔倒了,爬不起来

GNS3 是一个复杂的程序,像所有复杂的程序一样,它偶尔会出现意料之外的行为。我已经在本书中包含了故障排除的技巧,因此在本附录中我不会提供太多的修复信息。相反,我将为你提供解决问题的基本策略,并且我会介绍一些常见问题及其可能的解决方案。

确定问题

GNS3 的问题大致可以分为两类。

  • 突发问题。发生在之前正常运行的项目中的问题。

  • 功能性问题。在实现新功能时发生的问题。

突发问题是无缘无故发生的。你的项目可能已经运行了几周,一切正常,但突然间无法打开,或者打开后设备无法启动。功能性问题通常发生在创建新项目或在现有项目中实现新功能时。两种问题类型都可能令人沮丧,如果你使用 GNS3 一段时间,你很可能会遇到至少一种问题。

突发问题

当一个项目运行良好,却突然出现问题时,通常表明某些东西发生了变化。可能是你的 PC 发生了变化,GNS3 本身发生了变化,或者项目本身发生了变化。就 GNS3 而言,可能是你无意中更改了某个设置,或者更改了如 Dynamips、QEMU 或 VirtualBox 等辅助应用程序。也可能是你升级到了一个有问题的 GNS3 版本。每当发布新版本的 GNS3 时,在升级生产环境之前,最好先在备用 PC 或虚拟机上进行测试。本节提供了一些帮助解决突发问题的技巧。

停止 Dynamips 崩溃

不稳定的 Dynamips 程序可能导致设备连接丢失。在这种情况下,你可能会看到 GNS3 控制台错误信息,指示 Dynamips 已停止运行,如图 A-1 所示。

与 Dynamips 的通信失败

图 A-1. 与 Dynamips 的通信失败

该消息可能表明你正在运行与 Dynamips 冲突的软件,或者你正在使用不稳定的 Dynamips 版本,或者你的 PC 没有足够的可用资源,如内存或 CPU 周期。尝试关闭所有非必要的应用程序,重启你的 PC,禁用所有的防病毒/反垃圾邮件软件,并关闭防火墙。如果 Dynamips 仍然崩溃,可能需要重新安装或从备份中恢复 Dynamips 或 GNS3。

当 IOS 镜像无法加载时

路由器内存是导致 Dynamips 路由器出现故障的常见问题。当路由器无法启动时,请检查您所使用的 IOS 镜像的 Cisco RAM 要求——您可能分配了过多或不足的内存。要验证要求,请访问 Cisco 功能导航器网站;浏览到tools.cisco.com/ITDIT/CFN/jsp/index.jsp。在这里,您可以使用“按软件搜索”功能输入 IOS 的详细信息,导航器将提供相应的要求。

如果 IOS 路由器的 RAM 设置过低,路由器可能无法启动,或者启动时崩溃,GNS3 控制台窗口可能会显示错误消息,如图 A-2 所示。

加载 Cisco IOS 镜像错误消息失败

图 A-2。加载 Cisco IOS 镜像错误消息失败

在这种情况下,您应该重新配置路由器并为其分配更多内存。右键单击路由器并选择配置,以启动 GNS3 节点配置器。从左侧窗格中选择路由器名称,然后点击内存和磁盘标签页以显示 RAM 设置。

如果您增加内存后路由器仍然无法启动,可能是 IOS 镜像文件损坏,您应该尝试使用其他版本的文件。

当您遇到损坏的 IOS 镜像文件时,可能不会在 GNS3 控制台窗口中显示任何错误消息。相反,路由器控制台可能没有响应,或者显示可能提供问题线索的信息,如图 A-3 所示。

IOS 镜像加载失败

图 A-3。IOS 镜像加载失败

控制台输出显示 IOS 正以惊人的速度抛出异常错误。这可能表明 IOS 镜像文件已损坏,或者在 GNS3 中配置不正确。请使用 Cisco 功能导航器验证并修正镜像设置,必要时更换镜像文件。

解决 IOS 内存错误

向 Dynamips 路由器添加过多内存可能会导致路由器无法正常启动。例如,c7200 与 NPE-400 处理的最大 RAM 为 512MB。如果您添加更多内存,比如 1024MB,您可能会在 GNS3 控制台窗口中看到错误消息,或者在路由器控制台中显示如下信息:

Cisco IOS Software, 7200 Software (C7200-ADVENTERPRISEK9-M), Version 15.2(4)
S2, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2012 by Cisco Systems, Inc.
Compiled Tue 11-Dec-12 13:32 by prod_rel_team

!!! WARNING - VM is not running, will be unresponsive (status=1) !!!

路由器控制台消息 !!! WARNING - VM is not running, will be unresponsive (status=1) !!! 清楚地表明该路由器在启动时发生崩溃。在这种情况下,停止设备并检查其配置。这里指示的问题是设备分配的内存过多。要解决此问题,请减少分配给设备的内存量,或者用不同版本的 IOS 镜像文件替换原有镜像文件。

即使路由器看起来运行正常,在配置 IOS 时你可能仍会遇到错误。以下是一个有趣的情况,尽管路由器内存不足但仍成功启动,但在配置过程中显示错误信息:

R1(config-if)#**ip nat inside**
% NBAR ERROR: parsing stopped
% NBAR Error : Activation failed due to insufficient dynamic memory
% NBAR Error: Stile could not add protocol node
%NAT: Error activating CNBAR on the interface Vlan1
R1(config-if)#
*Mar 1 00:00:57.127: %LINEPROTO-5-UPDOWN: Line protocol on Interface NVI0,
changed state to up
*Mar 1 00:00:57.251: %SYS-2-MALLOCFAIL: Memory allocation of 10260 bytes
failed from 0x62915CD4, alignment 0
Pool: Processor Free: 18968 Cause: Memory fragmentation
Alternate Pool: None Free: 0 Cause: No Alternate pool
 -Process= "Exec", ipl= 0, pid= 195, -Traceback= 0x6148BFF8 0x60016604
0x6001C564 0x6001CBBC 0x636756E4 0x62915CDC 0x628F468C 0x628F88C4 0x628F5968
0x628F87A0 0x628F5968 0x628F8344 0x628F5968 0x628F5B2C 0x62928FBC 0x62933A20
R1(config-if)#
*Mar 1 00:00:57.275: %NBAR-2-NOMEMORY: No memory available for StILE lmalloc,
-Traceback= 0x6148BFF8 0x62915CF8 0x628F468C 0x628F88C4 0x628F5968 0x628F87A0
0x628F5968 0x628F8344 0x628F5968 0x628F5B2C 0x62928FBC 0x62933A20 0x62920BD0
0x6293DF70 0x6293E2F0 0x61C77C70
R1(config-if)#

在这个例子中,路由器 R1 一直运行良好,直到我尝试配置网络地址转换。由于这台路由器内存不足,Cisco IOS 立即显示内存分配错误信息。在 GNS3 中为路由器分配更多内存应能解决该问题。

解决 NIO 错误

当你尝试使用 Cloud 节点将 GNS3 设备连接到 PC 的物理以太网适配器时,通常会发生 NIO 错误。如果你在连接设备之间或连接到 Cloud 节点时遇到问题,或者收到类似于 图 A-4 中显示的 NIO 错误信息,那么你可能有权限问题。

无法创建通用以太网 NIO 错误信息

图 A-4. 无法创建通用以太网 NIO 错误信息

在这种情况下,你可能需要为自己分配更高的权限。如果你在 Windows 上运行 GNS3,可以使用管理员账户启动 GNS3:右键点击 GNS3 图标,选择 以管理员身份运行。如果你使用的是 OS X,可能需要为 /dev/tap/dev/bpf 设备文件分配所有权权限,如以下示例所示:

$ **sudo chown $(id -un):$(id -gn) /dev/bpf***
$ **sudo chown $(id -un):$(id -gn) /dev/tap***

这些命令将把当前登录用户的用户 ID 分配给设备文件,从而允许你的用户账户在运行 GNS3 时使用这些文件。你需要在每次重启 Mac 时设置这些权限,因为 OS X 会在启动时重置所有设备文件的权限。

为了确保较高的安全性,使用setcap命令提升 dynamips 文件的能力。在 Ubuntu 上,你可能需要在输入setcap命令之前安装 libcap2。

$ **sudo apt-get install libcap2**
$ **sudo setcap cap_net_raw,cap_net_admin+eip /usr/local/bin/dynamips**

Linux 安全性考虑

如果你正在使用 Linux,可能需要以提升的权限运行 Dynamips。为此,根据你的 Linux 发行版,有两种方法可以选择。

你可以使用 Linux 的chownchmod命令,或者使用setcap命令。这两种方法都能解决权限问题,但chmod/chown方法较不安全,因为它赋予 Dynamips 应用程序以完整的 root 权限。如果恶意代码进入 Dynamips,你的整个 Linux 安全性可能会受到威胁。Linux 的setcap命令允许你为文件赋予类似 root 的能力,而不需要真正给予文件 root 权限。这能在不牺牲 Linux 安全性的前提下,赋予 Dynamips 所需的权限。因此,这是解决 GNS3 NIO 错误的首选方法。

不幸的是,setcap并不适用于所有 Linux 平台,但它在 Ubuntu 和大多数基于 Debian 的系统中是受支持的。

如果你无法使用setcap命令,可以改用chownchmod命令来提升 Dynamips 的根权限。

$ **sudo chown root /usr/local/bin/dynamips**
$ **sudo chmod 4755 /usr/local/bin/dynamips**

如果你无法将 IOU 设备连接到 Linux 上的物理适配器或虚拟 TAP 适配器,可以尝试将setcap命令应用于 iouyap 应用程序。这是因为 iouyap 是 GNS3 软件,它将 IOU 设备与其他 GNS3 设备以及虚拟和物理接口桥接。在这里,你为 iouyap 授予了和 Dynamips 相同的提升权限:

$ **sudo setcap cap_net_raw,cap_net_admin+eip /usr/local/bin/iouyap**

另一个可能的 NIO 问题是你为连接 GNS3 到物理以太网适配器选择的方法。这在 Windows PC 上尤其常见。如果你使用的是 Windows 7,尝试连接 GNS3 到互联网时,使用物理以太网适配器和回环适配器创建一个桥接(详细信息见将 GNS3 设备连接到互联网)。如果你使用的是 Windows 8,直接将 Cloud 节点连接到物理以太网适配器或使用 Internet 连接共享,可能会得到更好的结果。

纠正控制台问题

控制台问题可能会导致控制台无法打开,打开后立即关闭,或者在配置设备时反应迟钝或无响应。控制台连接不正常的原因有很多。最常见的问题是由于 GNS3 中的设置不正确,比如 QEMU 设备设置或 VirtualBox 设置,但也可能是设备镜像的问题,例如损坏的 IOU 或 ASA 镜像文件。

当控制台无法打开时,首先检查 GNS3 控制台应用程序的偏好设置。打开首选项,在左侧窗格中选择常规,点击控制台应用程序标签,确保在预配置的终端命令下列出的终端类型与您的操作系统终端程序匹配。如果不匹配,请使用下拉菜单选择正确的终端;然后点击设置、应用,再点击确定保存配置。

如果你发现打开控制台后立即断开连接,可能是防火墙阻止了控制台应用与 GNS3 设备之间的网络连接。如果设备是 QEMU 设备,问题通常与 QEMU 虚拟机本身或其配置相关。首先,确认你已经为 QEMU 虚拟机分配了正确的内存。你可以访问 GNS3 Jungle 论坛或第三方供应商网站,验证该设备的内存要求。如果内存分配正确且问题依旧,检查 QEMU 虚拟机设备的属性。进入 首选项,从左侧面板中选择 QEMU 虚拟机。从列表中选择你的 QEMU 设备,点击 编辑,然后点击 高级设置 标签。确保“附加设置”中的选项正确。如果不正确,请修正并重试。

类似地,你可以通过检查虚拟机的设置来排查 VirtualBox 虚拟机的问题。进入 首选项,然后从左侧面板中选择 VirtualBox 虚拟机。从列表中选择你的 VirtualBox 设备,点击 编辑,然后点击 常规设置 标签。确保启用了远程控制台并正确配置了虚拟机的“无头模式”启动选项。

如果你在启动 Dynamips 路由器时,控制台反应迟缓,可能是因为路由器未被分配最佳的 Idle-PC 值。选择不当的 Idle-PC 值对 CPU 的影响可能和没有设置值一样严重。要验证或设置 Idle-PC 值,右键点击路由器,选择 配置 打开节点配置器,然后在 高级 标签中检查 Idle-PC 值。如果路由器已经被分配了 Idle-PC 值,并且设备消耗大量 CPU,那么你可能需要重新计算该值。(参见设置手动 Idle-PC 值。)

如果你更改了任何 Dynamips 的高级优化设置(例如 Idlemax 或 Idlesleep),控制台也可能变得迟缓。Idlemax 和 Idlesleep 是与 Idle-PC 值一起使用的;Idlemax 决定在执行路由器代码中的空闲循环时,多少时间进行一次睡眠,而 Idlesleep 值则决定每次睡眠的时长。你可以通过点击 重置 按钮来尝试将它们恢复到默认值,如图 A-5 所示。

GNS3 开发团队已确定,Idlemax 和 Idlesleep 的默认值对大多数用户来说是最佳的,但通过如节省资源中所述的方法,你可能能够稍微提升一些 CPU 性能。

高级路由器配置

图 A-5. 高级路由器配置

如果控制台反应迟缓是因为你使用的是 IOU 设备,并且正在使用 IOU 虚拟机(Windows 和 OS X 必需),可以尝试在 VirtualBox 中为 IOU 虚拟机分配更多内存。

功能问题

功能问题通常出现在你尝试实现 GNS3 的某个新功能时,并且通常是由某种用户错误导致的。GNS3 拥有许多功能和选项,项目可能会迅速变得复杂,尤其是在使用多台 PC 或将 QEMU 和 VirtualBox 虚拟机添加到项目中时。功能问题也可能出现在设备配置中。

配置问题

如果你在项目中遇到网络路由问题,可能是你在配置设备的网络操作系统时犯了错误;毕竟,GNS3 是一个学习工具,你会在过程中犯错误。在配置使用 Arista、IOS 和 Junos OS 等操作系统的功能时,容易犯一些会导致网络瘫痪的错误。检查设备的配置,确保没有将错误的子网掩码分配给 IP 地址,或者忘记启用接口。避免这类问题的一种方法是像配置实际网络一样配置你的 GNS3 项目设备。从少量设备开始,配置并测试它们,然后逐步增加并测试设备,直到创建一个完全功能的项目。

使用不支持的 IOS 镜像

总之,不要尝试使用不支持的镜像。Dynamips 支持有限数量的 Cisco 路由器(完整列表请见附录 B)。如果在尝试安装镜像文件时看到不支持的镜像错误,如图 A-6 所示,那是因为该镜像文件不被 GNS3 支持。

不支持的 IOS 镜像错误

图 A-6. 不支持的 IOS 镜像错误

在图 A-6 中,我尝试使用来自 Cisco c850 路由器平台的镜像文件,但该平台不被 GNS3 支持。出现此错误消息时,唯一的选择是丢弃该文件并用一个 GNS3 支持的文件替换它。

核心解决方案

如果在尝试了到目前为止讨论的操作后,仍然遇到 GNS3 问题,你可以采取“核选项”作为最后的手段,清除 GNS3 设置文件。一旦清除该文件,你将失去所有 GNS3 设置,并需要重新配置 GNS3,仿佛它是一个全新安装的系统。

注意

清除 GNS3 设置文件不应影响你保存的任何项目,也不应影响这些项目中的 VirtualBox 或 QEMU 设备。

在开始之前,请备份现有的配置文件。这样,如果需要恢复旧设置,你可以选择返回到原来的配置。进入偏好设置并选择常规偏好;然后,在新窗口中选择常规选项卡,如图 A-7 所示。

GNS3 设置文件显示在配置文件 ➊ 下。要备份该文件,请点击导出 ➌ 按钮。选择一个名称和保存位置。记下原文件的位置(在此示例中为 /home/jneumann/.config/GNS3/gns3_gui.conf),导出完成后,关闭 GNS3 并删除或重命名此原始文件。现在,当你重新打开 GNS3 时,所有偏好设置将被清除,就像你第一次安装它一样。如果你决定清除文件是一个错误,可以使用导入 ➋ 恢复原始 GNS3 设置文件。

导出并清除 GNS3 配置文件

图 A-7. 导出并清除 GNS3 配置文件

注意

在少数情况下,GNS3 设置文件可能会损坏。请随时保持 GNS3 设置文件的当前备份,以便在需要时能够恢复到一个可用版本。

硬件负载过重

当 GNS3 运行缓慢且设备崩溃时,这可能是你让 PC 处理器负担过重,连接了过多设备的迹象;这肯定会导致控制台响应变慢,甚至可能导致 Dynamips 崩溃。如果是这种情况,可以考虑精简项目、升级 PC,或使用多台 PC 与 GNS3 配合使用。为了在不让 CPU 过载的情况下创建大型项目,一个很好的方法是将超管程序分摊到多台 PC 上,正如使用多台 PC 创建项目中所描述的那样。

解决端口号冲突

在某些时候,电脑上的其他软件可能会与 GNS3 冲突。通常在该软件使用了 GNS3 所需的端口号时会发生这种情况。如果使用的端口号与 GNS3 服务器应用程序相同,GNS3 会加载,但服务器应该选择另一个端口号。

当这种情况发生时,使用netstat命令调查问题,这个命令应该在 Windows 和 Unix 系统(如 Linux 和 OS X)上都能找到。

$ **netstat -an|more**

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:39191         127.0.0.1:800➊         TIME WAIT
tcp6       0      0 ::1:631                 :::*                    LISTEN
tcp6       1      0 ::1:53974               ::1:631                 CLOSE WAIT
udp        0      0 0.0.0.0:59759           0.0.0.0:*
udp        0      0 0.0.0.0:39309           0.0.0.0:*
udp        0      0 127.0.1.1:53            0.0.0.0:*
udp        0      0 0.0.0.0:68              0.0.0.0:*
udp        0      0 0.0.0.0:631             0.0.0.0:*
udp        0      0 0.0.0.0:5353            0.0.0.0:*
udp6       0      0 :::57463                :::*
udp6       0      0 :::45876                :::*
udp6       0      0 :::5353                 :::*

TCP 端口号 8000 ➊ 是 GNS3 服务器程序的默认端口号,但netstat 输出显示另一个应用程序正在使用该端口。为了解决这个问题,请找到占用该端口的应用程序并关闭它,或更改 GNS3 使用的默认端口号。要更改端口号,请进入偏好设置服务器本地服务器端口,并将端口号设置为其他数字,比如 8001。

ASA 故障排除

在 GNS3 中安装 ASA 时,确保在安装向导中从 类型 下拉菜单中选择 ASA 8.4(2)。然后,GNS3 向导应自动填写所需字段并提供正确的信息。

如果你的 ASA 配置正确,但它锁死或运行不良,可能是 ASA 导致了高 CPU 使用率,进而影响了你的 PC 整体性能。你可以通过调整 ASA 的 CPU 限制百分比,显著降低 CPU 使用率。进入 首选项,选择你的 ASA,点击 编辑,并启用 CPU 限速。不过要小心,因为限制 ASA CPU 使用率过多也可能导致 ASA 无响应。为了达到最佳效果,尝试调整设置,直到找到一个能够减少 CPU 使用率而不影响性能的平衡点。

节省资源

总体来说,GNS3 在处理几乎任何规模的项目时表现不错,只要你拥有适当的硬件资源。但是,项目越大,你越有可能遇到问题。避免这些问题的最佳方法是在创建项目时采取简化的方式,并避免在设计中增加不必要的复杂性。

仔细选择设备

在 GNS3 中,始终选择使用最少内存和 CPU 的设备。例如,如果你能使用只需 128MB 的 c3700 路由器,而不是需要 512MB 内存的 c7200 路由器,就应避免使用 c7200。当使用 Dynamips 设备时,请为项目中的所有路由器选择相同的设备型号;GNS3 这样可以在它们之间共享资源。使用多个不同的路由器型号可能会导致资源消耗过多,性能下降。你还可以使用仿真设备,比如使用以太网交换机节点而不是 EtherSwitch 路由器,以节省内存和处理器。

优化 Idle-PC 值

为了减少系统资源的使用,微调你的 Idle-PC 值。当你运行少量 IOS 设备时,当前的值可能已经足够,但较大的项目将从更优化的值中受益。

为了找到最适合你的值,首先将计算机置于大部分空闲状态:重启计算机并关闭所有程序,包括防病毒软件。如果你使用的是 Windows,尽量关闭系统托盘中的所有应用程序。当你准备好时,将路由器添加到工作区,启动它,右击路由器,选择 Idle-PC 开始计算 Idle-PC 值。在此过程中,仔细监控每次应用新值后的 CPU 使用情况,并记录所有值。寻找使用最少资源的那个值,并在找到它后应用到设备上。

备份你的项目

备份你的 GNS3 项目非常重要,特别是当它们变得越来越复杂且需要更多时间来创建时。没有人愿意丢失自己花费几个小时完成的工作!你可以备份整个 GNS3 文件夹、备份你的项目文件夹,或备份单个项目文件夹。

定期备份整个 GNS3 文件夹是确保你始终拥有所有项目和镜像的最新副本的最佳方法,但这可能会占用大量时间,并且可能需要相当多的磁盘空间。

如果你时间或资源有限,至少从项目文件夹中备份单独的项目。确保你仍然有整个 GNS3 文件夹的备份副本,然后在需要时通过将单个项目复制到备份中来更新完整的 GNS3 备份。这种方法的缺点是,它依赖于你每次更新备份时都记得复制新项目或更新的项目,你可能会忘记备份一个重要的项目。从经验中我知道,当你发现自己刚丢失了为一个复杂项目投入的所有工作时,这种失落感会让人非常清醒。

我建议制定一个完整的备份策略,并在创建每个项目时进行备份。你可以分阶段创建大型项目,逐步测试每个组件,确保每个组件正常工作后再进行备份。然后,重复此过程,直到项目完全配置好,网络功能正常。在创建复杂项目时,使用 GNS3 快照也很有帮助:如果出现错误,只需通过恢复快照来恢复到正常工作状态(参考 使用 GNS3 工具栏)。但是,无论你选择哪种备份策略,存储备份项目文件最简单的方法是将整个项目文件夹复制到一个大容量 USB 闪存驱动器或外部硬盘中。

欢迎来到丛林

当问题对你来说太难解决时,不要害怕寻求帮助。GNS3 网站 (www.gns3.com/) 提供了大量信息,并且有一个专门的论坛,叫做 GNS3 丛林。在这里,你可以报告问题,提问,或者帮助其他用户解答问题。要访问 GNS3 丛林,进入 GNS3 网站并选择 社区

在发帖提问之前,请先在网站上搜索,看看你的问题是否已经有人问过并得到解答。GNS3 丛林有一个非常活跃的成员群体,因此问题通常会迅速得到回应。如果你发帖提问后没有得到及时回答,请不要重复发帖或回复自己的帖子以提高其排名。多次发相同的问题只会让试图帮助的人更加困惑。通常,如果问题没有得到回答,是因为目前在论坛上没有人知道答案。请耐心等待,最终会有人回复。

在提问时,我建议提供以下信息:

  • GNS3 版本

  • 操作系统的名称和版本

  • 平台特性(32 位或 64 位,处理器,内存)

  • 问题的清晰描述

  • 错误信息的截图(如果适用)

  • 偏好设置的截图(如果适用)

  • 拓扑结构(如果适用)

  • 设备配置(如适用)

详细的信息能帮助其他 GNS3 用户更快地确定你的问题并提供解决方案。

最后思考

尽管 GNS3 通常运行良好,但问题偶尔还是会出现。在本附录中,你查看了一些常见问题和基本的故障排除策略来解决这些问题。

你了解到,防火墙、杀毒软件以及偶尔基于 TCP/IP 的应用程序会对 GNS3 造成严重影响。如果有疑问,在启动 GNS3 之前,请禁用防火墙、禁用杀毒软件,并关闭所有不必要的程序。

你还学到,修复损坏项目的最快方法通常是从备份中恢复项目。你应该始终保持整个 GNS3 文件夹和 GNS3 设置文件的最新备份副本。从备份恢复数据是灾后快速恢复和启动的最可靠方式。

附录 B. 与 GNS3 兼容的 Cisco 硬件

本附录列出了 Dynamips 和 GNS3 支持的 Cisco 硬件。Dynamips 仅模拟使用 MIPS 架构的 Cisco 路由器,并不支持所有 Cisco 型号。在支持的路由器列表之后,你会看到一份推荐的 IOS 镜像文件列表,GNS3 可以自动应用正确的 Idle-PC 值,而无需执行 Idle-PC 计算。

支持的 Cisco 硬件

在 GNS3 中,你可以模拟五种不同系列的 Cisco 路由器(1700、2600、3600、3700 和 7200),支持的功能各不相同。

表 B-1. 1700 系列路由器

1700 系列路由器

表 B-2. 2600 系列路由器

2600 系列路由器

表 B-3. 3600 系列路由器

3600 系列路由器

表 B-4. 3700 系列路由器

3700 系列路由器

表 B-5. 7200 系列路由器

7200 系列路由器

IOS 兼容性

以下路由器不再收到 Cisco 的 IOS 更新。这里列出的 IOS 文件名是 GNS3 推荐的版本,尽管旧版本应该也能正常工作。

表 B-6. c1700 系列路由器

c1700 系列路由器

表 B-7. c2600 系列路由器

c2600 系列路由器

表 B-8. c2691 系列路由器

c2691 系列路由器

表 B-9. c3620 系列路由器

c3620 系列路由器

表 B-10. c3640 系列路由器

c3640 系列路由器

表 B-11. c3660 系列路由器

c3660 系列路由器

表 B-12. c3725 系列路由器

c3725 系列路由器

表 B-13. c3745 系列路由器

c3745 系列路由器

Cisco c7200 系列路由器继续接收 Cisco 的 IOS 更新,并支持版本 15.x 的 IOS。

表 B-14. c7200 系列路由器

c7200 系列路由器

附录 C. NM-16ESW 和 IOU L2 限制

GNS3 Dynamips NM-16ESW 模块与其真实的 Cisco 对应模块操作相同。与物理模块一样,Dynamips 模块不支持所有 Cisco Catalyst 交换机的功能,意味着获得完整 Catalyst 交换机功能的唯一保证方法是将一个或多个真实的交换机集成到 GNS3 项目中。我在本附录中列出了那些不受支持的功能,以及 IOU L2 镜像可能不支持的功能。

如果你想使用某个特定的 Catalyst 交换机功能,首先检查这些列表,看看是否需要使用物理交换机。

不支持的 NM-16ESW 特性

NM-16ESW 交换机模块不支持以下功能:

  • 接入交换设备管理器(SDM)模板

  • ACL – 改进的合并算法

  • ARP 优化

  • BGP 增强对编号路径访问控制列表的支持,最多 500 条

  • BGP 在最大前缀限制到达后重启邻居会话

  • BGP 路由映射继续支持外发策略

  • 清除每个端口的计数器

  • DHCP 嗅探

  • DHCP 嗅探计数器

  • 启动时的诊断选项

  • 错误禁用端口重新激活

  • 错误禁用超时

  • EtherChannel

  • EtherChannel – 灵活的 PAgP

  • EtherChannel 保护

  • 回退桥接

  • Flex 链路双向快速收敛

  • Flex Link VLAN 负载均衡

  • Flex 链路接口抢占

  • GOLD – 通用在线诊断

  • IEEE 802.1ab 链路层发现协议

  • IEEE 802.1s – 多重生成树(MST)标准兼容

  • IEEE 802.1s VLAN 多重生成树

  • IEEE 802.1t

  • IEEE 802.1W 生成树快速重新配置

  • IEEE 802.1x 认证失败时开放

  • IEEE 802.1x 认证失败 VLAN

  • IEEE 802.1x VLAN 分配

  • IEEE 802.1x 唤醒 LAN 支持

  • IEEE 802.1x 认证器

  • IEEE 802.1x 多域认证

  • IEEE 802.1x 与端口安全

  • IEEE 802.1x RADIUS 计费

  • IEEE 802.3ad 链路聚合(LACP)

  • IEEE 802.3af 以太网供电

  • IGMP 快速离开

  • IGMP 第 1 版

  • IGRP

  • IP 电话检测增强

  • IP 电话增强 – 物理环路检测

  • IPSG(IP 源保护)

  • 巨型帧

  • L2PT – 第二层协议隧道

  • MAC 认证绕过

  • MLD 嗅探

  • 多播 EtherChannel 负载均衡

  • NAC – L2 IEEE 802.1x

  • NAC – L2 IP

  • NAC – L2 IP 与认证失败时开放

  • 基于数据包的风暴控制

  • 每端口每 VLAN 流量控制

  • 端口安全

  • 私有 VLAN 端口的端口安全

  • 私有 VLAN

  • QoS 策略通过边界网关协议(QPPB)传播

  • 快速每 VLAN 生成树(Rapid-PVST)

  • 减少的 MAC 地址使用

  • 远程 SPAN(RSPAN)

  • 智能端口

  • 生成树协议(STP) – 环路保护

  • 生成树协议(STP) – 端口快速 BPDU 过滤

  • 生成树协议(STP) – 端口快速支持中继链路

  • 生成树协议(STP) – 根保护

  • 生成树协议(STP) – 上行链路负载均衡

  • SRR(有形轮询)

  • 热备份主管端口使用

  • STP 系统日志消息

  • 交换数据库管理器(SDM)

  • 中继链路故障转移

  • 可信边界(为 CDP 设备扩展信任)

  • 单播 MAC 过滤

  • 单向链路检测(UDLD)

  • VLAN 访问控制列表(VACL)

  • VLAN 感知端口安全

  • 加权尾丢弃(WTD)

Cisco IOU L2 镜像中的不支持功能

据说 IOU 支持大约 90%的实际 Cisco Catalyst 交换机功能。以下功能可能不被 IOU L2 镜像支持。然而,由于 Cisco 负责更新 IOU 镜像,实际情况可能有所不同。

  • DHCP 嗅探

  • ISL 中继

  • L3 Etherchannel

  • MLS QoS

  • 端口安全

  • 私有 VLAN

  • QinQ

  • SPAN/RSPAN/ERSPAN

  • UDLD

  • 语音 VLAN

posted @ 2025-11-26 09:17  绝不原创的飞龙  阅读(0)  评论(0)    收藏  举报