ネットワークはインターネットの根幹です。最近は Wi-Fi というか無線 LAN が当たり前に使えていますが、有線 LAN で DHCP も無い頃から考えると、とても便利にな世界になりました。

そこで、基本的なネットワークの仕組みを検証するにあたり、GNS3 (Graphical Network Simulator 3) を Azure VM にインストールして使ってみました。

GNS3 をインストールする Azure VM を作成

prefix=mnrgns3
region=japaneast

az group create \
  --name ${prefix}-rg \
  --location $region

az vm create \
  --resource-group ${prefix}-rg \
  --name ${prefix}-vm \
  --os-disk-name ${prefix}-vmOSDisk \
  --image Ubuntu2204 \
  --size Standard_B1s \
  --admin-username azure \
  --generate-ssh-keys \
  --nsg-rule NONE \
  --public-ip-address-dns-name ${prefix} \
  --storage-sku Standard_LRS

az network nsg rule create \
  --resource-group ${prefix}-rg \
  --name Allow-SSH \
  --nsg-name ${prefix}-vmNSG \
  --priority 100 \
  --source-address-prefixes $(curl -s inet-ip.info) \
  --destination-port-ranges 22 \
  --access Allow \
  --protocol Tcp

Azure VM に SSH 接続して事前準備

OS の時計を日本時間に設定し、Standard_B1s が 1GB メモリで少々不安なため、スワップメモリを 2GB に設定して OS を再起動します。

ssh azure@$prefix.$region.cloudapp.azure.com

sudo timedatectl set-timezone Asia/Tokyo

sudo sed -i 's/ResourceDisk.Format=n/ResourceDisk.Format=y/' /etc/waagent.conf
sudo sed -i 's/ResourceDisk.EnableSwap=n/ResourceDisk.EnableSwap=y/' /etc/waagent.conf
sudo sed -i 's/ResourceDisk.SwapSizeMB=0/ResourceDisk.SwapSizeMB=2048/' /etc/waagent.conf

sudo reboot

もう一度 Azure VM に SSH 接続して GNS3 をインストール

ssh azure@$prefix.$region.cloudapp.azure.com

cd /tmp

curl https://raw.githubusercontent.com/GNS3/gns3-server/master/scripts/remote-install.sh > gns3-remote-install.sh

sudo bash gns3-remote-install.sh --with-iou --with-i386-repository

以下のメッセージが表示されたらインストール成功です。

=> GNS3 has been installed with success

GNS3 のバージョンは 2.2.53 でした。

$ gns3server -v
2.2.53

一度 Azure VM から抜けて 3080 ポートを SSH トンネル

exit

ssh -L 3080:localhost:3080 azure@$prefix.$region.cloudapp.azure.com

ブラウザで localhost:3080 にアクセス

http://localhost:3080/

アクセス直後の画面です。

azure-gns3-01.png

Hub 1 台、PC 2 台を接続して ping してみたところです。

azure-gns3-02.png

後片付け

exit

az group delete \
  --name ${prefix}-rg \
  --yes

参考

Install GNS3 on a remote server