Azure VNet のデフォルトで到達可能っぽい IP アドレスはどれか

に公開

TL;DR

  • Azure VNet に Azure VM を置いただけの状態で ARP 解決可能な IP アドレスを知っておき隊
  • 結論としては、サブネットのネットワーク アドレス + 1 の IP アドレスだけが到達可能っぽい
  • この動作を気にする必要がある場面は少ないが、知っておくと役に立つことがあるかも

はじめに

みなさんは、VNet と Azure VM を作っただけの状態で、到達可能 (というか正確には ARP 応答が返ってくるだけなんですが)、Azure VNet の中でそんな IP アドレスがどれか、ご存じでしょうか。
それを知ってどうするのか、というのはまた別の記事でご紹介するのですが、"ARP 解決できる" ということは "OS からその IP アドレス宛てに、そのインターフェースから、パケットを出してくれる" ということを意味します。

See also

こちらの記事は、Azure VNet の UDR は OS には効かない とあわせてみていただくと理解がさらに深まるかもしれません。
UDR は OS には効かないわけですが、逆に OS 側で ARP 解決できてしまえば、実際にその IP アドレスを持っている対象があるかどうかにかかわらず OS からはパケットを出してくれるわけで、そうすると今度は Azure の VNet というか、SDN 側でパケットをいかようにも扱えるわけですね。

テスト用の Azure VM の ipconfig

Azure VM は以下のように、10.0.0.4/24 の IP アドレスを持っています。
VNet のプライベート IP アドレスは、ネットワーク アドレス + 4 から割り当てられる、つまりなんかいるのかも、ということで、.1 から .3、それからゲートウェイっぽい .254 を試してみます。

> ipconfig

Windows IP Configuration

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . : k22sepyr0njuxmycs1nligf21f.lx.internal.cloudapp.net
   Link-local IPv6 Address . . . . . : fe80::3f9e:f4d4:6e07:54a7%6
   IPv4 Address. . . . . . . . . . . : 10.0.0.4
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 10.0.0.1

arp -a で確認してみる

ARP テーブルを見てみるということで arp -a をコマンド プロンプトで実行してみた結果がこちらです。

> arp -a

Interface: 10.0.0.4 --- 0x6
  Internet Address      Physical Address      Type
  10.0.0.1              12-34-56-78-9a-bc     dynamic
  10.0.0.255            ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.252           01-00-5e-00-00-fc     static
  255.255.255.255       ff-ff-ff-ff-ff-ff     static

netsh interface ipv4 show neighbors というのもある

別のコマンドもあるのでこちらも見てみます。
結果としては、.1 だけが Reachable となっており、他の .2、.3、.254 は試してみたけどダメだった、つまり Unreachable である結果が見えています。

> netsh interface ipv4 show nei interface=Ethernet

Interface 6: Ethernet

Internet Address                              Physical Address   Type
--------------------------------------------  -----------------  -----------
10.0.0.1                                      12-34-56-78-9a-bc  Reachable
10.0.0.2                                      Unreachable        Unreachable
10.0.0.3                                      Unreachable        Unreachable
10.0.0.254                                    Unreachable        Unreachable
10.0.0.255                                    ff-ff-ff-ff-ff-ff  Permanent
224.0.0.22                                    01-00-5e-00-00-16  Permanent
224.0.0.252                                   01-00-5e-00-00-fc  Permanent
255.255.255.255                               ff-ff-ff-ff-ff-ff  Permanent

まとめ

ということで、VNet に Azure VM を置いただけの状態では、ARP 解決可能なのは Azure VM が所属しているサブネットのネットワーク アドレス + 1 の IP アドレスだけ、ということのようです。

一般的にこれを気にする必要がないのは、Azure VM が起動してきたとき、DHCP で IP アドレスを取得するとともに、そのネットワーク アドレス + 1 の IP アドレスがデフォルト ゲートウェイとして設定されるからです。
デフォルト ゲートウェイが ARP 解決可能であれば、とりあえずデフォルト ゲートウェイが設定されているそのインターフェースからパケットを出しておけば後は何とかしてくれるはずと OS 側が期待し、そのとおり動作している限り何も問題は起こりません。
ただ、そうではない個別の事情がある際に、このあたりの挙動を知っておくと役に立つことがあるかもしれません、私は役に立ちました!

最後に、じゃあこの ネットワーク アドレス + 1 の IP アドレスを持っているデバイスというか、エンドポイント的なさむしんぐがあるのかどうか、というのが気になるとは思うのですが、ping 応答もなく正直分かりません。
個人的には存在していなくても問題はなく、conventional に動作する各種 OS から、ARP 解決させ、パケットを出させる、そのためのこう、仮想的な IP アドレスのようなものかなと思っています。

参考

  • Azure ネットワーク インターフェイスの IP アドレスの構成 | Microsoft Learn

https://learn.microsoft.com/azure/virtual-network/ip-services/virtual-network-network-interface-addresses?wt.mc_id=MVP_391314#dynamic

Discussion