Kathara
Katharaはコンテナベースのネットワークシミュレーターです.Debianでは動かしていたのですが,Windowsでも試したのでインストール手順をメモしておきます.
Windowsへのインストール
本家WikiのInstllation GuidesにWindowsのインストール手順に従ってインストールしていきます.
Dockerの準備
Katharaはdockerベースで稼働するため,まだWindowsにDockerをインストールします.バックエンドにwsl2を使う場合はDockerDesktopのバージョンが2.5.0.0以上である必要があります.
Windows版のdocker installerをダウンロードして,インストールします.(CPUのアーキテクチャに注意.x86_64版とarm版を間違わないように)
インストーラを起動すると,最初にConfigurationのダイアログが表示されます.デフォルトのUse WSL2のままでOKをクリックします.

インストールが完了のダイアログで"Close and log out"をクリックして,一端サインアウトします.

再度ログオンして,Docker Desktopを起動します.
Proxyが必要なネットワークの場合,Settings,Resources,ProxiesタブからProxyの設定をしておきます.
デフォルトでシステムのProxyを参照するようですが,PACファイルによる自動設定としている場合は,うまくProxyの設定が反映されないようなので,ここで手動設定してください.

Katharaのインストール
KatharaのReleasesからWindows版のインストーラをダウンロードしてください.(CPUのアーキテクチャに注意.x86_64版とarm版を間違わないように)
インストーラを実行すると,以下のダイアログが表示されるので,適宜設定してNextをクリックしてください.






Katharaの起動
プログラムにKatharaのアイコンが登録されていますが,起動はアイコンをクリックするのではなく,PowerShellからKatharaを起動します.

Kathara実行環境の確認
kathara checkを実行する.問題なければ Container fun successfullyが表示されます.

Katharaを試す
Katharaはコンテナを利用してルータや端末のインスタンスを立ち上げますが,事前に設定ファイルを準備することで,複数のインスタンスから構成されるネットワークを手軽に構築できます.設定ファイルの例はKathara-Labsで公開されています.
basic-ipv4
Kathara-Labsで公開されているbasic-ipv4を試してみましょう.このネットワークはルータ2台,端末3台で構成されています.

(図は https://github.com/KatharaFramework/Kathara-Labs/blob/main/main-labs/basic-topics/static-routing/004-kathara-lab_static-routing.pdf より引用)
zipファイルをダウンロードして,展開すると以下のようなファイルが含まれています.

basic-ipv4の実行
Powershell上で展開したフォルダへ移動し,kathara lstartとすると,設定ファイルが読み込まれて実行されます.
設定ファイルに記述されたdocker imageがダウンロードされ,起動されます.
ルーターr1,r2, PC pc1,pc2,pc3のそれぞれのインスタンスに対応するターミナルが開くので,pingなどのコマンドを使って応答を確認します.
pc3(200.1.3.3)からpc1(195.11.14.5)へpingしてみます。
ちゃんとpingの応答が返ってきています.
停止
kathara lcleanでコンテナが停止します。再起動はkathara lrestart
コンテナを廃棄まで行いたい場合は、kathara wipeを実行します.
まとめ
Dockerコンテナを利用したネットワークシミュレーターKatharaのWindows版をインストールして試す流れをまとめてみました.KatharaはPC内の閉鎖環境でネットワークの構築やテストが行えるので,ネットワーク構築を勉強するにはかなり役立ちそうです.また設定ファイルを用意することで複雑なネットワークな構築もできますし,Kathara Labsではネットワークシナリオとして大学の授業で利用している設定ファイルが公開されており,参考になりそうです.
組織で実際に利用しているネットワークをKatharaで再現し,ネットワークの設定変更を事前に検証するなどにも使えそうです.
