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