2byte 文字で名前を付けた VM

AzureVirtual Machines

この記事は最終更新から1年以上経過しています。内容が古くなっている可能性があります。

VM 名を日本語にすると…

文章以外での 2byte 文字は、大体のシステムでエラーの元になるので基本的に使わない方がいいのは周知の事実ですが、今回は Azure VM での影響についてみていこうと思います。

今回は、以下のような構成で VM を構築してみました。

リソースグループ名 : demoRG
VM 名 : 仮想マシン
イメージ : Windows Server 2016 Datacenter – Gen1

デプロイ自体は問題なく通ると思います。ちなみに、使用するイメージが Linux イメージの場合は、「仮想マシン名」を日本語で入力した時点でエラーが表示されます。

なんだ、普通にデプロイできるのかと思われるかもしれませんが、よくよく見てみると VM エージェントの準備ができていないとのエラーが表示されています。VM エージェントの詳細は下記のドキュメントに記載がありますが、イメージから VM を作成する際のプロビジョニングをしてくれたり、拡張機能のインストール・実行をする際に必要になったりと VM を Azure 上で稼働させるにあたって重要なエージェントです。

<Azure 仮想マシン エージェントの概要>
https://docs.microsoft.com/ja-jp/azure/virtual-machines/extensions/agent-windows

VM エージェントは、Azure プラットフォーム上の 168.63.129.16 と通信を行ってステータスを伝えているので、どうやらこの通信がうまくいっていないようです。今回は Windows FW や NSG の設定は特に行っていないので、168.63.129.16 宛の通信を阻害するものはありません (そもそも、NSG では 168.63.129.16 宛の通信を阻害できませんが)。

VM エージェントが Azure プラットフォームと通信して、それが “準備完了” 状態にあることを通知できるようにする。

<IP アドレス 168.63.129.16 とは>
https://docs.microsoft.com/ja-jp/azure/virtual-network/what-is-ip-address-168-63-129-16

通信内容の確認

どうやら 168.63.129.16 宛の通信がうまくいっていないみたい、というところまで当たりが付いたので、実際の通信を確認してみます。VM エージェントは、168.63.129.16 宛には 80/tcp と 32526/tcp で通信をしているのでパケットキャプチャで通信内容を確認することができます。

フィルターをかけてみるとこのあたりの通信で VM から 168.63.129.16 宛に HTTP 通信が行って、404 エラーが返ってきているようです。

もう少し詳しく見てみると VM は、

/machine/841c598f-4aa5-4d31-b783-fbcb590f6446/cdfa0fca%2D36ff%2D4953%2D80da%2D0ef40f4e55f8.%5F%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3

に GET を行って、その返答としてエラーが返ってきていています。この URL をデコードすると

/machine/841c598f-4aa5-4d31-b783-fbcb590f6446/cdfa0fca-36ff-4953-80da-0ef40f4e55f8._仮想マシン

となるようです。つまり、VM 名を日本語にしたことで VM エージェントから 168.63.129.16 宛の通信の日本語部分がエンコードされてしまい、Azure の基盤側で持っている情報と一致しないため、そんなものないよと 404 エラーが返ってきているように見えます。

ということで残念ながら日本語名で VM を作成してしまった場合は、VM エージェントが正常に動作せず、どこかしらで影響がでるかもしれませんので、VM を作り直すことをおすすめします。