☰
90DaysOfDevOps 网络自动化实战(Day 25):Python 驱动网络自动化与 EVE-NG 仿真实验室搭建
2026/10/8 1:53:18 网站建设 项目流程
  • 文档/教程

【免费下载链接】90DaysOfDevOps

This repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.

项目地址:https://gitcode.com/gh_mirrors/90/90DaysOfDevOps
点击查看免费下载

导读

本篇文章来自 90DaysOfDevOps 项目 2022 年度课程的第 25 天,核心主题是Python 网络自动化。文章首先梳理了 Python 之所以成为网络运维自动化事实标准的三大理由(可读性、生态库、高效),随后引出软件定义网络(SDN)、高层编排与基于策略的管理这三类新型网络自动化范式;紧接着进入实战环节,完整演示了如何在 VMware Workstation 中导入 EVE-NG(Community Edition)并完成首轮初始化配置,从而获得一个可反复折腾、可跑通 Python 脚本的虚拟网络实验沙箱。学完本篇,你将能够:理解 Python 在网络自动化中的定位,独立搭建并初始化 EVE-NG 虚拟网络实验环境,并为后续使用 Netmiko、Paramiko 等库编写设备配置脚本打下基础。

注:本仓库中与该主题配套的后续脚本(Paramiko、Netmiko 连接与备份脚本)位于 2022/Days/Networking 目录,可在搭建完成实验室后继续深入练习。

为什么网络自动化离不开 Python

原文开宗明义地指出:Python 是自动化网络运维的标准语言。这并非因为 Python 只能做网络自动化,而是当你搜索各类网络自动化资料时,Python 几乎无处不在——即使不是 Python 本身,往往也是由 Python 编写的工具(例如 Ansible 就是用 Python 实现的)。

文中还交代了作者个人背景:在“学习一门编程语言”阶段,作者因为所在公司使用 Go 开发而选择了 Golang;但若无此特殊原因,Python 会是当时学习语言的默认选项。这从侧面说明:Python 的通用性与易用性,使它成为绝大多数 DevOps/网络工程师进入自动化领域的首选。

可读性与易用性

Python 的语法天然“读得懂”——不需要使用{}来标记代码块起始与结束,缩进即结构。配合 VS Code 这样的强 IDE,几乎零成本即可开始运行第一个脚本。除 VS Code 外,PyCharm 也是值得考虑的 IDE 选择。

库生态:真正的金矿

Python 的扩展性是其核心价值所在:PyPI(Python 包索引)上存在海量针对各类设备与配置场景的库。获取方式很简单——使用pip工具连接 PyPI 并下载安装到本地工作站即可。值得注意的是,Cisco、Juniper、Arista 等网络厂商都开发了官方库,以方便用户访问各自的设备。这是 Python 在网络自动化领域生态优势的直接证据。

强大且高效

对比此前 Go 语言章节的 Hello World 需要约 6 行代码,Python 只需一行:

print('hello world')

综合以上三点,可以很容易理解为什么 Python 通常被视为自动化工作的“事实标准(de-facto)工具”。

从“脚本备份”到“意图化网络”:网络自动化的范式演进

文中强调了一个重要观点:早年间也可能存在脚本与网络设备交互,例如自动备份配置、抓取日志与设备信息。但今天我们讨论的自动化有所不同——网络整体格局已经为自动化思维发生了改变。这种演进体现在三个层次:

  • 软件定义网络(SDN):SDN 控制器承担起向全网所有设备下发控制平面配置的职责。这意味着任何网络变更只需面对单一接触点,不再需要逐台 telnet/SSH 登录设备,也不再依赖容易重复出错、配置不一致的人工操作。
  • 高层编排(High-Level Orchestration):在 SDN 控制器之上再提升一个抽象层级,实现服务级别的编排;并将这个编排层集成到你所选择的平台中,例如 VMware、Kubernetes、公有云等。
  • 基于策略的管理(Policy-based management):你只需要描述“想要什么”——即期望状态(Desired State),系统会自行掌握所有细节并推导出如何达到该期望状态。这正是声明式管理理念在网络领域的体现。

搭建实验环境:为什么选择 EVE-NG

并非每个人都有真实的路由器、交换机等物理网络设备。为了让学习者既能体验上述工具,又能动手学习如何自动化配置网络,原文选择构建一个虚拟实验环境。可选方案包括:

  • GNS3 VM:流行的图形化网络模拟器;
  • EVE-NG(本文选择):Emulated Virtual Environment Next Generation,社区版免费可用;
  • Unimus:严格说不是实验环境,而是一个“有意思的概念”(配置备份与变更管理工具)。

最终选用 EVE-NG 的理由很务实:虚拟环境意味着我们拥有一个沙箱,可以测试许多不同场景,并且能够自由摆弄不同设备与拓扑。全流程将基于 EVE-NG 社区版(Community Edition)完成。

获取镜像:ISO 与 OVF 两种格式

EVE-NG 社区版提供ISO 与 OVF两种格式下载:

  • OVF 格式:可直接导入虚拟机管理程序(hypervisor),本文采用此方式;
  • ISO 格式:可在裸金属服务器上直接安装,无需 hypervisor。

虚拟化平台选择:VMware Workstation

原文使用VMware Workstation PRO(作者通过 vExpert 计划获得许可)进行演示;你也可以使用免费的 VMware Workstation Player,或参考官方文档中列出的其他平台。文中特别提醒:此前的课程中使用的 VirtualBox 在这里不可用——作者在 GNS3 与 VirtualBox 的组合中也遇到过相同问题。因此请优先选择 VMware 系列的 Workstation/Player。

VMware Workstation 中导入 EVE-NG:逐步实操

第一步:解压并导入 OVF

  1. 打开 VMware Workstation,选择菜单File -> Open;
  2. 下载得到的 EVE-NG OVF 镜像位于一个压缩文件内,先解压到独立文件夹,得到完整的 OVF 配套文件组;
  3. 导航到解压位置,开始导入(Import);
  4. 为虚拟机起一个易于识别的名称,并将虚拟机存储到系统上合适的位置。

第二步:调整虚拟硬件与开启嵌套虚拟化

导入完成后,建议将处理器数量调整为 4 核、内存分配调整为 8 GB(最新版本导入后可能已是默认值,若不是请在虚拟机设置中修改)。

关键一步:确保勾选“Virtualize Intel VT-x/EPT or AMD-V/RVI”选项。该选项指示 VMware Workstation 将虚拟化标志透传给客户机操作系统(即嵌套虚拟化)。这正是作者之前在 GNS3 + VirtualBox 组合中遇到问题的根源——尽管 CPU 本身支持该特性。

第三步:开机初始化

开机后你会看到一个初始化命令行界面,此时可使用:

  • 用户名:root
  • 密码:eve

随后系统会要求再次设置 root 密码——这个密码将用于之后 SSH 登录宿主机。接下来按向导依次完成:

  1. 修改主机名(hostname);
  2. 定义 DNS 域名(作者使用了一个示例域名,后续如有需要可再调整);
  3. 配置网络:选择静态(Static)模式,以保证重启后 IP 地址不丢失;
  4. 提供静态 IP 地址:务必选择一个可从你的工作站访问的网段,并补充子网掩码、默认网关与 DNS。

配置完成后系统会自动重启。重启完成后,将静态 IP 地址输入浏览器即可访问 EVE-NG 的 Web 界面(示例截图中地址栏为192.168.169.210/#/login,版本为 2.0.3-112)。

第四步:Web 界面登录与控制台选择

  • Web GUI 默认用户名:admin,密码:eve;
  • SSH 默认用户名:root,密码:eve(若你在初始化时修改过则会以新密码为准)。

在登录后的设置中,作者选择了HTML5控制台(而非 Native),这样在不同设备控制台之间切换时,会在浏览器中打开新标签页,操作体验更流畅。

相关界面截图可参考仓库中的 Day25_Networking1.png(EVE-NG 下载页)与 Day25_Networking11.png(EVE-NG Web 登录界面)。

排障专题:WSL2 与嵌套虚拟化冲突(常见坑)

这是原文记录的典型“兔子洞”问题:作者提到该环境在 VirtualBox 下无法运行,而在 VMware Workstation 下最初也遇到了同样问题——但问题并不出在虚拟化平台本身。

作者在 Windows 机器上运行着WSL2,而 WSL2 似乎会移除在环境中再运行嵌套虚拟化的能力(作者推测它占用了 CPU 的 Intel VT-d 虚拟化方面)。诡异的是,Ubuntu 虚拟机却仍然能正常运行。

解决方案是在 Windows 上以管理员身份执行以下命令并重启系统:

bcdedit /set hypervisorlaunchtype off

注意:关闭 hypervisor 启动类型期间,WSL2 将无法使用。当你需要恢复 WSL2 时,再以管理员身份执行以下命令并重启:

bcdedit /set hypervisorlaunchtype auto

实验室搭建完成之后:接下来做什么

原文在完成 EVE-NG 初始化后,列出了后续课程的核心任务清单,这也是读者接下来的练习路线:

  • 安装 EVE-NG client pack;
  • 向 EVE-NG 导入网络镜像(Images);
  • 构建网络拓扑(Network Topology);
  • 添加节点(Adding Nodes);
  • 连接节点(Connecting Nodes);
  • 开始编写 Python 脚本;
  • 学习telnetlib、Netmiko、Paramiko与Pexpect四类网络自动化工具。

仓库配套脚本速览

本仓库的 2022/Days/Networking 目录已包含上述路线的配套示例,可作为实验室搭建完成后的进阶练习材料(以下脚本中的 IP 对应拓扑中的 R1/SW1~SW4 节点):

  • Paramiko 交互式会话:paramiko_show.py 使用paramiko.SSHClient建立 SSH 连接,通过invoke_shell()进入交互式 shell,依次发送enable、terminal length 0、show ip int b、show arp等命令并接收输出——这正是“登录每台设备执行命令”的传统自动化方式。
  • Netmiko 多设备并发查询:netmiko_con_multi.py 定义了 R1 与 SW1~SW4 共 5 台 Cisco IOS 设备的连接字典(device_type、host、username、password),循环调用ConnectHandler(**device)并执行show ip int brief。Netmiko 在 Paramiko 之上封装了各厂商差异,使“批量查询”简洁得多。
  • Netmiko 批量 VLAN 配置下发:netmiko_sendchange.py 通过net_connect.enable()进入特权模式,再用send_config_set(core_sw_config)将switchport trunk等配置列表一次性下发——这正是“配置自动化”而非“查询自动化”的体现。
  • Netmiko 多设备状态检查:netmiko_con_multi_vlan.py 批量对 SW1~SW4 执行show int trunk。
  • Paramiko 全量配置备份:backup.py 读取 backup.txt 中的设备 IP 清单,逐台 SSH 登录并执行show run,将输出按时间戳命名保存到本地文件——即文中提到的“自动备份配置”类脚本的完整实现。

这些脚本与 Day 25 正文正好构成“环境就绪 → 动手编码”的完整闭环:EVE-NG 提供沙箱拓扑,Python 脚本提供自动化能力。

学习资源

原文列出的资源均为公开的免费教程,覆盖 EVE-NG 入门、网络自动化技能与计算机网络基础,可作为进一步学习的材料(均为外部视频/网站,此处仅转述名称供检索):EVE-NG 入门免费课程、EVE-NG 创建第一个实验、网络自动化必备的 3 项技能、计算机网络全课程、Practical Networking 站点、Python Network Automation 视频。

下一篇内容见 Day 26,将进入 EVE-NG client pack 安装与镜像加载环节。

  • 文档/教程

【免费下载链接】90DaysOfDevOps

This repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.

项目地址:https://gitcode.com/gh_mirrors/90/90DaysOfDevOps
点击查看免费下载
上一篇:终极免费Photoshop AI插件指南:3分钟完成SD-PPP安装与使用
下一篇:SD-PPP:终极Photoshop AI插件,三步让Stable Diffusion触手可及

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询