MacのUTMで
Mac(Silicon)のUTMにて、「VMware FusionでLANセグメント」と同一内容を実現。
検証環境
net0およびnet1という2つのLANセグメントが存在し、中央のLinux Network Bridgeにより接続され、両側のVM PCが同一ネットワークに属する。IPアドレスは記載のとおり。
設定
ネットを調べても情報見つからず、、、ChatGPTに聞きながらトライ&エラー(無料版利用なので、精度悪し)。なかなか解答にたどりつかずであったが、ようやく実現できるConfiguraionが見つかる。
既存ネットワークを削除
まずは、対象VMを選択して、右クリックし、編集する。
既存ネットワークを削除する。
設定ファイル(config.plist)
対象VMの設定ファイル(config.plist)を直接編集する。右クリックにより、”パッケージの内容を表示”をクリック。
config.plistが表示される。
エディタにて編集する。
Network Bridge
関連部分のみ記載。
<key>Network</key>
<array/>
<key>QEMU</key>
<dict>
<key>AdditionalArguments</key>
<array>
<string>-netdev</string>
<string>socket,id=net0,listen=:1234</string>
<string>-device</string>
<string>virtio-net-pci,netdev=net0,mac=52:54:00:12:34:57</string>
<string>-netdev</string>
<string>socket,id=net1,listen=:1235</string>
<string>-device</string>
<string>virtio-net-pci,netdev=net1,mac=52:54:00:12:34:58</string>
</array>
<key>BalloonDevice</key>
<false/>
<key>DebugLog</key>
<true/>
<key>Hypervisor</key>
<true/>
<key>PS2Controller</key>
<false/>
<key>RNGDevice</key>
<true/>
<key>RTCLocalTime</key>
<false/>
<key>TPMDevice</key>
<false/>
<key>TSO</key>
<false/>
<key>UEFIBoot</key>
<true/>
</dict>
- Network:前述した「既存ネットワーク」の削除により空エントリ
- QEMU:AdditionalArgumentsによりネットワークI/Fを追加(ブリッジなので2つ)
- 1st I/F(下記内容を表現すると上記のような記載となるらしい)
- -netdev socket,id=net0,listen=:1234
- -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:57
- LANセグメント”net0”、内部ソケットのポート1234でListen
- 2nd I/F
- -netdev socket,id=net1,listen=:1235
- -device irtio-net-pci,netdev=net1,mac=52:54:00:12:34:58
- LANセグメント”net1”、内部ソケットのポート1235でListen
- Macアドレス指定が必須(指定しないと、全てのVMで同じMacアドレスとなってしまうようだ)
- 他のQEMUの記述は手を加えておらず
- 1st I/F(下記内容を表現すると上記のような記載となるらしい)
左のVM
<key>Network</key>
<array/>
<key>QEMU</key>
<dict>
<key>AdditionalArguments</key>
<array>
<string>-netdev</string>
<string>socket,id=net0,connect=127.0.0.1:1234</string>
<string>-device</string>
<string>virtio-net-pci,netdev=net0,mac=52:54:00:12:34:51</string>
</array>
<key>BalloonDevice</key>
<false/>
<key>DebugLog</key>
<false/>
<key>Hypervisor</key>
<true/>
<key>PS2Controller</key>
<false/>
<key>RNGDevice</key>
<true/>
<key>RTCLocalTime</key>
<false/>
<key>TPMDevice</key>
<false/>
<key>TSO</key>
<false/>
<key>UEFIBoot</key>
<true/>
</dict>
- QEMU:AdditionalArgumentsによりネットワークI/Fを追加
- -netdev socket,id=net0,connect=127.0.0.1:1234
- -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:51
- LANセグメント”net0”、内部ソケットでループバックのポート1234にConnect
右のVM
<key>Network</key>
<array/>
<key>QEMU</key>
<dict>
<key>AdditionalArguments</key>
<array>
<string>-netdev</string>
<string>socket,id=net1,connect=127.0.0.1:1235</string>
<string>-device</string>
<string>virtio-net-pci,netdev=net1,mac=52:54:00:12:34:52</string>
</array>
<key>BalloonDevice</key>
<false/>
<key>DebugLog</key>
<false/>
<key>Hypervisor</key>
<true/>
<key>PS2Controller</key>
<false/>
<key>RNGDevice</key>
<true/>
<key>RTCLocalTime</key>
<false/>
<key>TPMDevice</key>
<false/>
<key>TSO</key>
<false/>
<key>UEFIBoot</key>
<true/>
</dict>
- QEMU:AdditionalArgumentsによりネットワークI/Fを追加
- -netdev ocket,id=net1,connect=127.0.0.1:1235
- -device virtio-net-pci,netdev=net1,mac=52:54:00:12:34:52
- LANセグメント”net1”、内部ソケットでループバックのポート1235にConnect
修正後、UTMを再起動する。ただし、Listenする、Network Bridge VMを最初に起動した後、Connectする2つのVMを起動する。
Linuxによるネットワークブリッジ
設定方法は、インターネット上に多数見つかる。
$ sudo ip link add name br0 type bridge
$ sudo ip link set dev br0 up
$ sudo ip link set dev enp0s8 promisc on
$ sudo ip link set dev enp0s9 promisc on
$ sudo ip link set dev enp0s9 up
$ sudo ip link set dev enp0s8 up
$ sudo ip link set dev enp0s8 master br0
$ sudo ip link set dev enp0s9 master br0
$ bridge link show
検証
pingによる疎通があるのみ。省略。
終わりに
LANセグメントを仮想環境で利用する場合、Mac(Silicon)では、VMware Fusionの方がいくらかまし。ただ、UTMでx64のVMも使えるので、何かの時に役立つかも。




