Libvirt APIs for creating virtual networks

Laine Stump laine at redhat.com
Thu Apr 30 20:44:52 UTC 2020


On 4/28/20 12:01 PM, Daniel P. Berrangé wrote:
> On Tue, Apr 28, 2020 at 08:51:45AM -0700, Santhosh Kumar Gunturu wrote:
>> Okay. Thanks.
>>
>> Do we have any facility APIs to set the DHCP Options via XML ?
>> Default gateway ?

libvirt has no supported method of specifying a default gateway other 
than the IP of the bridge device on the virtualization host it self, and 
DHCP clients on these networks will always end up getting their default 
gateway set to the IP address of that bridge. Fortunately (for you :-) 
that's not because libvirt is explicitly setting that address in the 
dnsmasq config file, but just because that's what dnsmasq does when no 
gateway address is specified in the config file.

You would set this in the dnsmasq.conf file with dhcp-option, e.g.:

   dhcp-option=option-router,192.168.122.5

and recent libvirt (5.6.0 and newer) allows adding arbitrary lines to 
the dnsmasq.conf files it creates for its networks, using the 
<dnsmasq:options> element in the network XML. For details on how to do 
this, look at:

   https://libvirt.org/formatnetwork.html#elementsNamespaces



>> Dns-server ?

Not exact, but

<forwarder addr='8.8.8.8'/>

is *kind of* what you're looking for. It doesn't set the IP address sent 
back in the dhcp reply, but sets up the dnsmasq instance listening for 
the network to forward all requests on to 8.8.8.8 (you can also refine 
this to forward the requests for only certain domains, by adding 
"domain='example.com'" to the <forwarder> element).

(If you *really* need to have the guest send DNS requests directly to 
the upstream DNS server rather than via dnsmasq, then you would need to 
use <dnsmasq:options> to set something like 
"dhcp-option=option-dns-server,8/8/8/8")

>> domain-name ?

domain can be set with "<domain name='example.com'/>".


> 
> Everything is controlled through the XML document described here:
> 
>     https://libvirt.org/formatnetwork.html
> 
> We don't have separate APIs for each piece of info - just the one
> virNetworkDefineXML API that takes the XML document.
> 
> Regards,
> Daniel
> 




More information about the libvirt-users mailing list