Jun 10, 2012
tom

When I restart my LXC environment, the container does not re-bind to the IP address

Question

The IP does no longer respond to a remote ping

With restart I mean:

lxc-stop -n vm3
lxc-start -n vm3 -f /etc/lxc/vm3.conf -d 

/etc/network/interfaces

auto lo
iface lo inet loopback
up route add -net 127.0.0.0 netmask 255.0.0.0 dev lo
down route add -net 127.0.0.0 netmask 255.0.0.0 dev lo# device: eth0
auto eth0
iface eth0 inet manualauto br0
iface br0 inet static
       address 192.22.189.58
       netmask 255.255.255.248
       gateway 192.22.189.57
       broadcast 192.22.189.63
       bridge_ports eth0
       bridge_fd 0
       bridge_hello 2
       bridge_maxage 12
       bridge_stp off
    post-up ip route add 192.22.189.59 dev br0
    post-up ip route add 192.22.189.60 dev br0
    post-up ip route add 192.22.189.61 dev br0
    post-up ip route add 192.22.189.62 dev br0

/etc/lxc/vm3.conf

lxc.utsname = vm3
lxc.rootfs = /var/lib/lxc/vm3/rootfslxc.tty = 4
#lxc.pts = 1024  # pseudo  tty  instance for strict isolation
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.mtu = 1500#lxc.cgroup.cpuset.cpus = 0
# security parameter
lxc.cgroup.devices.deny = a # Deny all access to devices
lxc.cgroup.devices.allow = c 1:3 rwm   # dev/null
lxc.cgroup.devices.allow = c 1:5 rwm   # dev/zero
lxc.cgroup.devices.allow = c 5:1 rwm   # dev/console
lxc.cgroup.devices.allow = c 5:0 rwm   # dev/tty
lxc.cgroup.devices.allow = c 4:0 rwm   # dev/tty0
lxc.cgroup.devices.allow = c 4:1 rwm   # dev/tty1
lxc.cgroup.devices.allow = c 4:2 rwm   # dev/tty2
lxc.cgroup.devices.allow = c 1:9 rwm   # dev/urandon
lxc.cgroup.devices.allow = c 1:8 rwm   # dev/random
lxc.cgroup.devices.allow = c 136:* rwm # dev/pts/*
lxc.cgroup.devices.allow = c 5:2 rwm   # dev/pts/ptmx
lxc.cgroup.devices.allow = c 254:0 rwm # rtc# mounts point
lxc.mount.entry=proc   /var/lib/lxc/vm3/rootfs/proc proc nodev,noexec,nosuid 0 0
lxc.mount.entry=devpts /var/lib/lxc/vm3/rootfs/dev/pts devpts defaults 0 0
lxc.mount.entry=sysfs  /var/lib/lxc/vm3/rootfs/sys sysfs defaults  0 0
Asked by RoboTamer

Answer

You’re writing about Linux containers (LXC). You have the ability to assign a static IP address in the container’s configuration file. Here’s an example from my environment:

lxc.utsname = MPG_Web
lxc.tty = 4
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.mtu = 1500
lxc.network.ipv4 = 172.16.16.110
lxc.network.hwaddr = 00:30:6E:08:EC:80
lxc.rootfs = /srv/lxc/MPG_Web
lxc.mount = /etc/lxc/MPG_Web.fstab

You seem to be missing the lxc.network.ipv4 directive in your setup.

Unfortunately, you will need to use a script to inject your default and static routes. This isn’t controllable from the LXC configuration file (yet).

Answered by ewwhite

Related posts:

  1. Running linux containers (lxc) on ubuntu to isolate web server processes (ruby/thin)
  2. LXC container templates?
  3. Bridging Network Devices with Multiple IPs
  4. How to stop ethernet interface in bridge configuration from obtaining IP address via DHCP
  5. Multiple NICs with static IP address, default gateway problems

Leave a comment