jails mit loopback Adressen

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.

ifconfig

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.

ezjail-admin_console

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.

ezjail-admin_console

Viel Spass mit der internen Jail-Cloud!

Robert

Robert Friemer

Robert Friemer arbeitet mit Windows seit Version 3.11, mit Linux seit Version 2.0 und mit FreeBSD seit Version 3.8. Er hat schon so einige Irrungen und Wirrungen in der IT mit erlebt und ist seit einigen Jahren (fast) Windows-los. Dank Pinguin und vor allem dank Beastie.

More Posts - Website