MAC アドレスと IP アドレス
このページでは、ゲストの保存された MAC アドレス、古い MAC が保持したままの DHCP リースの解放、ゲストへの固定 IPv4 アドレスの割り当てについて説明します。
MAC アドレス
最初の起動時に、ゲストのネットワークカードにはランダムなローカル管理の MAC アドレスが割り当てられ、マシン識別子と同じように config.plist に保存されます。これにより、ゲストは起動をまたいで 1 つのアイデンティティと 1 つの DHCP リースを保ちます。
設定または置き換えるには:
複製したマシンは、マシン識別子と同じく元のマシンの MAC を引き継ぎます。両方を同時に実行する前に、コピーに新しいアイデンティティと MAC を与える vm clone --new-identity で複製するか、コピーに新しい MAC を設定してください。--new-identity は、コピーの固定アドレス、ポート転送、mDNS 名も消去します。
古い MAC が保持しているアドレス
症状:nat モードで、新しいゲストに割り当てられるアドレスがどんどん大きくなり、範囲の上のほうに選んでおいた固定アドレスに達してしまう。
共有ネットワーク上のリースとそれぞれの所有者を一覧表示してから、孤立したリースを解放します(VPhone.bundle 2.5 以降が必要です)。
Launchpad を通じて行う場合:
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 で固定アドレスを削除します。
アドレスがゲストに届く方法はモードによって異なります。
共有の 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 はこれを使いません。