在 Linux 下编译安装 Dynamips 和 Dynagen 搭建 Cisco 实验环境
写在前面
最终还是花了一点时间把计网实践的实验平台搞到 Linux 下实现了,相比于 Windows,同样配置的路由器,Linux 下 CPU 占用可降低 50% 以上,应该也会更加稳定吧。
本文将详细介绍如何在 Linux (Ubuntu/Debian) 系统下(macOS 等也是类似的,一些依赖的安装略有不同罢了)从源码编译安装最新版 Dynamips,并配合经典的 Dynagen 0.11.0 (停止维护了,后来基本都用 GNS3,但 BUPT 要求,没办法)搭建完整的 Cisco 实验环境。
1. 环境准备
1.1 系统信息
这里贴一个我自己的,内存越大越好。
| 配置项 | 参数 |
|---|---|
| 操作系统 | Ubuntu 20.04.6 LTS |
| Architecture | x86_64 |
| CPU | Intel(R) Xeon(R) Platinum 8369HC |
| 内存 | 22G |
1.2 安装依赖
在开始编译 Dynamips 之前,需要安装必要的编译工具和开发库:
sudo apt-get updatesudo apt-get install -y build-essential cmake gitsudo apt-get install -y libelf-dev libpcap-dev2. 编译和安装 Dynampis
2.1 下载源代码
Dynamips 是目前仍在维护的项目,我们从 GitHub 获取最新版本:
git clone https://github.com/GNS3/dynamips.gitcd dynamips2.2 配置编译选项
Dynamips 支持两种代码版本:
- stable(稳定版):推荐大多数用户使用,兼容性好(推荐)
- unstable(开发版):包含更多优化,但在某些平台可能不稳定
创建 build 目录并运行 CMake:
mkdir -p buildcd buildcmake ..
# 推荐编译稳定版cmake .. -DDYNAMIPS_CODE=stable
# 如需自定义安装路径(可选)cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local2.3 编译和安装
# 编译make
# 编译(使用多核加速)make -j$(nproc)
# 安装到系统sudo make install2.4 验证安装
which dynamipsdynamips -h输出形如:

3. 安装 Dynagen
Dynagen 是 Dynamips 的前端管理工具,虽然已经不再维护,但仍是管理 Dynamips 最简单高效的工具之一。我将安装最后的稳定版本 0.11.0。
3.1 下载 Dynagen
cd ~/downloadswget https://sourceforge.net/projects/dyna-gen/files/dynagen/dynagen-0.11.0/dynagen-0.11.0.tar.gz或者使用其他下载方式获取 dynagen-0.11.0.tar.gz。反正我只找到了这个软件源。
3.2 解压和安装
# 解压tar -zxvf dynagen-0.11.0.tar.gzcd dynagen-0.11.0Dynagen 0.11.0 是纯 Python 脚本,不需要编译。我们将其复制到系统目录:
# 复制到 /optsudo cp -r ~/downloads/dynagen-0.11.0 /opt/dynagen
# 设置权限sudo chmod +x /opt/dynagen/dynagensudo chmod 644 /opt/dynagen/*.py
# 创建软链接sudo ln -s /opt/dynagen/dynagen /usr/local/bin/dynagen3.3 验证安装
which dynagen# 查看帮助dynagen -h
4. 配置实验环境
4.1 创建目录结构
为了更好地组织文件,我创建一个专门的实验环境目录(仿照学校提供的 Windows 版的结构):
mkdir -p cisco-lab/{ios,net,configs,working}说明如下:
.├── configs # 路由器配置文件自动保存位置├── ios # 存放 Cisco IOS 镜像文件├── net # 存放网络拓扑配置文件(.net 文件)└── working # Dynamips 运行时工作目录4.2 准备 IOS 镜像
将 Cisco IOS 镜像文件复制到 ~/cisco-lab/ios/ 目录下。我直接使用学校提供的镜像:
c2600-i-mz.121-3.T.bin- Cisco 2600c2691-advsecurityk9-mz.124-11.T2.bin- Cisco 2691c3640-js-mz.124-10.bin- Cisco 3640c7200-is-mz.122-37.bin- Cisco 7200
注:Cisco IOS 镜像受版权保护,请确保您有合法的使用权限。可以通过从 Cisco 官方网站下载等渠道获取。
4.3 配置防火墙(可选)
如果需要远程访问实验环境,需要开放相应端口:
# 安装 iptables-persistentsudo apt-get install -y iptables-persistent
# 编辑防火墙规则sudo nano /etc/iptables/rules.v4添加以下规则(在 *filter 部分的 COMMIT 之前):
# Dynamips 端口-A INPUT -p tcp -m multiport --dports 7200:7201 -j ACCEPT-A INPUT -p udp -m multiport --dports 7200:7201 -j ACCEPT# 路由器控制台端口-A INPUT -p tcp -m multiport --dports 2000:2100 -j ACCEPT# Dynamips 通信端口-A INPUT -p udp -m udp --dport 10000 -j ACCEPT重启防火墙:
sudo service iptables-persistent restart# 或sudo systemctl restart netfilter-persistent文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!



