Static IP’s in QEMU VM’s
Continuing from where I left in the blog before. If you are using looking to configure a static IP for your machines (may be your use case is similar to mine) this blog might be useful for you.
My system is a Apple M1 silicone and Virtualbox was not for me and I had to painfully find my way in the ocean.

Samarthya
Have a look at this useful lib.
Typical Usage
> qemu-system-aarch64 ... -device virtio-net-pci,netdev=net0,mac=de:ad:be:ef:00:01 -netdev vde,id=net0,sock=/var/run/vde.ctl

Samarthya
Steps I am using are mentioned here.
Installation
- I built it from source so it was just following the steps mentioned in the
README.md
sudo make PREFIX=/opt/vde/ install
The PREFIX defines a path and can be any path to your liking, but the recommended one is /opt/vde
> ls -als /opt/vde
total 0
0 drwxr-xr-x 7 root wheel 224 Aug 23 14:21 .
0 drwxr-xr-x 12 root wheel 384 Aug 23 14:21 ..
0 drwxr-xr-x 15 root wheel 480 Aug 24 14:48 bin
0 drwxr-xr-x 3 root wheel 96 Aug 23 14:21 etc
0 drwxr-xr-x 7 root wheel 224 Aug 24 14:48 include
0 drwxr-xr-x 19 root wheel 608 Aug 24 14:48 lib
0 drwxr-xr-x 3 root wheel 96 Aug 23 14:21 share
Install would two files of interest
/Library/LaunchDaemons/io.github.virtualsquare.vde-2.vde_switch.plist
/Library/LaunchDaemons/io.github.lima-vm.vde_vmnet.plist
My contents for vde_vmnet.plist
are as under
<!-- make install: yes -->
<plist version="1.0">
<dict>
<key>Label</key>
<string>io.github.lima-vm.vde_vmnet.plist</string>
<key>Program</key>
<string>/opt/vde/bin/vde_vmnet</string>
<key>ProgramArguments</key>
<array>
<string>/opt/vde/bin/vde_vmnet</string>
<string>--vmnet-gateway=192.168.105.1</string>
<string>/var/run/vde.ctl</string>
</array>
<key>StandardErrorPath</key>
<string>/var/run/vde_vmnet.stderr</string>
<key>StandardOutPath</key>
<string>/var/run/vde_vmnet.stdout</string>
<key>RunAtLoad</key>
<true />
<key>UserName</key>
<string>root</string>
<key>KeepAlive</key>
<dict>
<key>PathState</key>
<dict>
<key>/var/run/vde.pid</key>
<true />
</dict>
</dict>
</dict>
</plist>
By default the guest IP is assigned by the DHCP server provided for the Host, but the guest will be able to access the internet and will be accessible from the host.
Reserve an IP
- Define a unique
MAC
address for the VM, e.g.de:ad:be:ef:00:01
- Select a reserved IP address, e.g.
192.168.105:10
- Create a file
/etc/bootptab
%%
# hostname hwtype hwaddr ipaddr bootfile
centos1 1 de:ad:be:ef:00:01 192.168.105.10
centos2 1 de:ad:be:ef:00:02 192.168.105.20
centos3 1 de:ad:be:ef:00:03 192.168.105.30
- Reload the DHCP daemon
sudo launchctl unload -w /System/Library/LaunchDaemons/bootps.plist
sudo launchctl load -w /System/Library/LaunchDaemons/bootps.plist
- Run the qemu machine with
-device virtio-net-pci,netdev=net0,mac=de:ad:be:ef:00:01
