🖥️

Azure VMでPrivate IP Prefix(Preview)を試してみた

に公開

はじめに

Azure VM(Virtual Machines)のPrivate IP Prefixを試してみました!
この機能は2025/05現在プレビュー中で、使用するにはこちらのフォームからの申請が必要です。

Azure VMのPrivate IP Prefixとは

Azure VMのNIC(Network Interface)には、プライベートIPアドレスを複数割り当てることが可能です。
新機能のPrivate IP Prefixを使用すると、1つのセカンダリIP構成につき/28のCIDRブロックでプライベートIPアドレス(16個)を割り当てることもできるようになりました。これによりVMに対して最大で従来の16倍のプライベートIPアドレスを割り当てが可能となります。

大量のIPアドレスを使用するワークロード(例えばKubernetesで大量のPodを起動する)であったり、大量の同時アウトバウンド接続があり、エフェメラル(動的)ポートを大量に使用するといった場合に効果を発揮するとのこと。
既存のNICでプライベートIPアドレスが足りなくなりそうになったときに、NIC・VM数を増やさずにIP枯渇を回避することができます。

試してみる

こちらの手順に沿って試してみます。

  1. IP Prefix on NICの利用申請。
  2. Azure VMにアタッチされているNICへセカンダリのIP構成を追加。
  3. Azure VMのOSのネットワーク設定。
  4. 動作確認。

PoC構成

Azure VMを作成し、ネットワークインターフェイスの設定からセカンダリIP構成をPrivate IP Prefixで追加してみます。

設定

IP Prefix on NICの利用申請

IP Prefix on NIC - Public Preview Sign-Upフォームで利用申請を行います。
申請の承認後にAzure PortalでNICを開くと、IP構成の設定でIP Prefixが指定できるようになります。

Azure VMにアタッチされているNICへセカンダリのIP構成を追加

Azure VMのネットワーク設定設定からアタッチされているNICを開きます。

IP構成で追加ボタンを押下し、セカンダリIP構成の追加画面を開きます。

[プライベート IP アドレスの種類]でIP アドレス プレフィックスを選びます。
[割り当て]は動的もしくは静的があり、後者の場合はCIDRブロックを指定可能です。
今回は割り当ては静的を選択してCIDRブロックを192.168.0.16/28に指定してみます。

セカンダリのIP構成を保存した後、Azure PortalでVNetを開き[接続デバイス]を確認してみます。
Azure VMにアタッチされているNICが指定したCIDRブロックでIPアドレスを使用していることが分かります。

Azure VMのOSのネットワーク設定

Azure VMにSSH接続し、こちらの手順に沿ってOSのネットワーク設定でもIPアドレスの追加を行います。

ルートユーザーにスイッチします。

sudo -i

追加のIPアドレスを定義するコンフィグファイルをviで作成し、

vi /etc/netplan/60-static.yaml

設定を記述し:wqでファイルを保存します。
addressにはNICのセカンダリIP構成で設定したのと同じ192.168.0.16/28を記述します。

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.0.16/28

作成したコンフィグファイルのパーミッションを設定します。

chmod 600 /etc/netplan/60-static.yaml

netplan tryで設定ファイルの構文チェックを行い、問題なければnetplan applyで反映します。

netplan try
netplan apply

ipコマンドでNICのIPアドレスを表示すると、192.168.0.16/28も追加されたことが確認できます。

# ip addr list eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0d:3a:59:ae:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.16/28 brd 192.168.0.31 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.4/25 metric 100 brd 192.168.0.127 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20d:3aff:fe59:ae78/64 scope link 
       valid_lft forever preferred_lft forever

動作確認

pingコマンドの-Iオプションを使用して、動作確認をしてみます。
-Iオプションは、送信元(interface もしくは IP アドレス)を指定するものです。

送信元IPアドレスを、NICのセカンダリIP構成で指定したCIDRブロックに含まれる192.168.0.16とし、
送信先IPアドレスを、NICのプライマリIP構成で割り当てられている192.168.0.4でPingコマンドを実行すると、その通りに疎通できていることが確認できます。

ping -I 192.168.0.16 192.168.0.4
PING 192.168.0.4 (192.168.0.4) from 192.168.0.16 : 56(84) bytes of data.
64 bytes from 192.168.0.4: icmp_seq=1 ttl=64 time=0.043 ms
64 bytes from 192.168.0.4: icmp_seq=2 ttl=64 time=0.043 ms

最後に

Azure VMでPrivate IP Prefix(Preview)を試してみました。
まだプレビュー版で試すのにも申請が必要で、CIDRブロックも/28しか指定できませんが、
GAする時には他サイズのCIDRブロック指定などにも対応していくかもしれません。今後のアップデートもウォッチしていきたいと思います!

Discussion