Amazon Linux 2は、AWS上で動作することを主目的としたLinuxディストリビューションですが、オンプレミスの環境やローカルの開発環境での利用も考慮されています。今回は、VirtualBox上でAmazon Linux 2を動かす際のネットワーク設定についてハマったので、詳しく解説します。
準備
今回使用した環境は下記のとおりです。
- Windows 11
- VirutalBox 7.0
AWS公式サイトでのインストール方法の説明はこちらです。
VirtualBoxでAmazon Linux 2を動かす場合、seed.isoというISOファイルを作り、それをOS導入時の起動用ISOとして指定しつつ、メインのストレージはあらかじめ準備された仮想ディスクをそのまま使います。
よくあるOSのISOファイルを使ってインストール作業を進める、といった方法ではありません。
seed.isoを作成する
Windows 11上のUbuntuを使って、下記のようにしました。
まずISOファイルを作るために、genisoimageをインストールします。
sudo apt install genisoimage
次に、新規ディレクトリを作り、meta-dataとuser-dataの2つのファイルを作ります。
meta-dataは下記のとおり。
ここでネットワークの設定を行います。
- eth0(NATアダプター)はDHCPを使用して自動的に設定。
- eth1(ホストオンリーアダプター)は静的なIP設定を行いました。
local-hostname: amazonlinux2_vm
network-interfaces: |
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.56.101
network 192.168.56.0
netmask 255.255.255.0
broadcast 192.168.56.255
あらかじめ、VirtualBoxのHost-only Networksの設定を確認しておきます。
user-dataは下記のようにします。ここでec2-userのパスワードを設定します。
#cloud-config
#vim:syntax=yaml
users:
# A user by the name `ec2-user` is created in the image by default.
- default
chpasswd:
list: |
ec2-user:<パスワード>
# In the above line, do not add any spaces after 'ec2-user:'.
genisoimageでISOファイルを作ります。
genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data
VDIファイルのダウンロード
Amazon Linux 2の導入済みHDDイメージ(VDIファイル)を、公式サイトからダウンロードします。
VirtualBoxで仮想マシンを作成
新規仮想マシンの設定
仮想マシンを新規作成します。
最初の画面では、名前(Amazon Linux 2)と、ISOイメージの指定を行います。ここで先ほど作成したseed.isoを指定します。
次はメモリとプロセッサ数の指定ですが、デフォルトのままにしました。
最後はストレージの指定ですが、既存のVDIファイルを使うこととして、先ほどダウンロードしたVDIファイルを指定します。
ネットワーク設定を追加
引き続き、ネットワークの設定を追加します。
デフォルトで、ネットワークアダプター1はNATになっていると思うので、これはそのまま。
アダプター2を有効にして、ホストオンリーアダプターを割り当て、VirtualBox Host-Only Ethernet Adapterを指定します。
起動
ここまでの設定を終えてから起動すると、Amazon Linux 2が立ち上がり、ログイン画面が表示されるでしょう。
user-dataで指定したパスワードを使ってログインします。
ネットワーク接続の確認
ログインしたら、ip a
を実行します。
eth0がNATアダプターなので、DHCPで情報取得が行われ、10.0.2.0/24のネットワークのIPアドレスになっているはずです。この接続を介して、外部インターネットにアクセスします。
eth1はホストオンリーアダプターで、meta-dataで指定した設定になっていて、ホストOSからの接続に使用されます。(つまり、ホストOSからSSH接続する場合は、meta-dataで指定したIPアドレスにつなぎに行けば良いわけです。)
さらに、route
を実行します。
default gatewayがeth0を使うようになっていれば、外に出られます。
その他の設定
あとは、自由に設定してください。というところですが、NATアダプターの設定が上手くいっていれば、sudo yum update
できるでしょう。
また、ホストオンリーアダプターの設定が上手くいっていれば、ホストOSからSSH接続できるはずです。ただ、Amazon Linux 2の初期設定ではパスワードを使用したSSH接続が許可されていません。
/etc/ssh/sshd_configを編集します。
#PasswordAuthentication no ←この行をコメントアウト
あとは、sshdの再起動です。
sudo systemctl restart sshd
ホストOSからSSH接続できるようになったら、公開鍵の設定を行い、再度、パスワードを使用したSSH接続を禁止にしても良いかもしれません。
ただ、VirtualBox上で動いているものなので、そこまで厳密にする必要もないかも。
まとめ
ということで、VirtualBoxをまともに使うのが何年ぶり・・・ということもあり、ネットワーク関連で結構苦労したのですが、無事、VirtualBox上でAmazon Linux 2を使えるようになりました。
それにしても、いろいろのトラブルシューティングとか、設定方法の指示など、ChatGPT(GPT-4)がかなり使えました。というか、ずっとネットワーク接続がうまくいかなくて、袋小路にはまってしまったのですが、そこから抜け出すきっかけを与えてくれたのがChatGPTでした。凄い時代だ・・・。