公司动态
Containerlab实战系列之八: Cisco IOL 实验案例
把 Cisco IOS 跑进容器——用 IOL vrnetlab 做一次端到端的 Containerlab 实验 导读前七篇我们把 Containerlab 的基础能力部署、cRPD、自动加载配置、抓包、Web 拓扑图、edgeshark逐个拆开讲了。本篇作为系列终章用 Cisco IOL 跑一次端到端实验——把 vrnetlab 构建、YAML 拓扑、Containerlab 部署、Web 拓扑图、edgeshark 抓包全部串起来。IOL 是 Cisco IOS 的 Linux 二进制版本无需虚拟机就能在容器里跑资源占用比 cRPD/Juniper vJunos 还低特别适合做多节点、大规模组网实验。 本文目录一、背景vrnetlab 与 cisco_iol二、准备工作获取 IOL 镜像文件三、用 vrnetlab 构建 Docker 镜像四、编写并启动 Containerlab 拓扑五、访问与配置六、完整工作流回顾Web 拓扑 edgeshark 抓包七、写在最后系列完结一、背景vrnetlab 与 cisco_iolvrnetlab是一个将传统虚拟机VM打包进容器、使其能像容器一样运行的项目。Containerlab 通过集成 vrnetlab实现了在同一个拓扑文件里定义和启动基于 VM 的网络操作系统。cisco_iol是 Cisco IOS / IOS-XE 的 Linux 二进制版本无需虚拟机即可运行。在 Containerlab 中它被识别为cisco_iol类型本质是把 IOL 二进制文件打包进 Docker 容器。⚠️ 重要提示必须使用 Containerlab 官方指定的srl-labs/vrnetlab分支来构建镜像而不是原版 vrnetlab 项目——分支里针对 Containerlab 做了适配。二、准备工作获取 IOL 镜像文件IOL 镜像不是随便下载就能用的需要从Cisco CMLCisco Modeling Labs的参考平台 .iso 文件中提取 IOL 二进制文件文件通常以iol或ioll2为前缀▸IOL用作 L3 路由器▸IOL-L2用作虚拟的 IOS-XE 交换机 提示Cisco CML 是 Cisco 官方的虚拟化实验平台订阅用户可以下载它的 .iso 镜像从镜像里提取 IOL 二进制文件作为本实验的输入。三、用 vrnetlab 构建 Docker 镜像拿到 IOL 二进制后下一步是把它打包成 Docker 镜像——这正是 vrnetlab 的工作。① 克隆 vrnetlab 仓库[rootjmz ~]# git clone https://github.com/srl-labs/vrnetlab.git② 放置并重命名镜像文件将 IOL 二进制文件复制到vrnetlab/cisco/iol目录下查看 README.md 文件按要求用如下格式重命名版本号以实际文件为准▸ L3 镜像cisco_iol-x.y.z.bin▸ L2 镜像cisco_iol-L2-x.y.z.bin[rootjmz iol]# mv x86_64_crb_linux_l2-adventerprisek9-ms.iol cisco_iol-L2-17.16.01.bin [rootjmz iol]# mv x86_64_crb_linux-adventerprisek9-ms.iol cisco_iol-17.16.01.bin③ 执行构建进入vrnetlab/cisco/iol目录运行 make 命令[rootjmz iol]# make docker-image④ 验证镜像使用docker images命令你应该能看到新生成的镜像例如vrnetlab/cisco_iol:17.16.01和vrnetlab/cisco_iol:L2-17.16.01。四、编写并启动 Containerlab 拓扑镜像有了下一步就是写拓扑 YAML、deploy 起来。① 编写拓扑文件cisco.yaml参考 vrnetlabcisco/iol/README.md文件来定义网络拓扑。② 关键参数说明▸kind必须设置为cisco_iol▸type对于 L2 镜像需要显式设置为L2▸links定义节点间的物理连接接口命名遵循Ethernet0/X或e0/X格式⚠️ 注意IOL 的接口以4 个为一组。例如e0/3、e1/0、e1/1分别对应第四、第五、第六个数据接口——这和物理路由器编号习惯不一样写拓扑时容易踩坑。③ 部署实验在拓扑文件所在目录下运行[rootjmz ciscolab]# containerlab deploy -t cisco.yaml五、访问与配置部署完几条关键信息▸默认凭证IOL 节点的默认用户名和密码均为admin▸管理接口Ethernet0/0是管理接口被放置在独立的管理 VRF 中其 IP 由 Containerlab 自动分配▸数据接口拓扑中定义的数据接口如e0/1需要你手动在 CLI 中配置 IP 地址才能转发流量登录到设备[rootjmz ciscolab]# ssh adminclab-cisco-iol-lab-router1六、完整工作流回顾Web 拓扑 edgeshark 抓包到这一步 IOL 已经跑起来了——但 Containerlab 真正的威力是把以下能力一站式集成① 看 Web 拓扑图用上一篇学的containerlab graph命令浏览器直接看 IOL 节点的拓扑视图能拖能点② 集成 edgeshark 抓包在 Edgeshark Web 界面上单击 Wireshark鲨鱼鳍图标就能调用本地 Wireshark 抓取 IOL 节点接口的实时流量——前一篇 edgeshark 集成的全部能力直接复用。 一句话记忆「vrnetlab」做打包「cisco_iol」是载体本篇 系列前 7 篇能力的大综合。Web 拓扑 edgeshark 在 IOL 上照常工作证明 Containerlab 生态的一致性。七、写在最后系列完结Containerlab 实战系列从「介绍」写到「Cisco IOL」共8 篇基本覆盖了一个网络工程师用 Containerlab 调试环境的全流程▸基础介绍、部署▸实验Juniper cRPD、Cisco IOL▸配置自动加载配置▸调试网络抓包、Web 拓扑图、edgeshark 集成整个写下来最大的感受是Containerlab 的生态一致性做得很好——不管你是用 cRPD、Cisco IOL 还是别的网络 OS 镜像所有容器都跑在统一的拓扑描述、统一的 deploy 流程、统一的 Web 视图、统一的抓包接口下。学习 Containerlab 的本质是学一种「网络实验的统一抽象」——把厂商差异藏在 kind/type 后面把通用能力拖拓扑、点抓包、自动配置暴露给工程师。感谢一路读到这里 ❤️ 如果这篇系列对你有帮助欢迎点赞 ·· 转发支持。 如读者朋友有希望拆解的其他 Containerlab 实战案例欢迎评论区留言或私信如更多案例将继续更新本系列— Containerlab 实战系列 · 之八终章· Z 的网络知多少 —