えんでぃの技術ブログ

えんでぃの技術ブログ

ネットワークエンジニアの視点で、IT系のお役立ち情報を提供する技術ブログです。

GNS3の概要

gns3_topology

お伝えしたいこと

GNS3とはどんなソフトかを簡単にご紹介します。
また、GNS3のインストール手順についても軽く触れます。

GNS3の具体的な操作方法については、本記事では紹介しません。

GNS3とは

GNS3を略さず言うと、Graphical Network Simulator 3です。
その名の通り、GUIでネットワークをシミュレーションできるソフトウェアです。
https://www.gns3.com/

ネットワーク機器やLinux/Windowsなどの仮想版を起動し、GUI上で配線して通信させることができます。
内部的にはKVMVirtualBoxVMware Workstation PlayerやDockerと連携することで、仮想マシンやコンテナ版のネットワーク機器を再生する仕組みになっています。

GNS3の画面イメージは以下のとおりです。

gns3_ui

GNS3は、商用インフラにおけるネットワークサービス提供を想定したツールではありません。
ハンズオンを通してネットワーク機器のコマンドを試したり、プロトコルの動作を理解するための学習ツールです。

GNS3のユースケース

GNS3は、以下のような場面で役に立ちます。

  • 手を動かしながらネットワーク技術を学習する
  • お試しで構成を組んでみて、実際に動くか確認する
  • プロトコル、コマンド、API、自動化の動作を確認する

GNS3の良いところ

仮想マシンを起動するだけであれば、VirtualBoxKVMなどで十分です。
ではなぜGNS3を使うのが良いかと言うと、理由は以下が挙げられると思います。

複雑な物理構成を再現できる

GNS3は1:1のケーブル結線を容易に再現できます。
またGUIが物理構成図の役割を果たしており、ネットワークの全体像を俯瞰しながら操作できるので快適です。

これらの特徴により、GNS3であれば複雑な物理構成も容易に再現できます。

VirtualBoxを直接操作して、UDP Tunnel機能で複雑な構成を組むのはとても大変です。

安定した動作

GNS3が初めてリリースされてから10年以上経っています。
製品不具合や動作の重さなどは初期のバージョンから改善されており、GNS3そのものは安定して動作します。

もちろん注意すべき点はいくつかあります。

  • GNS3 GUI上の設定変更やケーブル結線は、必ず両側の電源をOFFにしてから行う
    • この手のトラブルは、大抵VM再起動、GNS3再起動、ホストマシン再起動のいずれかで直る
  • 文字化けの原因になるので、VM名やディレクトリパスの日本語表記は極力避ける
  • Windowsファイアウォールに必要な通信が拒否された場合は、許可ルールの追加が必要

数々の便利機能との連携

以下の機能は仮想アプライアンスを建てずに利用可能です。
主役がルータやファイアウォールロードバランサーの場合、L2スイッチや疎通確認用端末にあまりメモリリソースを割けない場合もあります。
そんなとき、以下のL2スイッチや仮想パソコン機能が役に立ちます。

  • 組み込みL2スイッチ
    • Dynamipsの機能
    • VLAN設定可能なソフトウェアベースのL2スイッチ
    • メモリ消費が少ない
  • VPCS (Virtual PC Simulator) との連携

Wiresharkとの連携

GNS3上でケーブルを右クリックして、該当箇所のパケットキャプチャを取得することができます。
これにより、プロトコルの詳細な動作の確認や、トラブルの切り分け調査を手軽に行うことができます。

物理ネットワークではネットワーク機器にトラフィックミラーリングのための設定を入れ、パケットキャプチャ用の端末を接続したりします。
GNS3では、そのような煩わしい操作は一切不要です。

マルチベンダー

GNS3は、仮想マシンやコンテナであれば何でも追加可能です。
GNS3は特定のネットワーク機器OSに縛られません。
それどころか、LinuxWindowsサーバなども追加可能です。

GNS3は、ブリッジ接続にも対応します。
すなわち、GNS3内部で動作している仮想アプライアンスを、ホストPCとケーブル結線された物理ネットワークと通信させることも可能です。
物理ネットワーク機器が検証の主役である場合にも、仮想アプライアンスとルーティングプロトコルなどをやり取りさせるような検証でGNS3を役立てることができます。

Linked base VM

GNS3上にArista vEOSを3台追加する場合、事前にVMを3台構築しておく必要はありません。
linked base VM機能を有効化すれば、GNS3トポロジ上にVMを追加するたびに、テンプレートとして事前登録したVMが自動的にクローンされます。

ユーザーは、同じVMを何台もGNS3トポロジに追加することができます。
その際、クローン操作を意識する必要はありません。

GNS3と似たソフトウェア

GNS3と似たような機能を持つソフトウェアとしては、Cisco Packet TracerやCML (Cisco Modeling Lab)などが挙げられます。
これらの製品と比較したGNS3の強みは、無料かつマルチベンダーであることだと思います。
詳細はGNS3の公式ドキュメントにも説明があります。

GNS3 Documentation - What is GNS3? - #GNS3 Comparisons

GNS3のアーキテクチャ

GNS3は、内部的にはクライアントとサーバーに分かれます。
GNS3クライアントがGUI画面を、GNS3サーバーが内部処理を担当します。

名称 役割
GNS3クライアント
(gns3-gui)
  • GUI画面を提供する
  • ユーザーの操作をGNS3サーバに伝える
  • GNS3サーバの処理結果をGUI画面に反映する
GNS3サーバ
(gns3-server)
  • デフォルトではTCP3080をリッスンする
  • GNS3の内部処理全般を担当する
  • 各種外部ツールとの連携を担当する

gns3_summary

GNS3の構成パターン

基本的には、GNS3クライアントとGNS3サーバを同じマシンにインストールしてしまうのが最も簡単です。
WindowsMacにインストールすると、こちらの構成になります。
マニュアル通りに操作すれば、難なくインストールできる簡単さが特徴です。

別の使い方として、LinuxマシンにGNS3サーバと連携ソフト (KVMやVPCSなど) のみをインストールして、GNS3クライアント複数台からネットワーク越しにアクセスさせる構成も可能です。
この構成の組み方はマニュアルに全て書いてあるわけではないので、多少は手順の検討が必要になります。
この構成のメリットは、私の理解では2つあると思います。

  • GNS3クライアント側の要求スペックが低くなる
  • GNS3サーバに配置した仮想マシンのテンプレート、GNS3プロジェクト (≒GNS3上で作成したトポロジ)などを複数のユーザー間で共有できる

個人学習においてGNS3を使う場合は、基本的には前者の「GNS3クライアントとGNS3サーバを同じマシンに同居させる構成」のほうが快適だと思います。
パソコンのスペックが小さい場合には、別途共用の物理サーバにGNS3サーバをインストールする構成を取ることもあると思います。

GNS3の動作要件

GNS3の動作要件は、以下のURLに書いてあります。
https://www.gns3.com/software

OS

Windows, Mac, Linuxに対応しています。

動作要件という観点では、Linuxのどのディストリビューションも含まれます。
しかしGNS3公式でパッケージリポジトリを管理し、インストール方法も公式ドキュメントで案内されているのはUbuntuDebian系のディストリビューションのみです。

Fedoraの場合、Fedora公式のリポジトリからdnfでインストール可能です。
Arch系の場合はAUR (Arch User Repository) 経由でインストール可能です。

しかしいずれの場合も、一部ソースコードビルドによるインストールも伴います。
Fedoraについては、次の記事で詳細な手順を示します。

その他ハードウェアスペック

CPUの仮想化支援機能が有効化されていることというのが重要です。
具体的には、AMD AMD-V/RVI, またはIntel VT-X/EPIのことです。
今どきのAMD、またはIntel製のCPUであれば問題ないと思います。
BIOS/UEFIの設定で仮想化支援機能が無効化されていないかをご確認ください。

他にもRAMサイズやディスク空き容量などに言及がありますが、基本的には大きければ大きいほど良いです。
仮想マシンを動かしますので、RAMサイズは8GiB以上ないと結構厳しいのではないかと思います。

GNS3のインストール方法

以下にOSごとのGNS3のインストール方法の概略を示します。
どのOSでも共通で、VirtualBoxやDockerなどの仮想化ソフトは別途インストールする必要があります。

Windows

以下公式サイトからAll-in-oneインストーラをダウンロードして実行します。
GNS3 - Download GNS3

Solar PuttyやSolarwindsのツールセットもおすすめされますが、これらのツールを導入する必要はありません。

Solar PuttyTeratermなどで置き換え可能です。
Teratermを使う場合の手順は、以下のサイトが参考になります。

なおWindowsでGNS3を動かす場合、WindowsファイアウォールによってGNS3の機能がブロックされないようご注意ください。
Windowsファイアウォールの規則にない通信が発生した場合、デフォルトではポップアップが表示されるはずです。
そのポップアップにおいて、GNS3やDynamipsなどのプログラムの通信が出たときは許可すれば、問題を回避できると思います。

ポップアップの画面で通信を拒否してしまった場合はファイアウォールにdenyルールが追加されてしまいます。
その場合は、手動でそのdenyルールを削除する必要があります。

公式のインストール手順はこちらです。
GNS3 Windows Install

Mac

以下公式サイトからGNS3のインストーラをダウンロードします。
GNS3 - Download GNS3

インストーラをダブルクリックで起動し、GNS3のアイコンをApplicationsフォルダにドラッグします。
Macのお作法として、初回起動時はApplicationsフォルダ内のGNS3アイコンをダブルクリックして起動する必要があります。

GNS3の初回起動時、uBridgeのアクセス権限を付与する旨のポップアップが出るので、許可するようにしてください。

Macのバージョンによっては、OSのセキュリティ機能によって追加の操作が必要になる場合があります。
何かつまづいた場合は、以下の公式手順をご確認ください。
GNS3 Mac Install

Linux

Ubuntu/Debianについては公式サイトにインストール方法があります。
Ubuntuの場合は、PPAを追加してapt installする手順になっています。
GNS3 Linux Install

他のディストリビューションについては、公式の説明はありません。
しかし、以下の記事を参考にすればインストールできると思います。

Fedora35については私も動作確認しました。
Fedoraに対するGNS3のインストール手順については、FedoraへのGNS3インストール手順でも詳しく説明します。

(参考) GNS3 VM

GNS3 VMは、GNS3公式で配布されているUbuntuのイメージです。
このUbuntuにはGNS3サーバが入っています。

GNS3 VMVMware Workstation PlayerやVirtualBoxなどにインポートし、GNS3クライアントの設定でGNS3 VMを有効化することで使えるようになります。

WindowsMacなどの非LinuxマシンでQEMUを使いたい場合には使うかもしれません。
ただ、多くの場合GNS3 VMは使わなくて良いのでは...と思います。
QEMUを使わなくても、VirtualBoxで事足りるためです。

むしろ、GNS3クライアント起動のたびに毎回GNS3 VMが自動で立ち上がり、GNS3 VMの起動が完了するまで待たされるようになります。

GNS3 VM上で仮想マシンを動かすために、GNS3 VMにCPU/RAM/ディスク等のリソースを割り当てる必要があります。
非力なマシンでは、このリソース消費が結構大きいです。

したがって、私個人としてはGNS3 VMの利用をあまりおすすめはしません。
公式ではおすすめしていますが、これはGNS3 VMを利用者が使うことで環境差異をなくし、動作不備を防止するためだと理解しています。
GNS3をローカルでトラブルなく動かせている方に関しては、GNS3 VMはほぼ必要ありません。

まとめ

GNS3の概要を紹介しました。
GNS3のインストール方法や使い方については、GNS3タグの記事をご確認ください。

次の記事

Fedoraに対するGNS3のインストール手順を紹介します。