基于 Dynamips/Dynagen 的 Cisco 网络模拟实验环境,支持自动化配置和管理。
.
├── ios/ # Cisco IOS 镜像文件
├── net/ # 网络拓扑配置文件 (.net)
├── configs/ # 路由器配置文件保存位置
├── working/ # Dynamips 工作目录
├── labs/ # 实验目录
│ ├── lab-template/ # 实验模板
│ └── README.md # 实验使用说明
├── utils/ # 工具脚本
│ ├── auto_config.py # Python 自动配置工具
│ └── lab_utils.sh # Bash 工具函数
├── docs/ # 文档
│ └── tutorial.md # Dynamips/Dynagen 教程
├── startlab.sh # 实验环境管理脚本
├── requirements.txt # Python 依赖
└── README.md # 项目说明
cd ~/cisco-lab
./startlab.sh# 1. 安装依赖
pip3 install -r requirements.txt
# 2. 进入实验目录
cd labs/lab-template
# 3. 启动实验环境
./start.sh
# 4. 在另一个终端中自动配置设备
./configure.sh- c2600-i-mz.121-3.T.bin - Cisco 2600
- c2691-advsecurityk9-mz.124-11.T2.bin - Cisco 2691
- c3640-js-mz.124-10.bin - Cisco 3640
- c7200-is-mz.122-37.bin - Cisco 7200
- bupt-sw.net - BUPT 交换机实验(2个交换机 + 3个PC)
- bupt_rt.net - BUPT 路由器实验(2个路由器 + 2个PC)
- router-with-tap.net - 路由器 + TAP 接口实验
- lab-template/ - 实验模板,包含完整的自动化配置示例
查看 labs/README.md 了解如何创建和管理实验。
在 Dynagen 控制台中可以使用以下命令:
help # 显示帮助信息
list # 列出所有设备
start /all # 启动所有路由器
stop /all # 停止所有路由器
console R1 # 连接到 R1 的控制台
telnet R1 # 使用 telnet 连接到 R1
reload R1 # 重启 R1
save /all # 保存所有路由器配置
suspend R1 # 暂停 R1
resume R1 # 恢复 R1
idlepc get R1 # 获取 R1 的 idle-pc 值(降低 CPU 占用)
idlepc set R1 0x60a88eb0 # 设置 R1 的 idle-pc 值
show R1 # 显示 R1 的详细信息
=> console R1
# 在另一个终端中
telnet localhost 2001 # 连接到 R1
telnet localhost 2002 # 连接到 R2
telnet localhost 2003 # 连接到 R3退出 telnet:按 Ctrl + ],然后输入 quit
Idle PC 是降低 CPU 占用的关键!
- 启动一个路由器实例
- 等待路由器完全启动
- 在 Dynagen 控制台中执行:
=> idlepc get R1 - 选择一个标记为
[*]的值 - 将该值添加到 .net 配置文件中:
[[7200]] idlepc = 0x60a88eb0
=> idlepc get R1
Please wait while gathering statistics...
0x60a88eb0 [*]
0x60a88f20
0x60a89100 [*]
...
选择标记为 [*] 的值通常效果最好。
在 ~/cisco-lab/net/ 目录创建新的 .net 文件:
nano ~/cisco-lab/net/my-topology.net[localhost]
workingdir = /home/yokumi/cisco-lab/working
[[7200]]
image = /home/yokumi/cisco-lab/ios/unzip-c7200-is-mz.122-37.bin
ram = 256
npe = npe-400
# idlepc = 0x60a88eb0 # 设置后取消注释
[[ROUTER R1]]
model = 7200
console = 2001
slot0 = PA-FE-TX
[[ROUTER R2]]
model = 7200
console = 2002
slot0 = PA-FE-TXSee the LICENSE file for more details.
python3 utils/auto_config.py <端口> <配置文件>
# 示例:配置控制台端口 2001 的设备
python3 utils/auto_config.py 2001 configs/R1.txt使用结构化实验的 configure.sh 脚本可以自动并行配置所有设备。详见 labs/README.md。
提供交互式菜单管理实验环境
使用 telnet 自动配置设备,支持异步并发
提供进程管理、状态查看、工作目录清理等功能
- Dynamips/Dynagen 教程 - 完整使用教程
- 实验使用指南 - 结构化实验创建和管理
CPU 占用率过高: 设置正确的 idle-pc 值
无法连接控制台: 检查端口和 Dynamips 状态
netstat -tlnp | grep 2001
ps aux | grep dynamips配置脚本无效: 确保设备已完全启动(等待 30 秒),检查日志 logs/*.log