在 Linux 下编译安装 Dynamips 和 Dynagen 搭建 Cisco 实验环境

894 字
4 分钟
在 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
Architecturex86_64
CPUIntel(R) Xeon(R) Platinum 8369HC
内存22G

1.2 安装依赖#

在开始编译 Dynamips 之前,需要安装必要的编译工具和开发库:

Terminal window
sudo apt-get update
sudo apt-get install -y build-essential cmake git
sudo apt-get install -y libelf-dev libpcap-dev

2. 编译和安装 Dynampis#

2.1 下载源代码#

Dynamips 是目前仍在维护的项目,我们从 GitHub 获取最新版本:

Terminal window
git clone https://github.com/GNS3/dynamips.git
cd dynamips

2.2 配置编译选项#

Dynamips 支持两种代码版本:

  • stable(稳定版):推荐大多数用户使用,兼容性好(推荐)
  • unstable(开发版):包含更多优化,但在某些平台可能不稳定

创建 build 目录并运行 CMake:

Terminal window
mkdir -p build
cd build
cmake ..
# 推荐编译稳定版
cmake .. -DDYNAMIPS_CODE=stable
# 如需自定义安装路径(可选)
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local

2.3 编译和安装#

Terminal window
# 编译
make
# 编译(使用多核加速)
make -j$(nproc)
# 安装到系统
sudo make install

2.4 验证安装#

Terminal window
which dynamips
dynamips -h

输出形如:

3. 安装 Dynagen#

Dynagen 是 Dynamips 的前端管理工具,虽然已经不再维护,但仍是管理 Dynamips 最简单高效的工具之一。我将安装最后的稳定版本 0.11.0。

3.1 下载 Dynagen#

Terminal window
cd ~/downloads
wget 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 解压和安装#

Terminal window
# 解压
tar -zxvf dynagen-0.11.0.tar.gz
cd dynagen-0.11.0

Dynagen 0.11.0 是纯 Python 脚本,不需要编译。我们将其复制到系统目录:

Terminal window
# 复制到 /opt
sudo cp -r ~/downloads/dynagen-0.11.0 /opt/dynagen
# 设置权限
sudo chmod +x /opt/dynagen/dynagen
sudo chmod 644 /opt/dynagen/*.py
# 创建软链接
sudo ln -s /opt/dynagen/dynagen /usr/local/bin/dynagen

3.3 验证安装#

Terminal window
which dynagen
# 查看帮助
dynagen -h

4. 配置实验环境#

4.1 创建目录结构#

为了更好地组织文件,我创建一个专门的实验环境目录(仿照学校提供的 Windows 版的结构):

Terminal window
mkdir -p cisco-lab/{ios,net,configs,working}

说明如下:

Terminal window
.
├── configs # 路由器配置文件自动保存位置
├── ios # 存放 Cisco IOS 镜像文件
├── net # 存放网络拓扑配置文件(.net 文件)
└── working # Dynamips 运行时工作目录

4.2 准备 IOS 镜像#

将 Cisco IOS 镜像文件复制到 ~/cisco-lab/ios/ 目录下。我直接使用学校提供的镜像:

  • 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

注:Cisco IOS 镜像受版权保护,请确保您有合法的使用权限。可以通过从 Cisco 官方网站下载等渠道获取。

4.3 配置防火墙(可选)#

如果需要远程访问实验环境,需要开放相应端口:

Terminal window
# 安装 iptables-persistent
sudo 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

重启防火墙:

Terminal window
sudo service iptables-persistent restart
# 或
sudo systemctl restart netfilter-persistent

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

在 Linux 下编译安装 Dynamips 和 Dynagen 搭建 Cisco 实验环境
https://blog.yokumi.cn/posts/setting-up-a-cisco-lab-on-linux-using-dynamips-and-dynagen/
作者
Yokumi
发布于
2025-10-31
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
BUPT 计网实践不完全指北
专业学习计算机网络实践这门课每个老师使用的仿真器并不相同,如果你有幸选了张海旸老师的课,那么恭喜你,你将穿越回 2007 年,和 BUPT 的历届计算机学子一起,使用原本在 Windows XP 系统上构建的仿真器 Dynamips 进行实验,由于年代久远,实验中发生不稳定现象也是常有的事。
2
漫游计算机网络之情景篇
专业学习PSTN ,即 Public Switched Telephone Network ,公用交换电话网。 交换局和交换局之间,使用光纤连接。 中继线上传输的是数字信号,其中用到了时分复用技术,包括: 用户家里的电话和电脑都通过电话线,其中,电脑的数字信号先经过 ADSL Modem 转换为模拟信号,然后和语音信号一起经…
3
漫游计算机网络之设备篇
专业学习简单来说,网关是一种能连接两个不同网络的设备,它在网络层或更高层起作用,负责协议转换、地址转换、路由转发等功能。 你可以简单的理解为,所有网关都是路由器,不过路由器并不一定是网关。 NAT ,即 Network Address Translation ,网络地址转换。
4
漫游计算机网络之技术篇
专业学习其实完全可以放在《协议篇》里,确信。不过为方便对比分析,所以单开一篇 来水 了。 即答:数据链路层 and 传输层; ARQ 技术,即 Automatic Repeat Request ,自动重传请求。当物理层出现传输误码时,数据链路层需要对错误进行恢复。
5
漫游计算机网络之协议篇
专业学习其实也是期末复习罢了,只不过取了一个花里胡哨的标题。 本文将自顶向下的梳理计算机网络中每层的协议。 应用层专注为用户提供特定的功能,一般一类服务就对应了一个协议,所以协议繁多。同时,应用层驱动下层工作,但不关心数据是如何传输的,工作在操作系统的用户态。

评论区

文章目录