[libvirt-users] LXC: unable to configure networking for LXC

Avi Weit WEIT at il.ibm.com
Thu Mar 11 12:08:48 UTC 2010


Hello,

I would like to set up sshd under an LXC application container and to be
able to connect into it from the host. I was able to achieve that with LXC
tools CLI after setting up a bridge via brctl and creating a proper
lxc.conf file for lxc-execute to use. However, I am unable to do so via
libvirt. I am using libvirt version 0.7.1 installed on fedora 12.

I first verified that the default network is up

[root at enc12 avi]# virsh net-list --all
Name                 State      Autostart
-----------------------------------------
default              active     yes

and that the bridge exists

[root at enc12 avi]# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.000000000000       yes

I then went over the explanations under
http://www.libvirt.org/formatdomain.html#elementsNICS and
http://wiki.libvirt.org/page/Networking

and made sure net.ipv4.ip_forward = 1 under file /etc/sysctl.conf on the
host

after that, I created a container with the following xml specification:

<domain type='lxc'>
  <name>ssh9</name>
  <memory>500000</memory>
  <os>
    <type>exe</type>
    <init>/usr/sbin/sshd</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>
    <interface type='network'>
      <source network='default'/>
   </interface>
    <console type='pty' />
  </devices>
</domain>

Below is the command that verifies LXC is running followed by dumpxml:

[root at enc12 avi]# virsh -c lxc:/// list --all
 Id Name                 State
----------------------------------
1551 ssh9                 running

<domain type='lxc' id='1551'>
  <name>ssh9</name>
  <uuid>ead3dc4f-9b3f-eec0-e83a-1d87e0ffb1eb</uuid>
  <memory>500000</memory>
  <currentMemory>500000</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='i686'>exe</type>
    <init>/usr/sbin/sshd</init>
  </os>
  <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>
    <interface type='network'>
      <mac address='52:54:00:e8:e3:dd'/>
      <source network='default'/>
      <target dev='veth0'/>
    </interface>
    <console type='pty' tty='/dev/pts/1'>
      <source path='/dev/pts/1'/>
      <target port='0'/>
    </console>
  </devices>
</domain>

However, I can not see the IP address of the container so was not able to
connect it. I can also see that the routing table configured on the host -
routes any address destined to network 192.168.122 - into the bridge and I
understood that the container should have constructed with one of the IPs
in the range of 192.168.122.2 to 192.168.122.254 (as defined in dhcp tag
under default network) but it did not happen.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use
Iface
9.148.28.32     *               255.255.255.240 U     1      0        0
eth0
192.168.122.0   *               255.255.255.0   U     0      0        0
virbr0
default         9.148.28.33     0.0.0.0         UG    0      0        0
eth0

I wonder what am  I missing here.

Thanks,
- Avi




More information about the libvirt-users mailing list