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
Discussion