LoginSignup
1
0

More than 1 year has passed since last update.

Windowsのmultipassに同じサブネットのIPを割り当てるには

Last updated at Posted at 2022-04-23

はじめに

multipassをサーバアプリ開発に利用するには、クライアントからアクセスできるようにネットワークをbridgeする必要がある。そして、bridgeを使用する前提条件として、同じサブネットにDHCPサーバが稼動している必要がある。1

ここでは、bridge設定したmultipassのインスタンス化と、そのインスタンスでのWebサーバの起動手順を説明する。

Windowsターミナルの起動

スタートメニューからWindowsターミナルを起動する。

Windowsのネットワークの確認

bridgeに使用するネットワークを確認するため、Windowsターミナルから次のコマンドを実行する。
multipass networks
以下に実行例を示す。
getNetworks.png
bridgeの使用時に指定するネットワークは、出力結果のNameカラムの値となる。
PCに複数のネットワークI/Fがある場合、複数のネットワークが表示される。
この場合、DHCPと同じサブネットに接続されているネットワークを選ぶこと。

multipassインスタンスの起動

Windowsターミナルから次のコマンドを実行する。
network-name には、上記のNameカラムの値を指定すること。
multipass launch -n instance-name --network network-name
以下に、CPU:2つ、メモリ:2G、名前:vscodeのmultipassインスタンスの起動例を示す。
launch.png

multipassインスタンスのIPアドレスの確認

Windowsターミナルから次のコマンドを実行する。
multipass info instance-name
以下に、上記で起動したmultipassインスタンスの確認例を示す。
multipassInfo.png
出力結果から、今回作成したmultipassインスタンス:vscodeにIPアドレスに192.168.0.27が割当てられていることが確認できる。

windowsユーザの認証鍵の生成

デフォルト状態のmultipassインスタンスは、SSHサーバは公開鍵認証を許可している。そこで、Windowsユーザの公開鍵を作成して、それをmultipassインスタンスとの認証に使用する。公開鍵の作成には、Windowsターミナルでssh-keygenコマンドを実行する。

以下に、RSA 2048ビットの公開鍵を作成するコマンドを示す。Nオプションの引数は、Powershellで実行する場合とcmdプロンプトで実行する場合で異なるので注意されたい。詳細は、Automated ssh-keygen without passphrase, how?を参照されたい。
ssh-keygen -q -t rsa -b 2048 -N '""'
上記のコマンドを実行すると、鍵の保存場所を聞いてくるで、デフォルトのままとする。

PS C:\Users\takus> ssh-keygen -t rsa -b 2048 -N '""' -q
Enter file in which to save the key (C:\Users\takus/.ssh/id_rsa):

もし、既にRSAの公開鍵を持っている場合、次のような上書きの警告が出る。
この場合、既存の鍵を破壊してしまうので、必ず n を押下して公開鍵生成を中止することを勧める。

PS C:\Users\takus> ssh-keygen -t rsa -b 2048 -N '""' -q
Enter file in which to save the key (C:\Users\takus/.ssh/id_rsa):
C:\Users\takus/.ssh/id_rsa already exists.
Overwrite (y/n)? n
PS C:\Users\takus>

以下に、RSA 2048ビットの公開鍵を作成の例を示す。
sshKeygen.png

multipassインタンスへの公開鍵のコピー

上記で作成した公開鍵は、 ${env:homepath}\.ssh\id_rsa.pub に保存される。この公開鍵をmultipassインスタンスの/home/ubuntu/.ssh/authorized_keys に追記することで、公開認証でのログインが可能となる。
/home/ubuntu/.ssh/authorized_keys の追記方法は種々あるが、ここでは1stepでの追記方法を示す。

multipass exec vscode -- sh -c "cat <<EOF >>~/.ssh/authorized_keys
$(get-content ${env:homepath}\.ssh\id_rsa.pub)
EOF
"

以下に公開鍵の追記の実行例を示す。
modifyKeys.png

multipassインスタンスへのログインとWebサーバ起動

multipassインスタンスへのSSHログインのコマンドを示す。
ssh ubuntu@上記のmultipass infoで確認したIPアドレス
以下に、sshでログインする例を示す。
login.png

Webサーバのインストール

次に、httpサーバをインストールする例を示す。
sudo apt install apache2
installApache2.png

mDNS/DNS-SDのインストール

mDNS/DNS-SDであるavahi-daemonをインストールして、instance-name.local でアクセスできるようにする。
sudo apt install avahi-daemon
installAvahi.png

WindowからのWebサーバのアクセス

最後に、WindowsからFQDNでアクセスした例を示す。
accessApache2.png


1 multipassインスタンスでstaticにIPアドレスを設定する場合を除く

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0