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