LXC (out of date - 2013)

  apt-get install debootstrap lxc bridge-utils

general iptables

  apt-get install iptables-persistent
  iptables -P FORWARD DROP

  iptables-save > /etc/iptables/rules

/etc/iptables/rules:

  *filter
  :INPUT ACCEPT [616:43499]
  :FORWARD DROP [0:0]
  :OUTPUT ACCEPT [445:65622]
  COMMIT
  # Completed on Sun Jun 17 14:25:45 2012

cgroup mount

  cgroup /sys/fs/cgroup cgroup defaults 0 0

Bridge auf Host

Die Container werden mithilfe eines virtuellen Switches verbunden.

Die Container sollen NAT-Networking ins Internet bekommen (post-up / pre-down).

Einzelne Ports der Container sollen am `eth0` des Hosts erreichbar sein.

  auto br0
  iface br0 inet static
          pre-up brctl addbr br0
          post-down brctl delbr br0
          bridge_stp no  
          bridge_fd 0
          bridge_maxwait 0
          address 192.168.0.1
          broadcast 192.168.0.255
          netmask 255.255.255.0
          # IPtables
          post-up iptables -A FORWARD -i br0 -p tcp -s 192.168.0.0/24 -j ACCEPT 
          post-up iptables -A FORWARD -o br0 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT 
          post-up iptables -t nat -A POSTROUTING -p tcp -s 192.168.0.0/24 -o eth0 -j MASQUERADE
          post-up iptables -t nat -A PREROUTING -i eth0 -p tcp \
              -m multiport  --dports 5222,5269 -j DNAT --to 192.168.0.100

          pre-down iptables -D FORWARD -i br0 -p tcp -s 192.168.0.0/24 -j ACCEPT 
          pre-down iptables -D FORWARD -o br0 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT 
          pre-down iptables -t nat -D POSTROUTING -p tcp -s 192.168.0.0/24 -o eth0 -j MASQUERADE
          pre-down iptables -t nat -D PREROUTING -i eth0 -p tcp \
              -m multiport  --dports 5222,5269 -j DNAT --to 192.168.0.100                     

IP-Forward einschalten

Container Template

Das im `lxc` Paket enthaltene Debian-Template `debian` ist nur für lenny. Der Patch erstellt darauf aufbauend das Template `debian-wheezy`.

    --- /usr/lib/lxc/templates/lxc-debian   2010-08-04 19:27:58.000000000 +0200
    +++ /usr/lib/lxc/templates/lxc-debian-wheezy    2012-06-15 08:21:58.000000000 +0200
    @@ -90,7 +90,8 @@
     locales,\
     libui-dialog-perl,\
     dialog,\
    -dhcp-client,\
    +isc-dhcp-client,\
    +vim,\
     netbase,\
     net-tools,\
     iproute,\
    @@ -110,7 +111,7 @@
         echo "Downloading debian minimal ..."
         debootstrap --verbose --variant=minbase --arch=$arch \
            --include $packages \
    -       lenny $cache/partial-$arch http://ftp.debian.org/debian
    +       wheezy $cache/partial-$arch http://ftp.debian.org/debian
         if [ $? -ne 0 ]; then
            echo "Failed to download the rootfs, aborting."
            return 1

Container Anlegen und Konfiguration

Ein neuer Container wird mit `lxc-create -f \<CONFIG> -n \<NAME> -t debian-wheezy` erstellt.

Die `\<CONFIG>` Datei enthält Voreinstellungen. Anzupassen je VM ist hier das `veth.pair` (Name des virtuellen Interface im Host) und `hwaddr`.

  lxc.network.type = veth
  lxc.network.veth.pair = veth_test
  lxc.network.hwaddr = 00:FF:AA:00:00:01
  lxc.network.link = br0
  lxc.network.flags = up

Der Container liegt dann unter /var/lib/lxc.

Der Login ist root/root.

Netzwerkkonfiguration Container

  ...
  auto eth0
  iface eth0 inet static
          address 192.168.0.100 #anpassen
          netmask 255.255.255.0
          gateway 192.168.0.1

Security Sources

  deb     http://security.debian.org/ squeeze/updates  main contrib non-free

ttys anlegen für lxc-console

dafür muss /etc/inittab stimmen und /dev/tty... müssen entsprechend da sein.

tty1 2 3 4 müssen ggf. angelegt werden (cp -a /dev...).

locale einrichten

  dpkg-reconfigure locales

apt einrichten

/etc/apt/apt.conf

  APT::Install-Recommends "0";
  APT::Install-Suggests "0";

Handling

`lxc-start -n \<NAME>` (-d -> daemon)

`lxc-console -n \<NAME>` Attach to tty