OpenWRTとGNS3で簡単ネットワークシミュレータ①

Cisco Packet Tracer がネットワークシミュレータとして有名で入門用に最適ですが、機能に一部制限があったりシスコ製品以外は使えなかったりで不満があると思います。 そこで登場するGNS3ですが、フリーソフトという事もあっていろいろなソフトの組み合わせでハードルが高いので、VirtualBoxでVM化してみました。 GNS3本家のWindows用 all-in-one パッケージはコア部分がLinux-VMでWindows用ソフトと組み合わせて利用するので初心者には初期設定が難しいと思います。
また、各ノードにIOS-XRv-9000 とか使いたい所ですがノードあたりのメモリが３ＧＢ以上必要となり普通のＰＣでは複数ノードのシミュレーションが出来ません。 OpwnWRT やVyOS を利用してノードあたり500MBくらいで動かしたいと思います。

# VirtualBox Install とOVA ファイルのインポート
一般的なＣＰＵ４コア以上でメモリ８ＧＢ以上のＰＣが必要です。 Windows上でLinuxを利用するためにVirtualBoxというOracle製のフリーソフトをインストールします。 ~~最新の7.0だとQEMUが動かないので~~ 以下のURLから 6.1 をダウンロードしてインストールしてください。

https://www.virtualbox.org/wiki/Download_Old_Builds/

[OVAファイル](https://pub-5d6f4b49b06a4190bdb5aa313c37d0a8.r2.dev/Deb10GNS-OpenWRT.ova)をダウンロードをしてください。ファイルサイズが 1.8 GBあるのでネット環境によっては時間がかかると思います。
VirtualBoxを起動して、ファイルメニューの「仮想アプライアンスのインポート」で、右のフォルダアイコンをクリックして、ダウンロードしたDeb10GNS-OpenWRT.ova のファイルを選択してください。

最新の 7.0.12 で動作する事を確認しましたが、VirtualBoxインストール時にエラー「Missing Dependencies Python Core / win32api」が出ます。 無視してもGNS3 の起動に影響は無いようなのでPython のインストールはしていません。
6.1 や7.0 に関わらず、OpenWRTやVyOS などのQEMUで起動時エラーへの対応方法を別記事にまとめました。

https://qiita.com/nsan/items/cba5955475711b75cf83

VirtualBoxの右の画面でDeb10GNSを選択して、起動<font color="lime">➜</font> します
起動するとLinux GUI画面が表示されます。画面が小さい場合は「表示」メニューの「フルスクリーンモード」にするディスプレイ全体が利用可能です。
フルスクリーンモードだと本体Windowsの操作不可になりますが、マウスカーソルを画面下の方に持って行くとVirtualBoxのメニューが表示されます。もう一度、「フルスクリーンモード」をクリックで戻ります。

# GNS3を起動してプロジェクトを開く
左の①GNS3 アイコンをダブルクリックして起動します。Project選択画面で、②Projects Library タブをクリックして既存のProject を選択できます。
例として「C01-OpenWRT-OSPF」を選択して「OK」をクリックして開きます
![GNS3-Open.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1412785/1c5d0c81-cbbe-a07b-cd94-83232de427b3.png)
**Q01 - 03 はJANOG の過去問を参考に問題を作ってみました。**

## GNS3 Porject の仮想サーバ／ルータを起動
各サーバノードを右クリックしてメニューを表示してStart とすると起動します。また、画面上部の<font color="lime">▶</font> をクリックして全て起動する事ができます。
VR1のVyOSなどは起動に90秒以上かかりますが、右クリックメニューから「Console」を選択すると起動時のコンソール画面が表示できます。

## 仮想サーバのConsole
Debian10 Xfce4 のターミナルで各仮想サーバのコンソールが使えます。
既にターミナルが起動している場合は、タブが増えるだけでターミナル画面が上がって来ないのでご注意ください

## 本体Windows からのネットワーク接続
192.168.56.0/24 は本体Windows も接続してる仮想ネットワークです。Deb10 Linux は192.168.56.5 ユーザ名gns3 パスワードgns3 でSSH ログイン出来ます。また、この例のC01 では、仮想サーバのOpenWRT WR1 WR2 にもSSH やHTTP でアクセスする事ができます。root パスワード無しです。

## C01-OpenWRT-OSPF
C01 はOpenWRTでLAN側はVRRP(KeepAlived)でWAN側をOSPFで二重化する構成です。 VRRPはWeb-uiが使えるのでService-Keepalivedで設定しています。 また各インターフェースのIPアドレスやFirewall rule をWeb-uiで設定しています。 OSPFは FRRouting のパッケージを追加してコマンドラインで設定しています。
![GNS3-OpenWRT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1412785/a46fd7b6-0eb3-9ed4-dcd5-cdaa67538c84.png)

WR1を右クリックしてコンソール画面出力
```
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 23.05.2, r23630-842932a63d
 -----------------------------------------------------
root@OpenWrt1:/# vtysh

Hello, this is FRRouting (version 8.5.1).

OpenWrt1# show ip ospf neighbor 

Neighbor ID     Pri State           Up Time   Dead Time Address         Interface
192.168.56.12     1 Full/DR         2m59s       30.274s 192.168.56.12   br-lan:192.168.56.11
192.168.30.2      1 Full/Backup     1m41s       38.909s 192.168.10.2    eth1:192.168.10.1

OpenWrt1# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,

O   192.168.10.0/24 [110/10] is directly connected, eth1, weight 1, 00:04:50
C>* 192.168.10.0/24 is directly connected, eth1, 00:04:55
O>* 192.168.20.0/24 [110/20] via 192.168.56.12, br-lan, weight 1, 00:03:58
O>* 192.168.30.0/24 [110/110] via 192.168.10.2, eth1, weight 1, 00:02:42
O   192.168.56.0/24 [110/10] is directly connected, br-lan, weight 1, 00:04:50
C>* 192.168.56.0/24 is directly connected, br-lan, 00:04:55
```

次回はOpenWRT編です

https://qiita.com/nsan/items/b75743f7cdf945f2dfab