I've just set up a server using openvz for virtual servers. I've got a
few basic services running directly on the host - ntp and dnsmasq for
dhcp and dns serving and proxying. I've been having trouble trying to
get the openvz guest systems to work with the host's dnsmasq server as
their nameserver.

It seems (based on logging the ip packets) that dnsmasq would not accept
packets coming in on the venet0 virtual network device that openvz uses
for networking between the virtual servers and the host - it would not
bind to the venet0 interface because the interface had no ip address on
the host side (I have no problems pinging the host's ip addresses from
the guest, so networking and routing is working fine).

When I manually allocate an ip address on the host's venet0 (with
"ifconfig venet0"), and use that address as the dns server,
dnsmasq answers the guests correctly.

Has anyone else come across this sort of situation, and does my solution
sound reasonable? It is working fine as far as I can see, but it could
be that there are easier ways (it seems slightly inelegant to have to
forceably load the openvz network module and assign an ip manually
before the openvz service is started).