GNS3¶
https://github.com/GNS3/gns3-gui/releases
仮想ネットワークトポロジーを構成できるソフトウェア群。GUIでネットワークトポロジーを描画できるため、直感的にNWを構成できて非常に便利。
ノードを構成する仮想化ソフトウェアとしては、以下が使用できる。
- Dynamips (for Cisco IOS)
- VirtualBox
- VPCS (Virtual PC Simulator)
- QEMU
- VMware
- Docker
追加アイコン設定: https://twitter.com/team_eririn/status/1041355779813470208
GNS3 appliance¶
GNS3はアプライアンスをインポートして使用することができるので、例えばCentOSやUbuntuなどをいちいちインストールしなくても、イメージをダウンロードして使用することができる。
See: Import GNS3 appliance https://docs.gns3.com/1_3RdgLWgfk4ylRr99htYZrGMoFlJcmKAAaUAc8x9Ph8/index.html
- CentOS Cloud Guest appliance: https://docs.gns3.com/appliances/centos-cloud.html
GNS3 API¶
- https://gns3-server.readthedocs.io/en/latest/
- https://www.bernhard-ehlers.de/blog/posts/2018-07-22-gns3-api-auth/
動作確認¶
GNS3 Serverをデーモンで立ち上げて、APIを叩いてkillするまで。
2.2になったら ${HOME}/.config/GNS3/2.2/gns3_server.conf
の可能性あり
$ gns3server --pid /tmp/gns3server.pid --daemon --log /tmp/gns3server.log
$ GNS3_USER=$(grep "user" ${HOME}/.config/GNS3/gns3_server.conf | cut -d " " -f3)
$ GNS3_PASS=$(grep "password" ${HOME}/.config/GNS3/gns3_server.conf | cut -d " " -f3)
$ curl -i -u "${GNS3_USER}:${GNS3_PASS}" http://127.0.0.1:3080/v2/version
HTTP/1.1 200 OK
Connection: close
X-Route: /v2/version
Server: Python/3.5 GNS3/2.1.11
Content-Type: application/json
Content-Length: 47
Date: Thu, 27 Dec 2018 07:08:39 GMT
{
"local": false,
"version": "2.1.11"
}
$ pkill -F /tmp/gns3server.pid
この辺りが使えそう
- /v2/appliances
- /v2/computes
- /v2/symbols
- /v2/projects
VMの起動と停止¶
VMの起動はプロジェクトIDとノードIDが必要になるので、それを取得する。
$ GNS3_PROJECT_NAME=seil_fuji_test
$ GNS3_NODE_NAME=SEIL_1A
$ GNS3_PROJECT_ID=$(curl -s -u "${GNS3_USER}:${GNS3_PASS}" http://127.0.0.1:3080/v2/projects | jq -r ".[] | select(.name==\"${GNS3_PROJECT_NAME}\") | .project_id")
$ GNS3_NODE_ID=$(curl -s -u "${GNS3_USER}:${GNS3_PASS}" http://127.0.0.1:3080/v2/projects/${GNS3_PROJECT_ID}/nodes | jq -r ".[] | select(.name==\"${GNS3_NODE_NAME}\") | .node_id")
$ curl -X POST -d "{}" -u "${GNS3_USER}:${GNS3_PASS}" http://127.0.0.1:3080/v2/projects/${GNS3_PROJECT_ID}/nodes/${GNS3_NODE_ID}/start
$ curl -X POST -d "{}" -u "${GNS3_USER}:${GNS3_PASS}" http://127.0.0.1:3080/v2/projects/${GNS3_PROJECT_ID}/nodes/${GNS3_NODE_ID}/stop
最終更新日: 2021-05-17 02:51:56