Turris Omnia: LXC Container anlegen

Hinweis: Dieser Artikel wurde ursprünglich auf klein-gedruckt.de veröffentlicht.

Ein Grund warum ich den Turris Omnia gekauft habe, ist die Möglichkeit virtuelle Maschinen zu betreiben. Auf diese Weise kann ich Dienste im internen Netzwerk anbieten, die nicht direkt auf dem Router laufen. Zur Virtualisierung nutzt der Turris Omnia LXC (Linux Containers), das im Gegensatz zu anderen Virtualisierungslösungen keine virtuelle Maschinen nutzt, sondern  keine  eine virtuelle Umgebung bereitstellt. In dieser Umgebung können zwar eigenständige Prozesse ausgeführt werden, aber alle LXC-Container nutzen gemeinschaftlich den Kernel des Hostsystems. Die LXC-Virtualisierung ist damit besonders Ressourcen schonend.

1| Container anlegen

Wie im HowTo auf turris.cz beschrieben ist die grundlegende Einrichtung eines LXC-Containers wirklich sehr einfach: Über LuCI kann im Menü Services > LXC Containers einfach ein neuer Container angelegt werden (siehe Punkt 1 bis 3 im Screenshot). Es muss lediglich ein Name vergeben und ein Template ausgewählt werden. Ich habe mich für ein Debian entschieden. Direkt nach dem Anlegen des Containers kann das virtualisierte Betriebssystem über die Web-Oberfläche LuCI (Menüpunkt Services > LXC Containers) gestartet werden (siehe Punkt 4 im Screenshot). Alternativ kann er auch über die Kommandozeile angelegt, gestartet und gestoppt werden:

# Container auf Basis eines Templates erstellen.
# Template kann über ein Menü ausgewählt werden.
lxc-create -t download -n my_vm

# Starten des Containers "my_vm"
lxc-start -n my_vm

# Container my_vm stoppen
lxc-stop -n my_vm

# Informationen zum Container my_vm anzeigen
lxc-info -n my_vm

2| Auf Container zugreifen

Nachdem ich den neuen Container gestartet habe, wurde diesem leider keine IP-Adresse per DHCP zugeordnet. Daher stellt sich die Frage wie denn nun auf den Container zugegriffen wird? Ganz einfach: mit dem Kommando lxc-attac h:

# Mit dem Container my_vm verbinden
lxc-attach -n my_vm

3| Netzwerkzugriff einrichten

Da mein Server immer unter der gleichen IP-Adresse erreichbar sein soll, habe ich dem Netzwerkinterface zunächst eine statische IP-Adresse zugeordnet. Dazu muss im Container-OS die Datei /etc/network/interface s angepasst werden:

root@my-vm:~ # cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.23
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1

Nach einem  Reboot des Containers sollte dann auch das Netzwerkinterface korrekt konfiguriert sein und eine Verbindung ins Internet möglich sein:

root@internal:~ # ifconfig eth0
eth0 Link encap:Ethernet HWaddr aa:bb:cc:dd:ee:ff
 inet addr:192.168.1.23 Bcast:192.168.1.255 Mask:255.255.255.0
 inet6 addr: fd9f:aaaa:bbbb:0:cccc:dddd:eeee:ffff/64 Scope:Global
 inet6 addr: fe80::aaaa:bbbb:cccc:dddd/64 Scope:Link
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:294652 errors:0 dropped:0 overruns:0 frame:0
 TX packets:226280 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000
 RX bytes:44850868 (42.7 MiB) TX bytes:75050947 (71.5 MiB)

root@internal:~ # route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
root@internal:~ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=39.0 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=28.6 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 28.600/33.848/39.097/5.251 ms
root@internal:~ #

Mit der Internetverbindung können nun, wie bei Debian üblich, Pakete mit apt-get  installiert werden. Zunächst sollte SSH installiert werden, damit direkt per SSH auf den Container zugegriffen werden kann und der Umweg über das Host-OS und lxc-attach  entfallen kann:

apt-get update && apt-get upgrade
apt-get install openssh-client openssh-server openssh-sftp-server

Wie der SSH-Server konfiguriert wird, möchte ich hier nicht weiter beschreiben. Eine entsprechende Anleitung gibt es im Artikel “SSH absichern”. Außerdem bietet es sich an das Betriebssystem nach seinen Vorstellungen anzupassen. Das Gast-Betriebssystem kann wie ein normales Debian Jessie angepasst und konfiguriert werden.

4| Automatischer Start von Containern

Damit der Container beim Reboot des Turris Omnia automatisch mit gestartet wird, muss die Datei /etc/config/lxc-auto folgendermaßen angepasst werden:

config container
    option name my_vm
    option timeout 60

Die Konfiguration ist dabei ziemlich eindeutig. Die Option timeout 60  gibt an, dass beim herunterfahren bis zu 60 Sekunden auf ein ordnungsgemäßes beenden des Containers gewartet werden soll. Werden mehrere Container auf dem Turris Omnia betrieben, so können in der Datei auch mehrere container-Abschnitte mit unterschiedlichen name-Optionen eingetragen werden. Auch wenn das HowTo auf turris.cz vermuten lässt das nach dem Eintrag der Container beim Reboot automatisch gestartet wird, so muss zu guter letzt noch der Service lxc-auto  auf dem Host aktiviert werden. Am einfachsten ist dies über den Menüpunkt System > Startup in  LuCI (siehe Screenshot).

Kommentare

PostadresseE-MailadresseFestnetzMobiltelefonSMS/SignalThreemaTwitter DirektnachrichtFAXWeb Page