Running your own DNS is the best option, I use dnsmasq, which functions as both a DHCP and DNS server. Any DHCP requests from the client also contains a hostname, which dnsmasq then stores in its DNS table. So if your hostname is `macbook-air`, dnsmasq will resolve that to the DHCP IP address assignment.
Or bridge those VMs on your macbook so it's a flat network, then use Avahi for mDNS so they all have .locals.