Dockerfile 及 Compose-file 下载:https://github.com/iamNCJ/gns3-docker

众所周知 GNS3 是全球有名的一大坨屎网络软件模拟器。广大 cs 学子为了混到学分熟练掌握计算机网络知识,常年使用 GNS3 做实验到要死要活。GNS3 采用了典型的 C/S 架构设计,其运行时需要一个 gns3-server 作为其后端,并通过 web api 在客户端和服务器之间进行通信。一个标准的 GNS3 桌面程序中一般包含了一个 local-server,随程序一起启动。但是在本地直接开启 server 的时候,往往容易受到外部网络的干扰,而虚拟机又显得过于笨重了,因此很自然的想到使用 Docker 来解决这个问题。

首先在 Docker Hub 上找了一圈,没找到特别好的 GNS3 的 image,索性自己写了一个 Dockerfile,反正也没几行。

开起来之后发现 Cloud Node 没法给 VPC 分配 IP 地址。

PC1> ip dhcp
DDD
Can't find dhcp server

这是因为 Docker 的网络接口中,容器的 IP 都是由 deamon 在创建分配的,也就是说 Docker 的虚拟网卡并不会提供 DHCP 服务,这也解释了为啥 VPC 得不到来自 Cloud Node 分发的 IP 地址。

既然 Docker 没有提供 DHCP Server,那么我们可以直接创建一个新的网络接口,然后将一个单独的 DHCP Server 放进这个网络里即可。

说干就干,随手写了一个 Docker Compose-file,测试了一下,真的可以了!

Success

针不戳,顺便发现 GNS3 Server 自带的 Web Panel 还挺好用,所以有一说一,直接一行 docker-compose up -d ,你就可以愉快的写完计网实验了!

Enjoy~