Im ersten Schritt haben wir unser System für Jails vorbereitet und die Basisjail angelegt. Jetzt erstellen wir unsere erste Jail, passen diese an und werden diese starten und stoppen.

  1. Bevor wir aber nun die erste Jail erstellen, müssen wir verhindern, dass andere Dienste auf die IP der neuen Jail hören. Da wir über ein frisch aufgesetztes System verfügen, müssen wir jetzt lediglich den syslog-Dienst (syslogd) binden. Das machen wir über folgende Einträge in der '/etc/rc.conf':

    syslogd_flags="-s -s"

  2. Jetzt erstellen wir die erste Jail, in der wir später den Mailserver installieren. Achte bitte darauf "mail" durch einen Namen deiner Wahl zu ersetzen und ebenso die IP-Adresse an die, die du im ersten Schritt als Alias vergeben hast. 

    # ezjail-admin create mail 10.0.0.1

    Die Jails werden standardmäßig im Verzeichnis '/usr/jails/' angelegt. Daher liegen die Konfigurationsdateien auch im entsprechenden Unterverzeichnis.

  3. Jetzt wird erstmal gemeckert, dass noch verschiedene Dienste auf allen Ports und IPs lauschen, also auch auf der der Jail. Das liegt noch an unserem syslog-Dämon, aber ist für den Moment nicht so schlimm. Als nächstes müssen wir die Datei '/usr/jails/<JAILNAME>/etc/resolv.conf' anlegen. Diese kannst du entweder in einem Flavour anlegen, sodass du bspw. unterscheidest zwischen Online-Jails und Offline-Jails, oder du bindest sie in deine Basisjail ein. Schreibe einfach folgendes in diese Datei:

    nameserver 

    Hinweis: 
    Welchen Nameserver du hier einträgst hängt davon ab, wo der Server steht. Wenn er Teil deines privaten Netzwerkes zuhause ist, dann ist das in der Regel die IP deines Routers. Steht der Server irgendwann in einem Rechenzentrum, dann kann das der Nameserver von deinem Serviceprovider sein, oder, das gilt sowohl für den Rechenzentrumsbetrieb als auch den Betrieb des Servers zuhause, es ist dein eigener Nameserver, der bspw. in einer anderen Jail läuft.

  4. In der Datei '/usr/jails/<JAILNAME>/etc/rc.conf' tragen wir nun noch als Gateway die IP des Hostsystems ein: 

    defaultrouter="" 

    Zudem würde ich den SSH-Dienst starten, da wir so die einzelnen Jails meiner Meinung nach leichter administrieren können. Warum, das siehst du gleich. Wir tragen also in die rc.conf ein: 

    sshd_enable="YES"

    Alternativ kannst du aber auch sshd_enable auf "NO" setzen, dann kannst du den SSH-Server nicht starten. Dennoch kannst du vom Hostsystem aus auf der Shell arbeiten. Das machst du einfach über folgenden Befehl (die JID kriegst du über den Befehl 'jls'): 

    # jexec su

  5. Wir dürfen jetzt nicht vergessen den SSH-Dienst zu konfigurieren. Das machen wir in der Datei '/usr/jails/<JAILNAME>/etc/ssh/sshd_config'. Hierbei ist darauf zu achten, dass wir die IP an unsere neue interne IP binden, in meinem Fall die 10.0.0.1 und den Port ändern, auf den, den wir im Kapitel "pf: Gateway für Jails" in unserer Konfiguration angegeben haben. Wie man das macht entnimmst du bitte auch diesem Kapitel.

  6. So, bevor wir jetzt unsere erste Jail starten, müssen wir in der 'rc.conf' des Hostsystems angeben, dass bzw. ob alle Jails beim Systemstart gestartet werden sollen. Das bewirkt folgender Eintrag in der rc.conf: 

    ezjail_enable="YES" 

    Willst du nur einzelne Jails starten, dann trage das bspw. in die Datei '/etc/rc.local' ein:

    /usr/local/etc/rc.d/ezjail.sh start

  7. Jetzt ist es soweit, alles ist konfiguriert. Wir starten also unsere Jail mit folgendem Befehl: 

    # /usr/local/etc/rc.d/ezjail.sh start

  8. Jetzt ist die Jail gestartet. Wenn du start durch stop ersetzt, wir die Jail wieder beendet. Entsprechend wirkt sich einrestart aus. Ob es funktioniert hat, kannst du über die Konsoleneingabe 

    # jls 

    prüfen. Jetzt werden dir alle Jails aufgelistet, die gerade laufen. Wenn du übrigens den Jailnamen hinter 'start', 'stop' bzw. 'restart' weg lässt, werden alle Jails angesprochen die du angelegt hast. Die Ausgabe gibt dir an erster Stelle auch eine ID für jede Jail an. Die brauchen wir, wenn wir Befehle in der Jail ausführen wollen, ohne bspw. per SSH an dieser angemeldet zu sein.

  9. Wir haben zwar SSH gestartet, allerdings haben wir ja noch keinen Benutzer, der sich überhaupt per SSH anmelden kann. Denn beachte: Was für das Hostsystem gilt, gilt nicht automatisch für die Jails. Das betrifft Programme, das betrifft also auch die Benutzerdatenbank. Wir legen also jetzt einen Benutzer an: 

    # jexec adduser 

    Das weitere Prozedere will ich dir jetzt nicht erklären, das ergibt sich aus den Dialogen. Aber schau dir bitte die Syntax an. steht für die ID der Jail, die dir 'jls' ausgibt. Adduser ist in diesem Fall der Befehl bzw. das Programm. Das kann man also auch für andere Programme nutzen.

  10. Ich habe in meinen Jails einen Link zur Uhrzeit des Hostsystems gelegt. Dadurch muss ich mich nicht darum kümmern, dass die Uhrzeit der Jails mit der des Host übereinstimmt. Das machst du wie folgt: 

    # ln -s /etc/localtime /jails/newjail/etc/localtime

  11. Jetzt bearbeiten wir noch die Datei '/etc/mail/aliases' und fügen folgende Zeile ein, damit Mails an den User "root" an unsere Mail-Adresse weitergeleitet werden:

    root: deine@mailadresse.de

    Jetzt führen wir im Verzeichnis '/etc/mail/aliases" noch den Befehl

    # newaliases

    aus und starten sendmail neu: 

    # /etc/rc.d/sendmail stop 

    # /etc/rc.d/sendmail start