ゲスト OS 側の NIC のプロパティでIP アドレスを変更するとVMとの接続が失われる事象について

こんにちは! Azure ネットワーク チームの米川です。

ゲスト OS 側の NIC のプロパティで IP アドレスまわりの設定をいじってしまい RDP 接続できなくなるケースが稀にあります。

弊社公式ドキュメントでも、極力 仮想マシンの ゲスト OS の NIC のプロパティで 手動で IP アドレスを変更しないようにとの旨が記載されておりますが、そもそも何故 ゲスト OS 側の NIC のプロパティを変更してはいけないのかを、簡単にご説明したいと思います。

 

Azure ネットワーク インターフェイスの IP アドレスの追加、変更、削除

https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-network-interface-addresses#private

(一部抜粋)

必要がない限り、仮想マシンのオペレーティング システム内のネットワーク インターフェイスの IP アドレスを手動で設定しないでください。

Azure 上の NIC のプロパティとVM 内のNICのプロパティは独立している


Azure で作成された仮想マシンには、必ず 1 個以上の NIC が関連付けられますが、ゲスト OS 内で NIC のプロパティを変更すると、Azure 基盤側で保持している NIC のプロパティ (IP アドレス等) と整合性が取れなくなり、一切の通信が出来なくなる場合があります。

これは、Azure 側の NIC のプロパティ と ゲスト OS 側の NIC のプロパティが独立していることに起因しています。

 

デフォルトでは、ゲスト OS 側の NIC に設定される IP アドレスは、Azure 側の NIC で指定した IP アドレスが DHCP サーバーから割り振られるように設定されています。

従って、デフォルトの状態では、Azure 上の NIC のプロパティを編集しても、ゲスト OS 内の NIC に設定されている IP アドレスと不一致が生じることはありません (図 1.)。

 

[gallery size="full" columns="1" link="none" ids="15005"]

ここで、ゲスト OS 側の NIC のプロパティで 静的 IP アドレスを静的していると、値によっては Azure 側の NIC のプロパティと一致しない状況になる場合があります。

この場合、Azure 側から見た IP アドレスに対してパケットを送信したつもりが、ゲスト OS 側から見ると自宛ではないパケットが届いたように認識されてしまい、届いたパケットを破棄してしまいます (図 2.)。

[gallery columns="1" size="full" ids="15025"]

仮想マシンとの接続ができなくなった場合の対処策


ゲスト OS 側で一度 NIC のプロパティを変更して IP アドレスの不一致が発生してしまうと、RDP 接続等も出来なくなり、ゲスト OS 側の設定が変更できなくなってしまいます。

そういった場合は、以下のブログで紹介されているように、Azure VM (ARM) の NIC 差し替えて対処して下さい。

余談


1 NIC に複数の IP アドレスを割り当てる場合は、ゲスト OS側のNIC のプロパティを変更する必要がある

DHCP では 1 つの IP アドレスしか割り振れないので、複数 IP アドレスを 1 つの NIC に割り当てたい場合には、ゲスト OS 側の NIC に静的 IP アドレスを割り当てる必要があります。

この際に、設定のミスにより仮想マシンとの切断が生じ、上記の NIC の差し替えを行うと、ゲスト OS 内で既存の NIC の設定がリセットされてしまうため、ゲスト OS 側の NIC の設定にはくれぐれもご注意下さい。

 

以上、Azure を 利用いただくにあたり、ご参考になれば幸いです。

 

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。