2022-12-29に更新

GNS3 に VyOS 仮想ルーターを追加する長い道のり③ 実践編

本記事は 【アットホームな現場です】🎄★☆ネットワーク系エンジニア★☆アレコレアウトプット★☆🎄 Advent Calendar 2022 17日目の記事だ。

GNS3 という OSS のネットワークエミュレータを、 Cisco の IOS などの取得なしに、無料のライセンス内で利用できるようにしようという話。

環境導入編、イメージ準備編に続く実践編。
以前の投稿はこちら。
https://crieit.net/posts/GNS3-VyOS (① 環境導入編)
https://crieit.net/posts/GNS3-VyOS-63ac561ed5a75 (② イメージ準備編)

実際に、 GNS3 上で VyOS を使ってみよう。

GNS3 プロジェクトを作成

GNS3 を開き、適当なプロジェクトを新規作成(ないし開く)する。

平行して、 GNN3 VM が起動するまで待とう。

VyOS の起動

GNS3 GUI 上で、テンプレート一覧から VyOS のデバイスをドラッグ&ドロップして、プロジェクトに追加する。

デバイスアイコンの右クリックで Configure をクリックしてプロパティを開き、 On close の動作を Save the VM state (休止状態) にしておくとよいだろう。

その後、 デバイスアイコンの再度右クリックで Start を選択し、仮想マシンをスタートさせる。
デバイスアイコンをダブルクリックすると、 コンソールが起動する。 iso ファイルがブータブルディスクになっていてるため、VyOS の起動ログが表示されているはずだ。
ログイン画面が出るまで待つ。

デフォルトの認証情報 (login: vyos, password: vyos) を使ってログインする。

VyOS 仮想 HDD へのインストール

このままでも VyOS として利用できるのだが、 "T2958 DHCP server doesn't work from a live CD" といった問題もあるようなので、一旦仮想 HDD にインストールする。
Permanent installation — VyOS 1.3.x (equuleus) documentation

ログイン後、以下のコマンドを実行し、いくつかの質問に答えれば OK だ。

[email protected]:~$ install image

その後、再起動する。

[email protected]:~$ reboot

再起動前は、 cat /proc/cmdline のカーネルに渡された BOOT_IMAGE/live/vmlinuz となっていたのが、

[email protected]:~$ cat /proc/cmdline # 再起動前
BOOT_IMAGE=/live/vmlinuz boot=live components hostname=vyos username=live nopersistence noautologin nonetworking union=overlay console=ttyS0,115200 console=tty0 net.ifnames=0 biosdevname=0 initrd=/live/initrd.img

再起動後は、 install image の途中で入力したイメージ名のものに変更されていることがわかる。

[email protected]:~$ cat /proc/cmdline # 再起動後
BOOT_IMAGE=/boot/1.3.2/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/1.3.2 console=tty0 console=ttyS0,115200

VyOS の初期設定

VyOS の操作は VyContol に任せたい… が、どうしても VyControl から VyOS にアクセスできるようにするため、以下の 3点 はコマンドで設定する必要がある。

  • インターフェースへの IP の設定
    • 以下の例では、 192.168.11.254/24 に設定
  • DHCP サーバーの起動
    • 以下の例では、 192.168.11.0/24 のサブネットに、 DNS, デフォルトゲートウエイを自分自身、 DHCP の貸し出し範囲を .17 から .126 の範囲で指定
  • (VyControl で操作させるための) HTTP API の有効化
    • API のアクセスキーを my_secret_key (任意の文字列) に設定

このため、 VyOS のコンソールでログインし、以下のコマンドを入れる。

[email protected]:~$ configure
[email protected]# set interfaces ethernet eth0 address '192.168.11.254/24'
[email protected]# set service dhcp-server shared-network-name 'subnet01'
[email protected]# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' default-router '192.168.11.254'
[email protected]# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' name-server '192.168.11.254'
[email protected]# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' range 0 start '192.168.11.17'
[email protected]# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' range 0 stop '192.168.11.126'
[email protected]# set service https api keys id my_id key 'my_secret_key'
[email protected]# set service https certificates system-generated-certificate lifetime '65535'
[email protected]# set service https virtual-host vyos1 listen-address '192.168.11.254'
[email protected]# set service https virtual-host vyos1 listen-port '6443'
[email protected]# set service https virtual-host vyos1 server-name 'vyos1.example.com'
[email protected]# commit
[email protected]# save
[email protected]# exit

これで、 VyOS 側の設定は完了だ。

VyControl の起動

GNS3 GUI 上で、テンプレート一覧から VyControl をドラッグ&ドロップして、プロジェクトに追加する。

スイッチングハブか何かを間に咬ませて(2デバイスを繋ぐだけなら無くても良いけど)、 VyOS と VyControl を結線する。

デバイスアイコンの右クリックで Edit config をクリックして、コンテナの /etc/network/interfaces を編集する。

# DHCP config for eth0 の部分のコメントアウトを外せば、 VyOS の DHCP から IPアドレスを取得するようになる。

その後、 デバイスアイコンの再度右クリックで Start を選択し、コンテナをスタートさせる。
デバイスアイコンをダブルクリックすると、 コンテナ内にフォワードされるアドレスがブラウザ側で開く。

VyControl の初期設定

VyControl の初回アクセス時は、 管理者アカウントを作るように表示されるので、適当なユーザー名とパスワードで作成しておく。

そして、 VyControl のコントロール対象の VyOS インスタンス情報を設定してやる。

Router の Interfaces 情報を開き、 VyOS ルーター側の interface 一覧が表示されていれば、設定は完了だ。

以上で、 VyControl から VyOS が操作できるようになった。

トラブルシューティング

VyOS 起動時に KVM acceleration cannot be used と出る


VyOS 起動時に、 以下のようなエラーが出て起動に失敗するケース。

text/plain KVM acceleration cannot be used (/dev/kvm doesn't exist). It is possible to turn off KVM support in the gns3_server.conf by adding enable_kvm = false to the [Qemu] section.

① 環境導入編 で触れていた、「入れ子になった(ネストされた)仮想化」が機能しておらず、 GNS3 VM の中で更に、 KVM という仮想化支援機能を使用して二重の仮想化にて VyOS を起動するのに失敗している。
GNS3 VM を開くと以下のように "KVM support available: True" となるべきところが "False" となっていると思われる。

まずは、 OS のバージョンや CPU, 仮想化管理ツールのバージョンが、ネストされた仮想化をサポートしているかをもう一度確認しよう。

しかし、 CPU や仮想化管理ツールの組み合わせによっては、どうしても有効化できない場合がある。

そういった場合は、動作速度は遅くなるが KVM による仮想化支援機能を無効化してしまう方法もある。

  1. まず、 VM管理ツールや ssh で GNS3 VM の管理画面に入る
  2. メニューから Configure を選択する
  3. 以下の内容を追記し、 Ctrl+X で保存、 その後 GNS3 VM を再起動する。

    [Qemu]
    enable_kvm = false
    

ただし、 VyOS の動作速度がかなり落ちるので注意。

次回

最後となる次回は応用編。

Originally published at aquasoftware.net
ツイッターでシェア
みんなに共有、忘れないようにメモ

advanceboy

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント