In diesem Artikel möchte ich erklären, was genau Jails sind, welche Vorteile sie bringen und natürlich wie man eine konfiguriert.
Der Einsatz von Jails liegt schon eine Weile zurück und wurde erstmals unter FreeBSD 4.0 implementiert. Eine Jail (= Gefängnis) ist eine in sich geschlossene Umgebung mit eigener IP-Adresse, Hostname, etc und lässt sich eigentlich mit einem Docker-Container gut vergleichen. Die Prozesse innerhalb der Jail können nicht auf das System außerhalb der Jail zugreifen oder verändern. So bietet sich eine Jail wunderbar als Testumgebung, um schon einmal einen Vorteil zu nennen. Jails sind quasi losgelöst vom eigentlichen Betriebssystem. Außerdem ist es möglich verschiedene Server-Dienste wie DHCP, DNS oder auch ein LDAP in jeweils einer eigenen Jail laufen zu lassen, um somit Struktur und Unabhängigkeit zu schaffen.
Grundlegende Konfiguration von Jails
Um hier erstmal einen Grundstein in Sachen Jails zu setzen, zeige ich jetzt ohne groß auszuschweifen, wie eine Jail aufzusetzen ist.
Als ersten Schritt muss die Nutzung von Jails aktiviert werden:
service jail enable
Danach bestimmen wir einen Speicherort, unter dem die Jail liegen soll. Ich lege mir dazu, aus alter Gewohnheit unter /usr/jails/ einen neuen Ordner an und benenne diesen nach meiner Jail:
mkdir /usr/jails/test
Ist das geschehen, kann mittels des Tools bsdinstall die Jail entsprechend installiert werden.
bsdinstall jail /usr/jails/test
Hier öffnet sich dann der Installer, der einen durch den verkürzten Installationsprozess führt. Ich empfehle hier für die langfristige Planung das src-Paket mitzuinstallieren, um später die Jail auch updaten zu können!
Ist die Jail abschließend installiert, können wir die Parameter der Jail vergeben.
Dazu habe ich unter /etc/jail.conf angelegt, falls noch nicht vorhanden, und folgende Einträge gesetzt:
test {
host.hostname = test;
ip4.addr = 192.168.178.85;
interface = em0;
path = "/usr/jails/test";
mount.devfs="true";
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
}
Hierbei sind Hostname, IP, die Pfadangabe (path) und das Ausführungskommando beim Starten (exec.start) unter dem sich die Jail befindet, verpflichtend (oben fett markiert). Ich möchte angeschlossene Geräte eventuell mounten können, daher nehme ich mir noch den mount-Parameter mit rein. Mit dem Eintrag interface = em0 weise ich die IP-Adresse der Schnittstelle zu.
Damit wäre die Jail nun einsatzbereit. Zum Starten nimmt man folgendes Kommando:
service jail start <Jail-Name>
service jail start test
Um den Status zu überprüfen gebe ich folgenden Befehl ein
service jail status test
und erhalte dabei folgenden Output, wenn alles richtig funktioniert:
root@byte-sized:/usr/jails # service jail status test
JID IP Address Hostname Path
test 192.168.178.85 test.byte-sized /usr/jails/test
Hervorragend! Die Jail ist korrekt installiert und konfiguriert!
Um in die Jail hineinzugelangen ist folgender Befehle nötig:
root@byte-sized:/usr/jails # jexec test
root@test: #
Wir sehen hier also, dass wir jetzt als root in unserer jail namens test angemeldet sind. Jetzt sind wir in der Lage Dienste in der Jail, wie gewohnt zu installieren, bloß diesmal innerhalb einer Jail statt auf dem Host-System direkt. Aber vor dem „rumspielen“ möchte ich noch erst ein paar weitere wichtige Kommandos zum Arbeiten mit Jails zeigen.
Um die Jail wieder zu verlassen ist lediglich ein exit einzutippen (man beachte den Wechsel des Hostnames):
root@test:/ # exit
root@byte-sized:
Ich beende hier für das Tutorial allerdings nicht meine Jail. Mir ist an der Stelle noch wichtig zu zeigen, wie Jails im Allgemeinen zu updaten sind. Eine Jail sollte grundsätzlich immer von außerhalb, also vom Host-System, nicht innerhalb der Jail selbst geupdated werden.
freebsd-update -b /usr/jails/test fetch
freebsd-update -b /usr/jails/test install
Für das Upgraden von Releases ist erst – ganz wichtig – das Host-System entsprechend zu upgraden (Link). Danach kann die Jail auf folgendem Wege ebenfalls dem Upgrade unterzogen werden:
freebsd-update -b /usr/jails/test --currently-running 13.0-RELEASE -r 13.1-RELEASE upgrade
freebsd-update -b /usr/jails/test install
service jail restart test
freebsd-update -b /usr/jails/test install
Infolgedessen sollten auch die Pakete danach geupgraded werden:
pkg -j test upgrade -f
service jail restart test
Möchtest du eine Jail löschen, stoppe erst den Service und fahre dann mit rm -rf und dem ensprechenden Pfad fort:
service jail stop test
rm -rf /usr/jails/test
Abschluss
Das Thema Jails ist natürlich noch viel umfangreicher, aber ich denke für einen Start im Umgang mit Jails ist das absolut ausreichend. Ich hoffe, es hat Spaß gemacht und jeder konnte etwas für sich mitnehmen.
Join the discussion
0 replies to “Jails unter FreeBSD 13”
[…] Kompatibilitätsmodus als Jail – darüber lässt sich streiten. Ein kurzen Einstieg zum Thema Jails habe ich vor nicht all zu langer Zeit auf diesem Blog veröffentlicht. Doch heute soll es um etwas […]