When I set up CloudStack, I chose my physical DNS servers as both the internal and external DNS servers. They perform recursion, so they are suitable for queries about hosts on the LAN as well as on the rest of the internet. However, the /etc/resolv.conf file in my instances lists the virtual router first, followed by the physical servers I chose during setup. The virtual router does not successfully return answers about internal hosts, causing the instances to be unable to reach each other.
I'm aware of the use.external.dns option but the last time I set that to true and restarted the virtual router, it failed to start up again. Why is DHCP assigning the virtual router as the first name server instead of using the ones I selected during setup?