Jail sind ja eine feine Sache. Für Testumgebungen oder live-Webserver eignen sie sich einfach perfekt, weil auch sehr wenig Platz für die jails benötigt werden.
Heute habe ich angefangen auf meiner Workstation jails aufzubauen. Da ich aber nicht Netzwerk-Adressen für jail belegen wollte habe ich mir gedacht, ich könnte ja das loopback-Device lo0 mit IP-Adressen aus dem 127.0.0.0/24 Block verwenden. So könnte man einen virtuellen, internen Switch aufbauen. Der jail-Cluster wäre nach außen nicht sichtbar und könnte aber aus dem Netz Informationen abrufen. Cool, oder?
Im ersten Schritt muss man sich Gedanken darüber machen, an welchem Interface die jails „hängen“ sollen. Ich habe mich dazu entschieden das loopback Device zu clonen und dann die IP-Adressen dort anzuhängen.
Dafür trägt man in die /etc/rc.conf
cloned_interfaces=“lo1″
An dieses Interface kann man nun die IP-Adressen definieren. Dafür trägt man den folgenden Befehl auch wieder in die /etc/rc.conf Datei
ipv4_addrs_lo1=“127.0.0.2 127.0.0.3-8″
Es macht auch sehr viel Sinn, die Gateway-Funktionalität in dieselbe Datei mit folgender Zeile einzutragen. So können später die Netzwerk-Subnetze mit einander kommunizieren.
gateway_enable=“YES“
Mit dem Befehl
service netif restart; service routing restart
startet man die betroffenen Dienste neu. Dabei sollte das geclonte Interface erstellt und die Routen neu definiert werden. Mit ifconfig werden alle Interfaces und die dazu gehörigen IP-Adressen aufgelistet.
Im nächsten Schritt kann man nun das ersten Jail einrichten
ezjail-admin create testjail 127.0.0.5
Nach der Einrichtung kann man das Jail schon starten und auch mit
ezjail-admin console testjail
in das Jail gehen.
etwas gemogelt habe ich schon, denn man sollte noch die /etc/resolv.conf, die /etc/make.conf und die /etc/rc.conf entweder kopieren und anpassen. Dann sollte man aus der jail auch ins Internet kommen. Damit die Jail überhaupt in das Internet kommen muss man an der Firewall der Workstation noch das NAT einrichten. Ich verwende pf und da die Regeln sind eigentlich recht einfach.
# Netzwerke
external_if = „bge0“
loop_if = „lo1“
jail_net = $loop_if:network# NAT fuer jails
nat on $external_if from $jail_net to any -> ($external_if)
Bitte beachtet, dass es sich hier um KEINE Produktiv-Systeme handelt. Das heißt hier wird nur das NAT verwendet, damit die Jails mit dem Internet kommunizieren können. Das ist dann wichtig, wenn man Packages oder Ports installieren möchte. Falls man hier Produktiv auf einem Server arbeiten möchte, dann sollten hier nicht nur Regeln für NAT, sondern auch Firelwall Regeln stehen. Außdem muss man die Interfaces an das eigene System anpassen muss. 😉
Wenn man nun noch den pf-Service in der /etc/rc.conf einträgt und dann Service neu startet, dann sollte es auch mit dem Internet-Zugriff klappen…
# Firewall Settings
pf_enable=“YES“
pf_rules=“/etc/pf.conf“
pf_flags=““
Nun kann man auch schon den Ports-Tree herunterladen.
Viel Spass mit der internen Jail-Cloud!
Robert