[libvirt] Assigning a static IP to the Linux Container through libvirt.

Daniel P. Berrange berrange at redhat.com
Fri Mar 5 10:26:20 UTC 2010


On Fri, Mar 05, 2010 at 01:05:51PM +0530, Kumar L Srikanth-B22348 wrote:
> Hi,
> I want to assign a static IP 172.16.1.20 to one of the containers
> created using libvirt.
> For that, I defined a network 'mynetwork' using net-define. The XML
> format for that network is shown below:

The 'net-XXXX' commands are for getting up NAT/routed networking on 
the host. The guest is then connected to this network & gets given
an IP from the range assigned.

>  
> <network>
>   <name>mynetwork</name>
>   <uuid>f76c44dd-bcef-6b45-4a50-00d575a369ad</uuid>
>   <bridge name='virbr1' stp='on' delay='0' />
>   <ip address='172.16.1.20' netmask='255.255.255.0'>
>   </ip>
> </network>

This has configured your *host* to have 172.16.1.20, not the container.

> 
> I started the network 'mynetwork' using net-start.
>  
> virsh # net-list --all
> Name                 State      Autostart
> -----------------------------------------
> default                 active     yes
> mynetwork           active     no
> 
> I created a domain 'vm1_fedora' with libvirt XML:
> <domain type='lxc' id='1'>
>   <name>vm1_fedora</name>
>     <memory>500000</memory>
>       <os>
>           <type>exe</type>
>           <init>/bin/bash</init>
>       </os>
>       <vcpu>1</vcpu>
>       <clock offset='utc'/>
>       <on_poweroff>destroy</on_poweroff>
>       <on_reboot>restart</on_reboot>
>       <on_crash>destroy</on_crash>
>       <devices>
>         <emulator>/usr/libexec/libvirt_lxc</emulator>
>         <filesystem type='mount'>
>           <source dir='/root/lxc/fedora12'/>
>           <target dir='/'/>
>         </filesystem>
>         <filesystem type='mount'>
>           <source dir='/root/lxc/fedora12/dev'/>
>           <target dir='/dev'/>
>         </filesystem>
>         <interface type='network'>
>           <source network='mynetwork'/>
>         </interface>
>         <console type='pty' />
>       </devices>
> </domain>
> 
> But, when I start that domain and see for 'ifconfig', I am not able to
> see the IP address 172.16.1.20 there.

The libvirt configuration only determines *how* a guest / container is
connected to the host. In this case you've conencted it to the virtual
network 'mynetwork'.  It does not do anything to actually configure
the network inside the container - that still needs to be done using the
regular distro initscripts or manual ifconfig inside the container.

> [root at localhost /]# ifconfig
> eth0      Link encap:Ethernet  HWaddr 52:54:00:53:4D:BF
>           inet6 addr: fe80::5054:ff:fe53:4dbf/64 Scope:Link
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:18 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:840 (840.0 b)  TX bytes:384 (384.0 b)

Inside your container you need to setup the config for eth0 still - it does
not happen automatically


Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list