MAC アドレスと IP アドレス

このページでは、ゲストの保存された MAC アドレス、古い MAC が保持したままの DHCP リースの解放、ゲストへの固定 IPv4 アドレスの割り当てについて説明します。

MAC アドレス

最初の起動時に、ゲストのネットワークカードにはランダムなローカル管理の MAC アドレスが割り当てられ、マシン識別子と同じように config.plist に保存されます。これにより、ゲストは起動をまたいで 1 つのアイデンティティと 1 つの DHCP リースを保ちます。

設定または置き換えるには:

vphone-cli vm config <name> --mac 02:11:22:33:44:55
vphone-cli vm config <name> --mac random   # a new one now
vphone-cli vm config <name> --mac auto     # a new one at the next launch

複製したマシンは、マシン識別子と同じく元のマシンの MAC を引き継ぎます。両方を同時に実行する前に、コピーに新しいアイデンティティと MAC を与える vm clone --new-identity で複製するか、コピーに新しい MAC を設定してください。--new-identity は、コピーの固定アドレス、ポート転送、mDNS 名も消去します。

古い MAC が保持しているアドレス

症状:nat モードで、新しいゲストに割り当てられるアドレスがどんどん大きくなり、範囲の上のほうに選んでおいた固定アドレスに達してしまう。

共有ネットワーク上のリースとそれぞれの所有者を一覧表示してから、孤立したリースを解放します(VPhone.bundle 2.5 以降が必要です)。

vphone-cli vm leases
sudo vphone-cli vm leases --release-orphans

Launchpad を通じて行う場合:

vphone-launchpad-cli vm leases
vphone-launchpad-cli vm leases --release

Launchpad のウィンドウでは、Host Setup の NAT Network にその数が表示され、Release… で管理者が承認した後に解放されます。Launchpad は、一覧に表示しているすべてのライブラリと照合します。

孤立したリースとは、iOS または iPadOS のゲストのリースのうち、MAC がライブラリ内のどのマシンにも属さず、期限が切れているものです。--release-orphans は孤立したリースを /var/db/dhcpd_leases から削除し、DHCP サーバにファイルを再読み込みさせるため、root 権限が必要です。次のものには決して手を加えません。

  • マシン自身のリース(マシンの停止中に期限が切れたものも含む)
  • 期限が切れていないリース(MAC を置き換えたばかりの実行中のゲストのものなど)
  • ほかの仮想化アプリや、インターネット共有に接続したデバイスのリース

別のライブラリにあるマシンは、そのライブラリも指定した場合にのみ数に入ります。ライブラリごとに --library-root を繰り返してください。ライブラリにマシンがない場合や、マシンの設定を読み取れない場合は、そこにあるリースがすべて孤立して見えてしまうため、解放の実行は拒否されます。

原因:Mac の DHCP サーバは、リースの期限が切れた後も、各アドレスを割り当て先の MAC に紐付けたままにし、範囲内のほかのアドレスがすべて使われるまで別の相手には渡しません。マシンを削除したり MAC を置き換えたりすると、そのアドレスはもう誰も使わない MAC に紐付いたまま残ります。MAC が保存されるようになる前の起動でも同じことが起きています。

固定アドレス

--ip でゲストに固定の IPv4 アドレスを割り当てます。プレフィックスを省くと /24 とみなされます。--gateway と --dns は省略できます。auto を指定すると標準に戻ります。--ip dhcp で固定アドレスを削除します。

vphone-cli vm config <name> --ip 192.168.65.50
vphone-cli vm config <name> --network tunnel --ip 10.20.0.5/16 --dns 1.1.1.1
vphone-cli vm config <name> --ip dhcp

アドレスがゲストに届く方法はモードによって異なります。

モードアドレス適用方法
natMac の共有 NAT ネットワーク上:通常は 192.168.65.0/24、--nat-peers off のマシンでは 192.168.64.0/24(マシン同士の通信をご覧ください)vphoned がゲストのネットワーク設定に書き込みます。ゲートウェイと DNS は Mac(192.168.65.1 または 192.168.64.1)です。
tunnel任意のプライベートサブネットトンネル自身の DHCP が割り当てます。ゲートウェイは DNS リゾルバも兼ね、--gateway で別のアドレスを指定しない限り、サブネットの最初のアドレスです。
bridged物理ネットワーク上のアドレスvphoned がゲストに書き込みます。--gateway と --dns はそのネットワークのものを設定してください。
Tip

共有の nat ネットワーク上のアドレスは、Mac の DHCP サーバで予約されません。.200 のように、DHCP がほかの仮想マシンに割り当てていそうにない、範囲の上のほうのアドレスを選んでください。

nat モードでは、アドレスはマシンが参加する共有ネットワーク上のものでなければなりません。互いに通信するマシン(標準)の場合は 2 つ目のネットワーク(192.168.65.0/24)、--nat-peers off の場合は 1 つ目のネットワーク(192.168.64.0/24)です。どちらも、vmnet の Shared_Net_Address が変更されていればそれに従います。ほかのサブネットを使う場合は tunnel を使ってください。

vphoned は、vphone-vm が接続するたびにアドレスを適用するため、Mac が関与していない間にゲスト側で変更されても元に戻されます。解除するのは自分が書き込んだ設定だけです。ゲストの「設定」アプリで手入力したアドレスは、仮想マシンが DHCP に戻ってもそのまま残ります。

macOS 26 では仮想マシンに専用の NAT ネットワークを割り当てられますが、その場合、仮想マシンの停止後もサブネットが予約されたまま残り(テストでは 40 分後も予約されたままでした)、その間はそのネットワークでの起動がすべて失敗するため、vphone はこれを使いません。

関連項目