えんでぃの技術ブログ

えんでぃの技術ブログ

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

FedoraへのGNS3インストール

gns3_topology

前の記事

お伝えしたいこと

FedoraにGNS3クライアントとGNS3サーバをインストールする手順をお伝えします。
ここでご紹介する手順は、以下サイトの内容を元にしています。

Computing for Geeks - How To Install GNS3 on Fedora 35/34/33/32/31

ただし、本ブログの手順は一部アレンジを加えています。
具体的には、以下の通りです。

  • VPCSの最新版をインストールする手順に変更
  • 最小限のパッケージのみをインストールする手順に変更

本ブログでご紹介した手順は、Fedora35、GNS3 2.2.29にて動作確認済みです。

GNS3のインストール

GNS3サーバとGNS3クライアントは導入必須です。
以下のコマンドでインストールします。

sudo dnf install gns3-gui gns3-server

RPMパッケージ版はGNS3公式サイトで直接配布されているものよりも多少バージョンは古いですが、全く問題なく動作します。

外部ツールのインストール

GNS3のインストールに必要なのは、GNS3本体のみです。

しかし、GNS3本体は各種機能を提供するために、様々な外部ツールと連携します。
それらの外部ツールを使う場合には、追加のインストールが必要になります。

全てのツールを一旦入れるか、必要なツールに絞って入れるかはユーザーの好み次第です。
今回、私はWireshark、VPCS、Dynamipsのみ導入することにしました。
仮想マシンを動作させるため、KVMも別途インストールしました。

IOU、Dockerについては、今回はインストールしませんでした。
これらのツールについては、ツールの概要とインストールしなかった理由を中心に紹介します。

Wireshark

(参考) Wiresharkとは

Wiresharkとは、パケットキャプチャの実施と、結果のGUI表示機能を持つアプリケーションです。
GNS3においては、ケーブルを右クリックして該当箇所のパケットキャプチャを取得/確認するためにWiresharkを使います。

一般に、物理的なネットワーク環境では以下の手順でパケットキャプチャを行います。

GNS3においてはそのような面倒な操作は一切不要です。
ケーブルを右クリックしてキャプチャを開始するのみです。

WiresharkとGNS3の組み合わせは非常に便利です。
Wiresharkはぜひインストールしましょう。

Wiresharkのインストール

以下のコマンドでインストールします。

sudo dnf install wireshark

VPCS

(参考) VPCSとは

VPCS (Virtual PC Simulator) は、仮想パソコンのことです。

ネットワークの検証をする際、ネットワーク機器に端末を接続してpingなどの疎通確認を行いたい場面はあると思います。
そんなときに、Linuxの代わりに使えるのがVPCSです。

VPCSは以下の特徴を持ちます。

WEB通信を試したい場合、サーバー役はLinuxを用意しても良いと思いますが、クライアント役をVPCSに任せることでメモリ容量を節約できます。
起動/停止も高速で、あると何かと便利です。
VPCSは、ぜひインストールしましょう。

VPCSは独特のCLIを持ちますが、ネットワーク機器のように?でヘルプを確認しながら使っていればすぐに使い方を理解できるでしょう。

VPCS依存パッケージのインストール

VPCSをインストールするために、gccとmakeをインストールしておきます。

sudo dnf install gcc make

VPCSのインストール

VPCSの公式版はSource Forgeにて配布されていますが、現在はメンテナンスされていないようです。
GNS3 ProjectがVPCSの開発を引き継いでメンテナンスしたものがGitHub上に存在するので、そちらをダウンロードします。
GitHub - GNS3/vpcs - Releases

2022年3月時点の最新版は0.8.2であるため、そちらをダウンロードします。
ブラウザ上でダウンロードリンクのURLを右クリック・コピーし、curlコマンドでtar.gzファイルをダウンロードします。
(※) git clone https://github.com/GNS3/vpcsでダウンロードしても良いですが、厳密にはmasterブランチとv0.8.2タグを持つリリース版には差がある可能性があるのでご注意ください

curl -LO https://github.com/GNS3/vpcs/archive/refs/tags/v0.8.2.tar.gz

tar.gzファイルを展開し、シェルスクリプトを実行することでC言語ソースコードをビルドします。
ビルドの結果、vpcsの実行ファイルが生成します。
このシェルスクリプトが行うのは、基本的にmakegccによるビルドのみです。
カレントディレクトリに*.oファイルとvpcsファイルを生成しますが、他には何もしません。

tar xzf v0.8.2.tar.gz
cd vpcs-0.8.2/src
./mk.sh

生成したvpcs実行ファイルを適切なパスに格納します。
今回は/usr/local/binに格納します(※)
(※) RPMインストールされたときの実行ファイルは、/usr/bin/配下に格納されます。make installpip installなど、他の手段でインストールされた場合は私の知る限り/usr/local/binに格納されます

また、vpcsのmanファイルも用意されているのでこちらも適切なパスに格納します。

sudo cp -i vpcs /usr/local/bin
sudo cp -i ../man/vpcs.1 /usr/local/share/man/man1/

動作確認します。

vpcs -v
# バージョンが表示されること

man vpcs
# manが表示されること

インストールが完了した後は、不要なファイルは削除して問題ありません。

cd ../..
rm -rf vpcs-0.8.2/ v0.8.2.tar.gz

(参考) VPCSのアンインストール

VPCSのインストール時に行った変更は、実行ファイルとmanファイルの配置のみです。
これらのファイルを削除すれば、VPCSをアンインストールしたことになります。

sudo rm /usr/local/share/man/man1/vpcs.1 /usr/local/bin/vpcs

Dynamips

(参考) Dynamipsとは

Dynamipsは、GNS3においては以下の機能を持ちます。

  • Cisco IOSエミュレーター
    • Cisco IOSイメージファイルを持っていれば、仮想Ciscoルータを再現できる
    • イメージファイルの入手が一番のハードル
  • ソフトウェアベースのハブ、L2スイッチが使える

今回は、後者の機能を目的としてDynamipsを導入します。

DynamipsがサポートするL2スイッチはメモリ消費が少なく、気軽に追加できる点が一番の長所です。
また、VLANやDot1Q Trunkingにも対応します。

Dynamipsのインストール

基本的な流れはVPCSの時と同じです。
まず、依存パッケージをインストールします。

sudo dnf install make gcc
sudo dnf install cmake elfutils-libelf-devel libpcap-devel

続いて、以下のコマンドを実行してインストールします。
curlコマンドに指定しているURLは、GitHub上のGNS3/DynamipsのReleaseページ上の "Source code (tar.gz)" のリンクからコピーしたものです。

curl -LO https://github.com/GNS3/dynamips/archive/refs/tags/v0.2.21.tar.gz
tar xzf v0.2.21.tar.gz
cd dynamips-0.2.21/
mkdir build
cd build
cmake ..
sudo make install

任意ですが、ここでinstall_manifest.txtをどこかのディレクトリにバックアップしておきます。
このファイルはDynamipsをインストールした時に配置したファイルパスを記録したもので、Dynamipsをアンインストールする時に必要となります。

とはいえ、install_manifest.txtが手元にない場合ももう一度インストール手順を実行することで再び生成できます。
そのため、バックアップを取ることは必須ではありません。

install_manifest.txtの中身は以下のとおりです。

/usr/local/share/doc/dynamips/ChangeLog
/usr/local/share/doc/dynamips/COPYING
/usr/local/share/doc/dynamips/MAINTAINERS
/usr/local/share/doc/dynamips/README.md
/usr/local/share/doc/dynamips/README.hypervisor
/usr/local/share/doc/dynamips/RELEASE-NOTES
/usr/local/share/doc/dynamips/TODO
/usr/local/share/man/man1/dynamips.1
/usr/local/share/man/man1/nvram_export.1
/usr/local/share/man/man7/hypervisor_mode.7
/usr/local/bin/nvram_export
/usr/local/bin/dynamips

作業用のファイルやディレクトリを削除します。

cd ../..
rm -rf v0.2.21.tar.gz dynamips-0.2.21/

(参考) Dynamipsのアンインストール

Dynamipsのアンインストール手順は、途中まではインストール手順と同じです。

curl -LO https://github.com/GNS3/dynamips/archive/refs/tags/v0.2.21.tar.gz
tar xzf v0.2.21.tar.gz
cd dynamips-0.2.21/
mkdir build
cd build
cmake ..

このタイミングで、今いるbuild/ディレクトリにバックアップ済みのinstall_manifest.txtを配置しておきます。
このファイルがない場合、一旦sudo make installを実行し、install_manifest.txtを生成しましょう。

そして、以下のコマンドを実行することでアンインストールできます。

sudo make uninstall

アンインストール完了後、作業用のファイルやディレクトリを削除します。

cd ../..
rm -rf v0.2.21.tar.gz dynamips-0.2.21/

(参考) KVMのインストール

Linux仮想マシンを動かすために、QEMU/KVMVirtualBoxなどの仮想化エンジンを別途インストールする必要があります。

Linuxの場合は、オープンソースかつ軽快に動作するQEMU/KVMが良いのではないかと思います。
KVMは商用サービスにも利用されることがあり、品質の高さが伺えます。
また、CPUの仮想化支援機能や準仮想化ドライバなどを効率的に利用することから、VMが高速に動作します。

各種CLI/GUIツールも充実していて、操作性も良いです。

KVMのセットアップ手順は過去の記事で紹介していますので、よろしければ参考にしてください。

KVMの初期設定、及びvirsh, virt-installによるVM作成

快適なGUI操作を望む場合は、Cockpitをお試しください。
CockpitはRed Hat社が開発を支援しているオープンソースソフトウェアです。
Cockpit GUI によるKVM操作

一通りセットアップが終わったら、KVM仮想マシンを建ててみましょう。
基本操作の説明は以下の記事にまとまっています。
KVMの基本操作集

GNS3とKVMの連携方法については、別の記事にて紹介します。

(参考) その他のツール

本セクションで紹介するツールについては、今回はインストールを見送りました。
以下のセクションにて、各ツールをインストールしなかった理由について補足します。

これらのツールをインストールしたい場合は、以下の記事を参考にしてください。
Computing for Geeks - How To Install GNS3 on Fedora 35/34/33/32/31

Step 1にて依存パッケージをインストールの上、後は各ツールごとのインストール手順にしたがってご対応ください。

IOU

IOU (IOS on Unix) は、IOSv (Cisco IOSの仮想アプライアンス) とほぼ同等の機能性を持ちます。
IOL (IOS on Linux) とも呼ばれます。
噂によれば、Cisco IOSvよりもバグが少なく、パフォーマンスも良いと聞いたことがあります。

しかし、IOUはCisco社員、またはCisco社パートナーしか入手できないと言われています。
私達が手に入れることはかないませんので、IOUの動作環境を持っていても仕方ありません。

したがって、今回はIOU周りのセットアップも見送りました。

Docker

DockerのRPMパッケージ自体は、gns3-server RPMパッケージの依存関係として自動的にインストールされました。
しかし、私が現状VMしか使わず、コンテナを使っていないのでDockerのセットアップを見送りました。
ネットワーク検証を行うためには、Linuxやネットワーク仮想アプライアンスVMを建てられれば十分であるためです。

今後コンテナの軽量さを活かして何かする機会があれば、Dockerを使い始めることがあるかもしれません。

(参考) 他のOSへのGNS3インストール手順

GNS3が公式でインストールマニュアルを提供しているのは、WindowsMacUbuntuの3種です。
他にもArch LinuxやManjaroでもGNS3をインストールした実績があるそうです。

Fedora以外のOSに対するGNS3のインストール手順については、GNS3の概要 - GNS3のインストール方法も参考にしてください。

まとめ

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

GNS3本体はRPMパッケージで簡単にインストールできます。
GNS3と連携している外部ツールについては、個別にインストールする必要があります。

少々面倒かもしれませんが、手順さえわかってしまえば簡単です。
元の記事で情報提供してくださったJosphat Mutaiさんに感謝します。