クイックガイド(Apple Silicon, M1とか向け)
- Virtual Box のインストール
- Ubuntu のダウンロード
- VMの作成
- Ubuntu のセットアップ
はじめに
M1 などの Mac で OSPF や BGP をシミュレートしたいなと思った時に、FRR を使うことにしました。
FRR をセットアップするためにはいくつかのVMが必要なので、今回はUbuntuのVMを複数台用意することにします。
ネットワークの名前空間を利用すれば実は複数台なくてもできるのですが、初学者の方には分かりにくいかもしれないので、複数台のVMを利用することにします。
Virtual Box のインストール
今回はわかりやすさを重視し、 Virtual Box を使うことにします。もちろん他のハイパーバイザーでもOKです!
上記のリンクをクリックし、ダウンロードします。
M1~ チップの方は、macOS / Apple Silicon hosts
を選びましょう。
自分の Mac が Apple Silicon かどうかわからないときは、左上のリンゴマークからこのMacについて
を選択します。
チップのところにM1
とか書いてあれば Apple Silicon です。
Intel は Intel
って書いてるあるはず。
ダウンロードした dmg
をダブルクリックして、Virtual Box をインストールします。
Ubuntu Server のダウンロード
LTSの最新版(緑色のボタン)をクリックしてダウンロードします。
Apple Silicon の方は Arm 版をダウンロードしましょう。
https://ubuntu.com/download/server/arm
それ以外の方はほとんどが通常のものになると思います。
https://ubuntu.com/download/server
VM のセットアップ
VM とは
Virtual Box 上では、MacBookなどの実機(ホスト)の上に、仮想的な1つ1つのPC(ゲスト)を作ることができます。
この仮想PCをバーチャルマシン(VM)といいます。
- ゲストとホストは通常分離されている
- ゲストで実行した結果や破壊はホストに通常は影響しない
- 特別な設定を入れれば互いに影響を与えるようにすることもできる
- ハイパーバイザーの脆弱性で分離が侵害されていることがたまにある
- ゲストで実行した結果や破壊はホストに通常は影響しない
- ゲストはホストのリソース(メモリやCPU、ストレージなど)を利用する
- ホストのリソースに余裕がある限り、いくつでもゲストを作ることができる
万が一ゲストを壊しても基本的にはホストには問題がないため、なんの心配もせずいろんなシミュレートをすることができます!
VMの作成
では Virtual Box を開き「新規」ボタンから VM を作成しましょう。
ISOイメージ
は先ほどダウンロードした Ubuntu を指定します。
サーバー版のシステムの最低要件は
- 1GB Memory
- 5GB free storage space
となっています。今回はシミュレート用で複数作るので、ギリギリを攻めたいところです。
とはいえ不安なので 2048MB, 8GB くらい割り当てておきました。
- 名前:Ubuntu1 とかわかりやすい名前
- ISOイメージ:先ほどダウンロードしたISO
- 自動インストールはスキップ
- メモリー:2048MB
- プロセッサー数:1
- ハードディスク
- 仮想ハードディスクを作成する
- サイズ:8GB
必ず仮想ハードディスクを作成する
を選択しておきましょう。
名前など一通り入力したら完了して保存します。
ネットワークアダプターの変更と追加
作成したVMを右クリックし、設定を開きます。
ネットワーク設定のアダプター1を開き、ポートフォワーディング
をクリックします。
以下のように設定し、終わったら保存します。
ホストIPをループバックアドレス(127.0.0.1)にすることで、VMへのアクセスを今使っているホスト(MacBookなど)からのみに制限することができます。
(ホストIPを空欄にしておくと、同じLAN上の他のPCなどからアクセス可能になってしまいます)
次に、アダプター2を開き有効化します。
以下のように内部ネットワークにします。
終わったら保存します。
Ubuntu のセットアップ
まず起動ですが、起動ボタンの横にある矢印を押し、デタッチモードで起動しましょう。
起動後は画面に従ってインストールします。初めての方に向けてざっくり書いておくと
- 起動直後は try or install を選択
- 言語は English
- without updating(後でまとめてやります)
- Layout は 自分のものを(Japaneseとか)
- それ以外は何もせず Done で
途中、画面のような警告が出ますが、これは既存のデータを破壊するかもしれない、と言うものです。
先ほどの手順で仮想ハードディスクを専用に作っておけば問題ありませんので続行します。
他のデータに全く影響しないのが仮想マシンの利点です :)
その後、
- User name
- Password
が聞かれます。後で使いますので覚えておきます。
インストールが終わったら Reboot に変化するので、それでエンターキーを押します。
その後に cdrom
のエラーが出たら再度エンターキーを押しましょう。
SSH で接続
今のコンソール画面のままだと小さすぎて大変なので、なんとかしたいですね。
SSHをインストールします。
sudo apt install ssh
次に、Macなど、手元の端末を開き、以下のようにSSHで接続します。
127.0.0.1
はポートフォワーディングのところで入力したループバックアドレス(自分自身)ですね。
MacBook-Air ~ % ssh <Ubuntuのユーザー名>@127.0.0.1 -p 20022
初回の場合は下記が聞かれますので y
を入力してエンターです。
The authenticity of host '[127.0.0.1]:20022 ([127.0.0.1]:20022)' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
次にUbuntuセットアップの際に入力したパスワードを入力してエンターを押します。
するとSSHで接続できました。これの方が断然やりやすい!
デタッチモードで起動していれば、今までのUbuntu の小さい画面は閉じてしまっても構いません。バックグラウンドで継続
を選びましょう。
クローン
BGP などのシミュレーションは2台以上で繋いで実施します。つまりもう1台必要です。
手っ取り早くクローン(複製)します。
まず、今の Ubuntu をシャットダウンします。
sudo shutdown now
Virtual BoxのUbuntuのアイコンを右クリックして、クローン
をクリックします。
MACアドレスのポリシーは、すべての〜生成
を選びます。
クローンを完了させると、全く同じものができあがります。一回セットアップしておくと、簡単に検証機を増やすことができます。
クローン後、新しい方のVM設定を開き、再びポートフォワーディングの設定を開きます。
すると、ホストポートがクローン元と同じ 20022 になっていると思います。それもコピーされているんですね。
重複するとエラーになるので、30022 とか少し違う値に変えておきましょう。
- プロトコル:TCP
- ホストIP:127.0.0.1
- ホストポート:30022
- ゲストIP:(空欄)
- ゲストポート:22
これはホスト上のアドレス127.0.0.1
の30022
ポートで観測した通信を、ゲストの22
ポートに転送する、と言う意味です。そのためゲストポートの設定は変更する必要はありません(SSHの接続受けは基本的に22ポートで固定です。)。
終わったらOKを押し閉じて、設定画面もOKを押して保存します。
クローンしたVMにSSH
クローンしたVMをヘッドレスモードで起動してみましょう。
こうすると、バックグラウンドでVMが起動します。
その後、Macなど、手元の端末を開き、以下のようにSSHで接続します。ポート番号が変わっているのに注意です。
MacBook-Air ~ % ssh <Ubuntuのユーザー名>@127.0.0.1 -p 30022
接続できました!
ただ、クローンなのでホスト名すら一緒です。
紛らわしいときは変更しておきましょう。
sudo vim /etc/hostname
# 名前を変える
# 保存したあと sudo reboot
以上でシミュレート用のUbuntu Serverを複数台用意することができました。
次回はこちらです。