diff options
Diffstat (limited to 'de_DE.ISO8859-1/books/handbook/jails/chapter.xml')
-rw-r--r-- | de_DE.ISO8859-1/books/handbook/jails/chapter.xml | 1832 |
1 files changed, 0 insertions, 1832 deletions
diff --git a/de_DE.ISO8859-1/books/handbook/jails/chapter.xml b/de_DE.ISO8859-1/books/handbook/jails/chapter.xml deleted file mode 100644 index b32bb4f501..0000000000 --- a/de_DE.ISO8859-1/books/handbook/jails/chapter.xml +++ /dev/null @@ -1,1832 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!-- - The FreeBSD Documentation Project - The FreeBSD German Documentation Project - - $FreeBSD$ - $FreeBSDde: de-docproj/books/handbook/jails/chapter.xml,v 1.23 2011/05/25 20:42:25 jkois Exp $ - basiert auf: r54360 ---> -<chapter xmlns="http://docbook.org/ns/docbook" - xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" - xml:id="jails"> - <info> - <title>Jails</title> - - <authorgroup> - <author> - <personname> - <firstname>Matteo</firstname> - <surname>Riondato</surname> - </personname> - <contrib>Beigetragen von </contrib> - </author> - </authorgroup> - <authorgroup> - <author> - <personname> - <firstname>Oliver</firstname> - <surname>Peter</surname> - </personname> - <contrib>Übersetzt von </contrib> - </author> - <author> - <personname> - <firstname>Dirk</firstname> - <surname>Arlt</surname> - </personname> - </author> - <author> - <personname> - <firstname>Johann</firstname> - <surname>Kois</surname> - </personname> - </author> - </authorgroup> - </info> - - <indexterm><primary>jails</primary></indexterm> - - <sect1 xml:id="jails-synopsis"> - <title>Übersicht</title> - - <para>Da die Systemadministration eine schwierige Aufgabe ist, - wurden viele Werkzeuge entwickelt, die Administratoren bei der - Installation, Konfiguration und Wartung ihrer Systeme - unterstützen sollen. Eines dieser Werkzeuge, die verwendet - werden können um die Sicherheit eines &os;-Systems zu - erhöhen, sind <firstterm>Jails</firstterm>. Jails sind seit - &os; 4.X verfügbar und werden ständig in ihrer - Nützlichkeit, Leistung, Zuverlässigkeit und Sicherheit - verbessert. Jails können als eine Art von - Betriebssystem-Virtualisierung angesehen werden.</para> - - <para>Jails setzen auf dem &man.chroot.2;-Konzept auf, das dazu - verwendet wird das root-Verzeichnis einer Reihe von Prozessen - zu ändern, um so eine separate, sichere Umgebung zu schaffen. - Prozesse, die in einer chroot-Umgebung erstellt wurden, können - nicht auf Dateien oder Ressourcen zugreifen, die sich außerhalb - dieser Umgebung befinden. Dadurch ist es einem kompromittierten - Dienst nicht möglich, das gesamte System zu kompromittieren. - Im Laufe der Zeit wurden viele Wege gefunden, um aus einer - chroot-Umgebung auszubrechen, so dass es für die Sicherung von - Diensten nicht die ideale Lösung ist.</para> - - <para>Jails verbessern das traditionelle chroot-Konzept auf - unterschiedlichste Art und Weise. In einer traditionellen - chroot-Umgebung sind Prozesse auf den Bereich des Dateisystems - beschränkt, auf den sie zugreifen können. Der Rest der - Systemressourcen (wie zum Beispiel eine Reihe von - Systembenutzern, die laufenden Prozesse oder das - Netzwerk-Subsystem) teilen sich die chroot-Prozesse mit dem - Host-System. Jails erweitern dieses Modell nicht nur auf die - Virtualisierung des Zugriffs auf das Dateisystem, sondern auch - auf eine Reihe von Benutzern und das Netzwerk-Subsystem. Zudem - stehen weitere Möglichkeiten zur Verfügung, den Zugriff auf eine - Jail-Umgebung zu kontrollieren.</para> - - <para>Eine Jail zeichnet sich durch folgende Merkmale - aus:</para> - - <itemizedlist> - <listitem> - <para>Ein Unterverzeichnisbaum: dies ist der Ausgangspunkt der - Jail. Einem Prozess, der innerhalb der Jail läuft, ist es - nicht mehr möglich, aus diesem Unterverzeichnis - auszubrechen.</para> - </listitem> - - <listitem> - <para>Ein Hostname: dieser Name wird für die Jail - verwendet.</para> - </listitem> - - <listitem> - <para>Eine <acronym>IP</acronym> Adresse: diese Adresse wird - der Jail zugewiesen. Die <acronym>IP</acronym>-Adresse - einer Jails ist üblicherweise ein Adress-Alias auf eine - existierende Netzwerkschnittstelle.</para> - </listitem> - - <listitem> - <para>Ein Kommando: der Pfad einer ausführbaren Datei, die - innerhalb der Jail ausgeführt werden soll. Dieser Pfad wird - relativ zum root-Verzeichnis der Jail-Umgebung - angegeben.</para> - </listitem> - </itemizedlist> - - <para>Jails haben einen eigenen Satz von Benutzern und ihren - eigenen <systemitem class="username">root</systemitem>-Konto. - Die Rechte dieser Benutzer sind nur auf die Jail-Umgebung - beschränkt. Der Benutzer <systemitem - class="username">root</systemitem> der Jail-Umgebung ist nicht - dazu berechtigt, kritische Operationen am System außerhalb der - angebundenen Jail-Umgebung durchzuführen.</para> - - <para>Dieses Kapitel bietet einen Überblick über die Terminologie - und die Kommandos zur Verwaltung von &os; Jails. Jails sind ein - sehr mächtiges Werkzeug für Administratoren und fortgeschrittene - Anwender.</para> - - <!-- - <important> - <para>Jails sind ein mächtiges Werkzeug, aber sie sind kein - Sicherheits-"Allheilmittel". Es ist wichtig zu beachten, dass - es für einen Prozess in der Jail nicht möglich ist, von selbst - auszubrechen. Es gibt jedoch Möglichkeiten, in denen ein - unpriviligierter Benutzer außerhalb der Jail, mit einem - priviligierten Benutzer innerhalb der Jail kooperiert, und - somit erhöhte Rechte in der Host-Umgebung erlangt.</para> - - <para>Den meisten dieser Angriffe kann vorgebeugt werden, indem - sichergestellt wird, dass das Rootverzeichnis der Jail für - unpriviligierte Benutzer der Host-Umgebung nicht zugänglich - ist.</para> - </important> ---> - <para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie</para> - - <itemizedlist> - <listitem> - <para>Wissen, was eine Jail ist und welche Verwendungszwecke - es dafür unter &os; gibt.</para> - </listitem> - - <listitem> - <para>Wissen, wie man eine Jail erstellt, startet und - anhält.</para> - </listitem> - - <listitem> - <para>Die Grundlagen der Jail-Administration (sowohl - innerhalb als auch außerhalb des Jails) kennen.</para> - </listitem> - </itemizedlist> - - <important> - <para>Jails sind ein mächtiges Werkzeug, aber sie sind kein - Sicherheits-"Allheilmittel". Es ist wichtig zu beachten, dass - es für einen Prozess in der Jail nicht möglich ist, von selbst - auszubrechen. Es gibt jedoch Möglichkeiten, in denen ein - unprivilegierter Benutzer außerhalb der Jail, mit einem - privilegierten Benutzer innerhalb der Jail kooperiert, und - somit erhöhte Rechte in der Host-Umgebung erlangt.</para> - - <para>Den meisten dieser Angriffe kann vorgebeugt werden, indem - sichergestellt wird, dass das Rootverzeichnis der Jail für - unprivilegierte Benutzer der Host-Umgebung nicht zugänglich - ist.</para> - </important> - </sect1> - - <sect1 xml:id="jails-terms"> - <title>Jails - Definitionen</title> - - <para>Um die für den Einsatz von Jails benötigten os;-Funktionen, - deren Interna sowie die Art und Weise, mit der diese mit anderen - Teilen des Betriebssystems interagieren, zu erläutern, werden in - diesem Kapitel folgende Definitionen verwendet:</para> - - <variablelist> - <varlistentry> - <term>&man.chroot.8; (-Befehl)</term> - <listitem> - <para>Ein Werkzeug, das den &os;-Systemaufruf &man.chroot.2; - verwendet, um das Wurzelverzeichnis eines Prozesses und - all seiner Nachkömmlinge zu ändern.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>&man.chroot.2; (-Umgebung)</term> - <listitem> - <para>Die Umgebung eines Prozesses, der in einem - <quote>chroot</quote> läuft. Diese beinhaltet - Ressourcen, wie zum Beispiel sichtbare Abschnitte - des Dateisystems, verfügbare Benutzer- und - Gruppenkennungen, Netzwerkschnittstellen und weitere - IPC-Mechanismen und so weiter.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>&man.jail.8; (-Befehl)</term> - <listitem> - <para>Das Systemadministrationswerkzeug, welches es erlaubt, - Prozesse innerhalb der Jail-Umgebung zu starten.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>Host (-Benutzer, -Prozess, -System)</term> - <listitem> - <para>Das verwaltende System einer Jail-Umgebung. Das - Host-System hat Zugriff auf alle verfügbaren - Hardwareressourcen und kann sowohl innerhalb als auch - außerhalb der Jail-Umgebung Prozesse steuern. Einer der - wichtigsten Unterschiede des Host-System einer Jails ist, - dass die Einschränkungen, welche für die - Superuser-Prozesse innerhalb eines Jails gelten, nicht - für die Prozesse des Host-Systems gelten.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>Gast (-Benutzer, -Prozess, -System)</term> - <listitem> - <para>Ein Prozess, ein Benutzer oder eine andere Instanz, - deren Zugriff durch eine &os;-Jail eingeschränkt - ist.</para> - </listitem> - </varlistentry> - </variablelist> - </sect1> - - <sect1 xml:id="jails-build"> - <title>Einrichtung und Verwaltung von Jails</title> - - <para>Einige Administratoren unterscheiden zwei verschiedene - Jail-Arten: <quote>Komplette</quote> Jails, die ein echtes - &os; darstellen und Jails für einen bestimmten - <quote>Dienst</quote>, die nur einer bestimmten Anwendung - oder einem Dienst (der möglicherweise mit besonderen - Privilegien laufen soll) gewidmet sind. Dies ist aber nur - eine konzeptuelle Unterscheidung, die Einrichtung einer - Jail bleibt davon gänzlich unberührt. Bei der Erstellung einer - kompletten Jail gibt es zwei Optionen für die Quelle des - Userlands: vorkompilierte Binärpakete (im Lieferumfang der - Installationsmedien enthalten) oder die Kompilierung aus dem - Quelltext.</para> - - <sect2> - <title>Eine Jail installieren</title> - - <sect3 xml:id="jails-install-internet"> - <title>Eine Jail aus dem Internet installieren</title> - - <para>Der Werkzeug &man.bsdinstall.8; kann verwendet werden, - um die für eine Jail benötigten Binärdateien zu holen und zu - installieren. Dies geht durch die Auswahl eines - Spiegelservers, welche Distributionen in das - Zielverzeichnis installiert werden sollen, sowie die - grundlegende Konfiguration einer Jail:</para> - - <screen>&prompt.root; <userinput>bsdinstall jail <replaceable>/pfad/zur/jail</replaceable></userinput></screen> - - <para>Nachdem der Befehl ausgeführt wurde, wird der - Host für den Betrieb der Jail konfiguriert.</para> - </sect3> - - <sect3 xml:id="jails-install-iso"> - <title>Eine Jail aus einer ISO-Datei installieren</title> - - <para>Um das Basissystem von Installationsmedien zu installieren, - erstellen Sie zunächst das Rootverzeichnis für die Jail. Dazu - setzen Sie <varname>DESTDIR</varname> auf das entsprechende - Verzeichnis.</para> - - <para>Starten Sie eine Shell und legen Sie - <varname>DESTDIR</varname> fest:</para> - - <screen>&prompt.root; <userinput>sh</userinput> -&prompt.root; <userinput>export DESTDIR=<replaceable>/hier/ist/die/jail</replaceable></userinput></screen> - - <para>Hängen Sie das Installationsmedium wie in &man.mdconfig.8; - beschrieben ein, wenn Sie von einem - ISO-Abbild installieren:</para> - - <screen>&prompt.root; <userinput>mount -t cd9660 /dev/`mdconfig -f cdimage.iso` /mnt</userinput> -&prompt.root; <userinput>cd /mnt/usr/freebsd-dist/</userinput></screen> - - <para>Extrahieren Sie die Binärdateien aus den Archiven des - Installationsmediums in das entsprechende Verzeichnis. Es wird - mindestens das <quote>base</quote>-Set benötigt, aber Sie können - auch eine komplette Installation durchführen, wenn Sie dies - bevorzugen.</para> - - <para>Um lediglich das Basissystem zu installieren, führen Sie - dieses Kommando aus:</para> - - <screen>&prompt.root; <userinput>tar -xf base.txz -C $DESTDIR</userinput></screen> - - <para>Führen Sie folgendes Kommando aus, um alles - außer den Kernel zu installieren:</para> - - <screen>&prompt.root; <userinput>for set in base ports; do tar -xf $set.txz -C $DESTDIR ; done</userinput></screen> - </sect3> - - <sect3 xml:id="jails-install-source"> - <title>Eine Jail aus den Quellen bauen und - installieren</title> - - <para>Die Manualpage &man.jail.8; beschreibt die Erstellung einer - Jail wie folgt:</para> - - <screen>&prompt.root; <userinput>setenv D <replaceable>/hier/ist/die/jail</replaceable></userinput> -&prompt.root; <userinput>mkdir -p $D</userinput> <co xml:id="jailpath"/> -&prompt.root; <userinput>cd /usr/src</userinput> -&prompt.root; <userinput>make buildworld</userinput> <co xml:id="jailbuildworld"/> -&prompt.root; <userinput>make installworld DESTDIR=$D</userinput> <co xml:id="jailinstallworld"/> -&prompt.root; <userinput>make distribution DESTDIR=$D</userinput> <co xml:id="jaildistrib"/> -&prompt.root; <userinput>mount -t devfs devfs $D/dev</userinput> <co xml:id="jaildevfs"/></screen> - - <calloutlist> - <callout arearefs="jailpath"> - <para>Das Festlegen des Installationsorts für das Jail - eignet sich am besten als Startpunkt. Hier wird sich die - Jail innerhalb des Host-Dateisystems befinden. Eine gute - Möglichkeit wäre etwa <filename>/usr/jail/name_der_jail</filename>, - wobei <replaceable>name_der_jail</replaceable> den Hostname - darstellt, über den die Jail identifiziert werden - soll. <filename>/usr/</filename> stellt normalerweise - ausreichend Platz für eine Jail zur Verfügung. Bedenken - Sie, dass eine <quote>komplette</quote> Jail ein Replikat - einer jeden Datei der Standardinstallation des - &os;-Basissystems enthält.</para> - </callout> - - <callout arearefs="jailbuildworld"> - <para>Wenn Sie bereits ihre Systemanwendungen mittels - <command>make world</command> oder - <command>make buildworld</command> neu erstellt haben, - können Sie diesen Schritt überspringen und die - Systemanwendungen in die neue Jail installieren.</para> - </callout> - - <callout arearefs="jailinstallworld"> - <para>Dieser Befehl wird den Verzeichnisbaum mit allen - notwendigen Binärdateien, Bibliotheken, Manualpages - usw. erstellen.</para> - </callout> - - <callout arearefs="jaildistrib"> - <para>Der <buildtarget>distribution</buildtarget>-Befehl - lässt <application>make</application> alle benötigten - Konfigurationsdateien installieren, es werden also alle - installierbaren Dateien aus - <filename>/usr/src/etc/</filename> in das Verzeichnis - <filename>/etc</filename> der Jail installiert (also nach - <filename>$D/etc/</filename>).</para> - </callout> - - <callout arearefs="jaildevfs"> - <para>Das Einhängen des &man.devfs.8;-Dateisystems - innerhalb der Jail ist nicht unbedingt notwendig. - Allerdings benötigt fast jede Anwendung Zugriff auf - wenigstens ein Gerät. Es ist daher sehr wichtig, - den Zugriff auf Devices aus der Jail heraus zu - kontrollieren, da unsaubere Einstellungen es einem - Angreifer erlauben könnten, in das System einzudringen. - Die Kontrolle über &man.devfs.8; erfolgt durch die in - den Manualpages &man.devfs.8; und &man.devfs.conf.5; - beschriebenen Regeln.</para> - </callout> - </calloutlist> - </sect3> - </sect2> - - <sect2> - <title>Den Host konfigurieren</title> - - <para>Ist die Jail erst einmal erstellt, kann sie durch - &man.jail.8; gestartet werden. &man.jail.8; benötigt zwingend - mindestens vier Argumente, die in <xref - linkend="jails-synopsis"/> des Handbuchs beschrieben sind. - Weitere Argumente sind möglich, um beispielsweise die Jail mit - den Berechtigungen eines bestimmten Benutzers laufen zu lassen. - Das Argument <option><replaceable>command</replaceable></option> - hängt vom Typ der Jail ab; für ein - <emphasis>virtuelles System</emphasis> ist - <filename>/etc/rc</filename> eine gute Wahl, da dies dem - Startvorgang eines echten &os;-Systems entspricht. Bei einer - <emphasis>Service</emphasis>-Jail hängt dieses von der Art des - Dienstes ab, der in der Jail laufen soll.</para> - - <para>Jails werden häufig mit dem Betriebssystem gestartet, - da der <filename>rc</filename>-Mechanismus von &os; dafür - eine einfach zu realisierende Möglichkeit bietet.</para> - - <procedure> - <step> - <para>Konfigurieren Sie die Jail in - <filename>/etc/jail.conf</filename>:</para> - - <programlisting><replaceable>www</replaceable> { - host.hostname = <replaceable>www.example.org</replaceable>; # Hostname - ip4.addr = <replaceable>192.168.0.10</replaceable>; # IP address of the jail - path = "<replaceable>/usr/jail/www</replaceable>"; # Path to the jail - devfs_ruleset = "<replaceable>www_ruleset</replaceable>"; # devfs ruleset - mount.devfs; # Mount devfs inside the jail - exec.start = "/bin/sh /etc/rc"; # Start command - exec.stop = "/bin/sh /etc/rc.shutdown"; # Stop command -}</programlisting> - - <para>Um die Jails mit dem Betriebssystem zu starten, fügen - Sie folgende Zeile in - <filename>/etc/rc.conf</filename> ein:</para> - - <programlisting>jail_enable="YES" # Set to NO to disable starting of any jails</programlisting> - - <para>Beim Start einer in &man.jail.conf.5; konfigurierten Jail - wird das <filename>/etc/rc</filename>-Skript der Jail (das - "annimmt", dass es sich in einem kompletten System befindet) - aufgerufen. Für Service-Jails sollten die Startskripte - der Jail durch das Setzen der Option - <varname>exec.start</varname> - entsprechend angepasst werden.</para> - - <note> - <para>Eine vollständige Liste der Optionen findet sich - in der Manualpage &man.jail.conf.5;.</para> - </note> - </step> - </procedure> - - <para>&man.service.8; kann zum manuellen Starten und Stoppen der - Jail genutzt werden, wenn ein Eintrag in - <filename>jail.conf</filename> angelegt wurde:</para> - - <screen>&prompt.root; <userinput>service jail start <replaceable>www</replaceable></userinput> -&prompt.root; <userinput>service jail stop <replaceable>www</replaceable></userinput></screen> - - <para>Jails können mit &man.jexec.8; heruntergefahren werden. - Führen Sie zunächst &man.jls.8; aus, um die - <varname>JID</varname> der Jail ausfindig zu machen. - Anschließend können Sie &man.jexec.8; benutzen, um das - Shutdown-Skript in der Jail auszuführen.</para> - - <screen>&prompt.root; <userinput>jls</userinput> - JID IP Address Hostname Path - 3 192.168.0.10 www /usr/jail/www -&prompt.root; <userinput>jexec <replaceable>3</replaceable> /etc/rc.shutdown</userinput></screen> - - <para>Weitere Informationen zu diesem Thema finden Sie in der - Manualpage &man.jail.8;.</para> - </sect2> - </sect1> - - <sect1 xml:id="jails-tuning"> - <title>Feinabstimmung und Administration</title> - - <para>Es gibt verschiedene Optionen, die für jede Jail - gesetzt werden können und verschiedene Wege, ein - &os;-Host-System mit Jails zu kombinieren. Dieser Abschnitt - zeigt Ihnen:</para> - - <itemizedlist> - <listitem> - <para>Einige zur Verfügung stehende Optionen zur - Abstimmung des Verhaltens und der Sicherheitseinstellungen, - die mit einer Jail-Installation ausgeführt werden - können.</para> - </listitem> - - <listitem> - <para>Einige der Anwendungsprogramme für das - Jail-Management, die über die &os; Ports-Sammlung - verfügbar sind und genutzt werden können, um - Jail-basierte Lösungen allumfassend umzusetzen.</para> - </listitem> - </itemizedlist> - - <sect2 xml:id="jails-tuning-utilities"> - <title>Systemwerkzeuge zur Feinabstimmung von Jails in - &os;</title> - - <para>Die Feinabstimmung einer Jail-Konfiguration erfolgt zum - Großteil durch das Setzen von &man.sysctl.8;-Variablen. - Es gibt einen speziellen sysctl-Zweig, der als Basis für - die Organisation aller relevanten Optionen dient: Die - <varname>security.jail.*</varname>-Hierarchie der - &os;-Kerneloptionen. Die folgende Liste enthält alle - jail-bezogenen sysctls (inklusiver ihrer Voreinstellungen). - Die Namen sollten selbsterklärend sein, für - weitergehende Informationen lesen Sie bitte die Manualpages - &man.jail.8; und &man.sysctl.8;.</para> - - <itemizedlist> - <listitem> - <para><varname>security.jail.set_hostname_allowed: - 1</varname></para> - </listitem> - - <listitem> - <para><varname>security.jail.socket_unixiproute_only: - 1</varname></para> - </listitem> - - <listitem> - <para><varname>security.jail.sysvipc_allowed: - 0</varname></para> - </listitem> - - <listitem> - <para><varname>security.jail.enforce_statfs: - 2</varname></para> - </listitem> - - <listitem> - <para><varname>security.jail.allow_raw_sockets: - 0</varname></para> - </listitem> - - <listitem> - <para><varname>security.jail.chflags_allowed: - 0</varname></para> - </listitem> - - <listitem> - <para><varname>security.jail.jailed: 0</varname></para> - </listitem> - </itemizedlist> - - <para>Diese Variablen können vom Administrator des - <emphasis>Host-Systems</emphasis> genutzt werden, um - Beschränkungen hinzuzufügen oder aufzuheben, die dem - Benutzer <systemitem class="username">root</systemitem> als - Vorgabe auferlegt sind. Beachten Sie, dass es einige - Beschränkungen gibt, die nicht verändert werden können. Der - Benutzer <systemitem class="username">root</systemitem> darf - innerhalb der &man.jail.8; keine Dateisysteme mounten und - unmounten. Ebenso ist es ihm untersagt, das - &man.devfs.8;-Regelwerk zu laden oder zu entladen. Er darf - weder Firewallregeln setzen, noch administrative Aufgaben - erledigen, die Modifikationen am Kernel selbst erfordern - (wie beispielsweise das Setzen des - <varname>Securelevels</varname> für den Kernel).</para> - - <para>Das &os;-Basissystem enthält einen Basissatz an - Werkzeugen, um Informationen über aktive Jails zu erlangen - und einer Jail administrative Befehle zuzuordnen. Die Befehle - &man.jls.8; und &man.jexec.8; sind Teil des &os;-Basissystems - und können für folgende Aufgaben verwendet werden:</para> - - <itemizedlist> - <listitem> - <para>Das Anzeigen einer Liste der aktiven Jails und ihrer - zugehörigen Jail Identifier (<acronym>JID</acronym>), - ihrer <acronym>IP</acronym>-Adresse, ihres Hostnames und - ihres Pfades.</para> - </listitem> - - <listitem> - <para>Das Herstellen einer Verbindung mit einer laufenden - Jail, das Starten eines Befehls aus dem Gastsystem - heraus oder das Ausführen einer administrativen - Aufgabe innerhalb der Jail selbst. Dies ist insbesondere - dann nützlich, wenn der Benutzer <systemitem - class="username">root</systemitem> die Jail sauber - herunterfahren möchte. &man.jexec.8; kann auch zum - Starten einer Shell innerhalb der Jail genutzt werden, um - administrative Aufgaben durchzuführen:</para> - - <screen>&prompt.root; <userinput>jexec <replaceable>1</replaceable> tcsh</userinput></screen> - </listitem> - </itemizedlist> - </sect2> - - <sect2 xml:id="jails-tuning-admintools"> - <title>High-Level-Werkzeuge zur Jail-Administration in der &os; - Ports-Sammlung</title> - - <para>Unter den zahlreichen Werkzeugen für die Administration - von Jails ist <package>sysutils/ezjail</package> am - vollständigsten und brauchbarsten. Dabei handelt es sich um - eine Sammlung von Skripten, die das &man.jail.8;-Management - vereinfachen. Weitere Informationen zu diesem Werkzeug finden - Sie im <link - xlink:href="&url.books.handbook;/jails-ezjail.html"> - Abschnitt über - <application>ezjail</application></link>.</para> - </sect2> - - <sect2 xml:id="jails-updating"> - <title>Jails auf dem aktuellen Stand halten</title> - - <para>Jails sollten immer vom Host-System auf dem neuesten Stand - gehalten werden, da eine Aktualisierung aus einer Jail heraus - wahrscheinlich fehlschlägt, da in der Voreinstellung von - &os; die Verwendung von &man.chflags.1; in einem Jail nicht - erlaubt ist und somit der Austausch einiger Dateien verhindert - wird. Es ist zwar möglich, dieses Verhalten zu ändern, aber - es wird empfohlen, &man.freebsd-update.8; zu benutzen, um die - Jails zu aktualisieren. Verwenden Sie <option>-b</option> mit - dem Pfad der Jail, die Sie aktualisieren möchten.</para> - - <para>Um die Jail auf das neueste Patch-Release der bereits - installierten &os;-Version zu aktualisieren, führen Sie auf - dem Host die folgenden Befehle aus:</para> - - <screen>&prompt.root; <userinput>freebsd-update -b <replaceable>/hier/ist/die/jail</replaceable> fetch</userinput> -&prompt.root; <userinput>freebsd-update -b <replaceable>/hier/ist/die/jail</replaceable> install</userinput></screen> - - <para>Um die Jail auf eine neue Haupt- oder Unterversion zu - aktualisieren, wird zunächst eine Aktualisierung des - Host-Systems durchgeführt, wie in <xref - linkend="freebsdupdate-upgrade"/> beschrieben. Nachdem der - Host aktualisiert und neu gestartet wurde, kann die Jail - aktualisiert werden. Führen Sie folgende Befehle auf dem - Host aus, um von 12.0-RELEASE auf 12.1-RELEASE zu - aktualisieren:</para> - - <screen>&prompt.root; <userinput>freebsd-update -b <replaceable>/hier/ist/die/jail</replaceable> --currently-running <replaceable>12.0-RELEASE</replaceable> -r <replaceable>12.1-RELEASE</replaceable> upgrade</userinput> -&prompt.root; <userinput>freebsd-update -b <replaceable>/hier/ist/die/jail</replaceable> install</userinput> -&prompt.root; <userinput>service jail restart <replaceable>myjail</replaceable></userinput> -&prompt.root; <userinput>freebsd-update -b <replaceable>/hier/ist/die/jail</replaceable> install</userinput></screen> - - <para>Wenn es sich um eine Aktualisierung einer Hauptversion - handelte, installieren Sie alle installierten Pakete neu und - starten Sie die Jail erneut. Dies ist notwendig, da sich die - ABI-Version bei einer Aktualisierung zwischen Hauptversionen - von &os; ändert. Führen Sie folgende Befehle auf dem - Host-System aus:</para> - - <screen>&prompt.root; <userinput>pkg -j <replaceable>mymail</replaceable> upgrade -f</userinput> -&prompt.root; <userinput>service jail restart <replaceable>myjail</replaceable></userinput></screen> - - </sect2> - </sect1> - - <sect1 xml:id="jails-application"> - <info> - <title>Mehrere Jails aktualisieren</title> - - <authorgroup> - <author> - <personname> - <firstname>Daniel</firstname> - <surname>Gerzo</surname> - </personname> - <contrib>Beigetragen von </contrib> - </author> - </authorgroup> - <authorgroup> - <author> - <personname> - <firstname>Simon</firstname> - <surname>L. B. Nielsen</surname> - </personname> - <contrib>Basierend auf einer Idee von </contrib> - </author> - </authorgroup> - <authorgroup> - <author> - <personname> - <firstname>Ken</firstname> - <surname>Tom</surname> - </personname> - <contrib>Artikel geschrieben von </contrib> - </author> - </authorgroup> - </info> - - <para>Die Verwaltung von mehreren Jails kann problematisch - sein, da jede Jail bei jedem Upgrade komplett neu gebaut - werden muss. Dieser Prozess kann sehr zeitaufwändig sein, - wenn eine große Anzahl von Jails erstellt oder manuell - aktualisiert werden müssen.</para> - - <para>Dieser Abschnitt beschreibt eine Methode zur Lösung - dieses Problems, indem so viel wie möglich zwischen Jails, - auf sichere Art und Weise, durch den Einsatz von - &man.mount.nullfs.8;-Mounts geteilt wird. Dadurch werden - Aktualisierungen erleichtert und das Verteilen von - verschiedenen Diensten, wie <acronym>HTTP</acronym>, - <acronym>DNS</acronym> und <acronym>SMTP</acronym>, auf - verschiedene Jails wird attraktiver. Außerdem bietet dieses - Verfahren einen einfachen Weg, Jails zu erstellen, zu - entfernen und zu aktualisieren.</para> - - <note> - <para>Es existieren auch einfachere Lösungen, wie zum - Beispiel <application>ezjail</application>, das einfachere - Methoden zur Administration von Jails verwendet und daher - nicht so anspruchsvoll ist, wie der hier beschriebene Aufbau. - <application>ezjail</application> wird in <xref - linkend="jails-ezjail"/> ausführlich behandelt.</para> - </note> - - <para>Die Ziele des in diesem Abschnitt beschriebenen Aufbaus - sind:</para> - - <itemizedlist> - <listitem> - <para>Das Erstellen einer einfachen und gut verständlichen - Jail Struktur, die es nicht erfordert für jede Jail ein - vollständiges installworld laufen lassen zu müssen.</para> - </listitem> - - <listitem> - <para>Es einfach zu machen, neue Jails zu erstellen oder alte - zu entfernen.</para> - </listitem> - - <listitem> - <para>Es einfach zu machen, bestehende Jails zu - aktualisieren.</para> - </listitem> - - <listitem> - <para>Es einfach zu machen, einen angepassten &os;-Zweig zu - nutzen.</para> - </listitem> - - <listitem> - <para>Paranoid bezüglich Sicherheit zu sein und - Angriffsmöglichkeiten weitgehend zu reduzieren.</para> - </listitem> - - <listitem> - <para>Soviel Platz und Inodes wie möglich - einzusparen.</para> - </listitem> - </itemizedlist> - - <para>Dieses Design ist darauf angewiesen, dass eine - read-only-Hauptvorlage in jede Jail hinein gemountet wird - und dass jede Jail über wenigstens ein beschreibbares Gerät - verfügt. Das Gerät kann hierbei eine separate physikalische - Platte oder ein vnode unterstütztes Speichergerät sein. Im - folgenden Beispiel wird ein read/write - <application>nullfs</application>-Mount genutzt.</para> - - <para>Das Layout des Dateisystems ist wie folgt:</para> - - <itemizedlist> - <listitem> - <para>Die Jails befinden sich unterhalb der - <filename>/home</filename> Partition.</para> - </listitem> - - <listitem> - <para>Jede Jail wird unterhalb des - <filename>/home/j</filename>-Verzeichnisses - gemountet.</para> - </listitem> - - <listitem> - <para><filename>/home/j/mroot</filename> ist die Vorlage für - jede Jail und die nur lesbare Partition für alle - Jails.</para> - </listitem> - - <listitem> - <para>Unterhalb von <filename>/home/j</filename> wird für jede - Jail ein leeres Verzeichnis angelegt.</para> - </listitem> - - <listitem> - <para>Jede Jail bekommt ein - <filename>/s</filename>-Verzeichnis, das zum - read/write-Teilbereich des Systems verlinkt wird.</para> - </listitem> - - <listitem> - <para>Jede Jail bekommt ihr eigenes read/write-System, - das auf <filename>/home/j/skel</filename> basiert.</para> - </listitem> - - <listitem> - <para>Der read/write-Teilbereich jeder Jail wird in - <filename>/home/js</filename> erstellt.</para> - </listitem> - </itemizedlist> - - <!-- Insert an image or drawing here to illustrate the example. --> - - <sect2 xml:id="jails-service-jails-template"> - <title>Erstellen der Vorlage</title> - - <para>Dieser Abschnitt beschreibt die Schritte, die zum - Erstellen der Hauptvorlage notwendig sind.</para> - - <para>Es wird empfohlen, zunächst das &os; Host-System nach - den Anweisungen in <xref linkend="makeworld"/> auf den - aktuellen -RELEASE-Zweig zu aktualisieren. Darüber hinaus - verwendet diese Vorlage <package>sysutils/cpdup</package>, - sowie <application>portsnap</application> zum herunterladen - der &os; Ports-Sammlung.</para> - - <procedure> - <step> - <para>Zuerst erstellen wir eine Verzeichnisstruktur für das - read-only-Dateisystem, das die &os;-Binärdateien für die - Jails enthalten wird. Anschließend wechseln wir in den - &os;-Quellcodebaum und installieren das - read-only-Dateisystem in die (Vorlage-)Jail.</para> - - <screen>&prompt.root; <userinput>mkdir /home/j /home/j/mroot</userinput> -&prompt.root; <userinput>cd /usr/src</userinput> -&prompt.root; <userinput>make installworld DESTDIR=/home/j/mroot</userinput></screen> - </step> - - <step> - <para>Als nächstes bereiten wir die Ports-Sammlung für die - Jails vor und kopieren den &os; Quellcodebaum - in die Jail, da dieser für - <application>mergemaster</application> benötigt - wird:</para> - - <screen>&prompt.root; <userinput>cd /home/j/mroot</userinput> -&prompt.root; <userinput>mkdir usr/ports</userinput> -&prompt.root; <userinput>portsnap -p /home/j/mroot/usr/ports fetch extract</userinput> -&prompt.root; <userinput>cpdup /usr/src /home/j/mroot/usr/src</userinput></screen> - </step> - - <step> - <para>Danach wird die Struktur für den - read/write-Bereich des Systems erstellt:</para> - - <screen>&prompt.root; <userinput>mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles</userinput> -&prompt.root; <userinput>mv etc /home/j/skel</userinput> -&prompt.root; <userinput>mv usr/local /home/j/skel/usr-local</userinput> -&prompt.root; <userinput>mv tmp /home/j/skel</userinput> -&prompt.root; <userinput>mv var /home/j/skel</userinput> -&prompt.root; <userinput>mv root /home/j/skel</userinput></screen> - </step> - - <step> - <para>Nutzen Sie <application>mergemaster</application>, um - fehlende Konfigurationsdateien zu installieren. - Anschließend werden die von - <application>mergemaster</application> erstellten - Extra-Verzeichnisse entfernt:</para> - - <screen>&prompt.root; <userinput>mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i</userinput> -&prompt.root; <userinput>cd /home/j/skel</userinput> -&prompt.root; <userinput>rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev</userinput></screen> - </step> - - <step> - <para>Nun wird das read/write-Dateisystem mit dem - read-only-Dateisystem verlinkt. Vergewissern Sie - sich, dass die symbolischen Links an den korrekten - <filename>s/</filename> Positionen erstellt werden, weil - echte Verzeichnisse oder an falschen Positionen - erstellte Verzeichnisse die Installation fehlschlagen - lassen.</para> - - <screen>&prompt.root; <userinput>cd /home/j/mroot</userinput> -&prompt.root; <userinput>mkdir s</userinput> -&prompt.root; <userinput>ln -s s/etc etc</userinput> -&prompt.root; <userinput>ln -s s/home home</userinput> -&prompt.root; <userinput>ln -s s/root root</userinput> -&prompt.root; <userinput>ln -s s/usr-local usr/local</userinput> -&prompt.root; <userinput>ln -s s/usr-X11R6 usr/X11R6</userinput> -&prompt.root; <userinput>ln -s s/distfiles usr/ports/distfiles</userinput> -&prompt.root; <userinput>ln -s s/tmp tmp</userinput> -&prompt.root; <userinput>ln -s s/var var</userinput></screen> - </step> - - <step> - <para>Zuletzt erstellen Sie eine allgemeine - <filename>/home/j/skel/etc/make.conf</filename> mit - folgendem Inhalt:</para> - - <programlisting>WRKDIRPREFIX?= /s/portbuild</programlisting> - - <para>Dies erlaubt es, die &os;-Ports innerhalb jeder Jail - zu kompilieren. Das Ports-Verzeichnis ist Teil des - read-only System. Der angepasste Pfad des - <literal>WRKDIRPREFIX</literal> macht es möglich, - innerhalb des read/write-Bereichs der Jail Ports zu - bauen.</para> - </step> - </procedure> - </sect2> - - <sect2 xml:id="jails-service-jails-creating"> - <title>Jails erstellen</title> - - <para>Die Jailvorlage kann nun verwendet werden, um die Jails - einzurichten und in <filename>/etc/rc.conf</filename> zu - konfigurieren. In diesem Beispiel werden drei Jails - erstellt: <literal>NS</literal>, <literal>MAIL</literal> - und <literal>WWW</literal>.</para> - - <procedure> - <step> - <para>Fügen Sie die folgenden Zeilen in - <filename>/etc/fstab</filename> ein, damit die - read-only-Vorlage und der read/write-Bereich für - alle Jails verfügbar sind:</para> - - <programlisting>/home/j/mroot /home/j/ns nullfs ro 0 0 -/home/j/mroot /home/j/mail nullfs ro 0 0 -/home/j/mroot /home/j/www nullfs ro 0 0 -/home/js/ns /home/j/ns/s nullfs rw 0 0 -/home/js/mail /home/j/mail/s nullfs rw 0 0 -/home/js/www /home/j/www/s nullfs rw 0 0</programlisting> - - <para>Um zu verhindern, dass <application>fsck</application> - die <application>nullfs</application>-Mounts während des - Bootens überprüft oder dass - <application>dump</application> die Mounts sichert, müssen - die letzten beiden Spalten auf <literal>0</literal> - gesetzt werden.</para> - </step> - - <step> - <para>Konfigurieren Sie die Jails in - <filename>/etc/rc.conf</filename>:</para> - - <programlisting>jail_enable="YES" -jail_set_hostname_allow="NO" -jail_list="ns mail www" -jail_ns_hostname="ns.example.org" -jail_ns_ip="192.168.3.17" -jail_ns_rootdir="/usr/home/j/ns" -jail_ns_devfs_enable="YES" -jail_mail_hostname="mail.example.org" -jail_mail_ip="192.168.3.18" -jail_mail_rootdir="/usr/home/j/mail" -jail_mail_devfs_enable="YES" -jail_www_hostname="www.example.org" -jail_www_ip="62.123.43.14" -jail_www_rootdir="/usr/home/j/www" -jail_www_devfs_enable="YES"</programlisting> - - <para>Die Variable - <varname>jail_<replaceable>name</replaceable>_rootdir</varname> - zeigt nach <filename>/usr/home</filename> statt nach - <filename>/home</filename>, da der physikalische Pfad - von <filename>/home</filename> unter &os; - <filename>/usr/home</filename> lautet. Die Variable - <varname>jail_<replaceable>name</replaceable>_rootdir</varname> - darf im Pfad aber - <emphasis>keinen symbolischen Link</emphasis> enthalten, - weil die Jail ansonsten nicht gestartet werden - kann.</para> - </step> - - <step> - <para>Erstellen Sie die notwendigen Mountpunkte für - die nur lesbaren Bereiche jeder Jail:</para> - - <screen>&prompt.root; <userinput>mkdir /home/j/ns /home/j/mail /home/j/www</userinput></screen> - </step> - - <step> - <para>Installieren Sie mit - <package>sysutils/cpdup</package> die read/write-Vorlage - in jede Jail:</para> - - <!-- keramida: Why is cpdup required here? Doesn't cpio(1) - already include adequate functionality for performing this - job *and* have the advantage of being part of the base - system of FreeBSD? --> - - <screen>&prompt.root; <userinput>mkdir /home/js</userinput> -&prompt.root; <userinput>cpdup /home/j/skel /home/js/ns</userinput> -&prompt.root; <userinput>cpdup /home/j/skel /home/js/mail</userinput> -&prompt.root; <userinput>cpdup /home/j/skel /home/js/www</userinput></screen> - </step> - - <step> - <para>An dieser Stelle werden die Jails erstellt und - für den Betrieb vorbereitet. Mounten Sie zuerst die - notwendigen Dateisysteme für jede Jail. Danach starten - Sie die Jails:</para> - - <screen>&prompt.root; <userinput>mount -a</userinput> -&prompt.root; <userinput>service jail start</userinput></screen> - </step> - </procedure> - - <para>Die Jails sollten nun laufen. Um zu prüfen, ob sie - korrekt gestartet wurden, verwenden Sie - <command>jls</command>. Die Ausgabe sollte ähnlich der - folgenden sein:</para> - - <screen>&prompt.root; <userinput>jls</userinput> - JID IP Address Hostname Path - 3 192.168.3.17 ns.example.org /home/j/ns - 2 192.168.3.18 mail.example.org /home/j/mail - 1 62.123.43.14 www.example.org /home/j/www</screen> - - <para>An diesem Punkt sollte es möglich sein, sich an jeder Jail - anzumelden, Benutzer anzulegen und Dienste zu konfigurieren. - Die Spalte <literal>JID</literal> gibt die - Jail-Identifikationsnummer jeder laufenden Jail an. Nutzen - Sie den folgenden Befehl, um administrative Aufgaben in der - Jail mit der <literal>JID</literal> <literal>3</literal> - durchzuführen:</para> - - <screen>&prompt.root; <userinput>jexec 3 tcsh</userinput></screen> - </sect2> - - <sect2 xml:id="jails-service-jails-upgrading"> - <title>Jails aktualisieren</title> - - <para>Das Design dieses Aufbaus bietet einen einfachen Weg, - bestehende Jails zu aktualisieren, während die Ausfallzeiten - minimiert werden. Außerdem bietet es die Möglichkeit, zu - älteren Versionen zurückzukehren, falls irgendwelche - Probleme auftreten.</para> - - <procedure> - <step> - <para>Im ersten Schritt wird das Host-System aktualisiert. - Anschließend wird eine temporäre neue read-only Vorlage - <filename>/home/j/mroot2</filename> erstellt.</para> - - <screen>&prompt.root; <userinput>mkdir /home/j/mroot2</userinput> -&prompt.root; <userinput>cd /usr/src</userinput> -&prompt.root; <userinput>make installworld DESTDIR=/home/j/mroot2</userinput> -&prompt.root; <userinput>cd /home/j/mroot2</userinput> -&prompt.root; <userinput>cpdup /usr/src usr/src</userinput> -&prompt.root; <userinput>mkdir s</userinput></screen> - - <para><buildtarget>installworld</buildtarget> erzeugt - einige unnötige Verzeichnisse, die nun entfernt werden - sollten:</para> - - <screen>&prompt.root; <userinput>chflags -R 0 var</userinput> -&prompt.root; <userinput>rm -R etc var root usr/local tmp</userinput></screen> - </step> - - <step> - <para>Erzeugen Sie neue symbolische Links für das - Hauptdateisystem:</para> - - <screen>&prompt.root; <userinput>ln -s s/etc etc</userinput> -&prompt.root; <userinput>ln -s s/root root</userinput> -&prompt.root; <userinput>ln -s s/home home</userinput> -&prompt.root; <userinput>ln -s ../s/usr-local usr/local</userinput> -&prompt.root; <userinput>ln -s ../s/usr-X11R6 usr/X11R6</userinput> -&prompt.root; <userinput>ln -s s/tmp tmp</userinput> -&prompt.root; <userinput>ln -s s/var var</userinput></screen> - </step> - - <step> - <para>Nun können die Jails gestoppt werden:</para> - - <screen>&prompt.root; <userinput>service jail stop</userinput></screen> - </step> - - <step> - <para>Hängen Sie die originalen Dateisysteme aus, da die - read/write-Systeme an das read-only System - (<filename>/s</filename>) angeschlossen sind:</para> - - <!-- keramida: Shouldn't we suggest a short script-based - loop here, instead of tediously copying the same commands - multiple times? --> - - <screen>&prompt.root; <userinput>umount /home/j/ns/s</userinput> -&prompt.root; <userinput>umount /home/j/ns</userinput> -&prompt.root; <userinput>umount /home/j/mail/s</userinput> -&prompt.root; <userinput>umount /home/j/mail</userinput> -&prompt.root; <userinput>umount /home/j/www/s</userinput> -&prompt.root; <userinput>umount /home/j/www</userinput></screen> - </step> - - <step> - <para>Verschieben Sie das alte read-only-Dateisystem und - ersetzen Sie es durch das neue Dateisystem. Das alte - Dateisystem kann so als Backup dienen, falls etwas schief - geht. Die Namensgebung entspricht hier derjenigen bei der - Erstellung eines neuen read-only-Dateisystems. - Verschieben Sie die originale &os; Ports-Sammlung in das - neue Dateisystem, um Platz und Inodes zu sparen:</para> - - <screen>&prompt.root; <userinput>cd /home/j</userinput> -&prompt.root; <userinput>mv mroot mroot.20060601</userinput> -&prompt.root; <userinput>mv mroot2 mroot</userinput> -&prompt.root; <userinput>mv mroot.20060601/usr/ports mroot/usr</userinput></screen> - </step> - - <step> - <para>Nun ist die neue read-only-Vorlage fertig. Sie - müssen daher nur noch die Dateisysteme erneut mounten - und die Jails starten:</para> - - <screen>&prompt.root; <userinput>mount -a</userinput> -&prompt.root; <userinput>service jail start</userinput></screen> - </step> - </procedure> - - <para>Nutzen Sie <command>jls</command> um zu prüfen, ob die - Jails korrekt gestartet wurden. Führen Sie innerhalb jeder - Jail <command>mergemaster</command> aus, damit die - Konfigurationsdateien aktualisiert werden.</para> - </sect2> - </sect1> - - <sect1 xml:id="jails-ezjail"> - <info> - <title>Verwaltung von Jails mit - <application>ezjail</application></title> - - <authorgroup> - <author> - <personname> - <firstname>Warren</firstname> - <surname>Block</surname> - </personname> - <contrib>Beigetragen von </contrib> - </author> - </authorgroup> - <authorgroup> - <author> - <personname> - <firstname>Björn</firstname> - <surname>Heidotting</surname> - </personname> - <contrib>Übersetzt von </contrib> - </author> - </authorgroup> - </info> - - <para>Das Erstellen und Verwalten von mehreren Jails kann schnell - zeitaufwändig und fehleranfällig werden. Dirk Engling's - <application>ezjail</application> automatisiert und vereinfacht - viele dieser Aufgaben. Als Vorlage wird ein - <emphasis>Basejail</emphasis> erzeugt. Zusätzliche Jails nutzen - &man.mount.nullfs.8; um viele Verzeichnisse aus der Basejail zu - teilen, ohne dabei zusätzlichen Speicherplatz zu belegen. Jedes - weitere Jail benötigt daher nur wenige Megabyte an - Speicherplatz, bevor die Anwendungen installiert werden.</para> - - <para>Weitere Vorteile und Merkmale werden im Detail auf der - Webseite von <application>ezjail</application> beschrieben: - <link - xlink:href="https://erdgeist.org/arts/software/ezjail/"></link>.</para> - - <sect2 xml:id="jails-ezjail-install"> - <title><application>ezjail</application> installieren</title> - - <para>Für die Installation von <application>ezjail</application> - wird zunächst eine Loopback-Schnittstelle für die Jails - benötigt. Anschließend kann - <application>ezjail</application> installiert und der - dazugehörige Dienst aktiviert werden.</para> - - <procedure xml:id="jails-ezjail-install-procedure"> - <step> - <para>Damit der Verkehr auf der Loopback-Schnittstelle des - Jails vom Host-System separiert ist, wird eine zweite - Loopback-Schnittstelle in - <filename>/etc/rc.conf</filename> erstellt:</para> - - <programlisting>cloned_interfaces="lo1"</programlisting> - - <para>Die zusätzliche Schnittstelle <literal>lo1</literal> - wird erstellt, wenn das System neu gestartet wird. Die - Schnittstelle kann auch ohne Neustart manuell erstellt - werden:</para> - - <screen>&prompt.root; <userinput>service netif cloneup</userinput> -Created clone interfaces: lo1.</screen> - - <para>Jails können die Aliase dieser sekundären - Schnittstelle verwenden, ohne dabei das Host-System zu - stören.</para> - - <para>Der Zugang zur Loopback-Adresse <systemitem - class="ipaddress">127.0.0.1</systemitem> wird an die - erste <acronym>IP</acronym>-Adresse umgeleitet, die dem - Jail zugewiesen ist. Damit die Loopback-Schnittstelle des - Jails der neuen <literal>lo1</literal>-Schnittstelle - zugeordnet werden kann, muss beim Erstellen der Jail diese - Schnittstelle als erstes in der Liste der - <acronym>IP</acronym>-Adressen angegeben werden.</para> - - <para>Teilen Sie jedem Jail eine Loopback-Adresse aus dem - Netzblock <systemitem - class="ipaddress">127.0.0.0</systemitem><systemitem - class="netmask">/8</systemitem> zu.</para> - </step> - - <step> - <para>Installieren Sie - <package>sysutils/ezjail</package>:</para> - - <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/ezjail</userinput> -&prompt.root; <userinput>make install clean</userinput></screen> - </step> - - <step> - <para>Aktivieren Sie <application>ezjail</application>, - indem Sie folgende Zeile in - <filename>/etc/rc.conf</filename> hinzufügen:</para> - - <programlisting>ezjail_enable="YES"</programlisting> - </step> - - <step> - <para>Der Dienst wird automatisch gestartet, wenn das System - bootet. Er kann auch direkt für die aktuelle Sitzung - gestartet werden:</para> - - <screen>&prompt.root; <userinput>service ezjail start</userinput></screen> - </step> - </procedure> - </sect2> - - <sect2 xml:id="jails-ezjail-initialsetup"> - <title>Einrichtung</title> - - <para>Nach erfolgreicher Installation von - <application>ezjail</application> kann die Verzeichnisstruktur - für die Basejail erstellt und befüllt werden. Dieser Schritt - wird einmalig auf dem Host-System ausgeführt.</para> - - <para>In diesen beiden Beispielen wird <option>-p</option> - verwendet, um die Ports-Sammlung mit &man.portsnap.8; in die - Basejail herunterzuladen. Diese Kopie kann dann von allen - Jails gemeinsam genutzt werden. Eine separate Kopie der - Ports-Sammlung für die Jails ermöglicht die Isolierung der - Ports vom Host-System. Die <acronym>FAQ</acronym> von - <application>ezjail</application> erklärt dies im Detail: - <link - xlink:href="https://erdgeist.org/arts/software/ezjail/#FAQ"></link>.</para> - - <procedure xml:id="jails-ezjail-initialsetup-procedure"> - <step> - <stepalternatives> - <step> - <title>Die Jail mit &os;-RELEASE installieren</title> - - <para>Benutzen Sie <command>install</command>, wenn das - &os;-RELEASE für die Jail der Version auf dem - Host-System entspricht. Wenn beispielsweise auf dem - Host-System &os; 10-STABLE installiert ist, wird - in der Jail das neueste RELEASE von &os;-10 - installiert:</para> - - <screen>&prompt.root; <userinput>ezjail-admin install -p</userinput></screen> - </step> - - <step> - <title>Die Jail mit <command>installworld</command> - installieren</title> - - <para>Mit <command>ezjail-admin update</command> kann - die Basejail mit den Binärdateien aus dem Host-System - befüllt werden. Diese Dateien wurden auf dem - Host-System mittels - <buildtarget>buildworld</buildtarget> erzeugt.</para> - - <para>In diesem Beispiel wird &os; 10-STABLE aus - den Quellen gebaut. Die Verzeichnisse für die Jail - wurden bereits erstellt. Anschließend wird - <command>installworld</command> ausgeführt, das - <filename>/usr/obj</filename> aus dem Host-System in - die Basejail installiert.</para> - - <screen>&prompt.root; <userinput>ezjail-admin update -i -p</userinput></screen> - - <para>In der Voreinstellung wird - <filename>/usr/src</filename> des Host-Systems - verwendet. Ein anderes Quellverzeichnis kann durch - die Angabe von <option>-s</option>, oder durch Setzen - der Variable <varname>ezjail_sourcetree</varname> in - <filename>/usr/local/etc/ezjail.conf</filename> - definiert werden.</para> - </step> - </stepalternatives> - </step> - </procedure> - - <tip> - <para>Die Ports-Sammlung der Basejail wird mit den anderen - Jails geteilt, jedoch werden die heruntergeladenen - Distfiles im jeweiligen Jail gespeichert. In der - Voreinstellung werden diese Dateien in - <filename>/var/ports/distfiles</filename> der Jail - gespeichert. Wenn die Ports gebaut werden, wird - <filename>/var/ports</filename> im Jail als - Arbeitsverzeichnis genutzt.</para> - </tip> - - <tip> - <para>Zum herunterladen der Pakete, für die Installation in - der Basejail, wird in der Voreinstellung das - <acronym>FTP</acronym>-Protokoll verwendet. Firewalls und - Proxies können jedoch bei der - <acronym>FTP</acronym>-Übertragung Probleme verursachen. - Das <acronym>HTTP</acronym>-Protokoll arbeitet anderes und - vermeidet diese Probleme. Sie können eine - <acronym>URL</acronym> für einen bestimmten Spiegel in - <filename>/usr/local/etc/ezjail.conf</filename> - eintragen:</para> - - <programlisting>ezjail_ftphost=http://ftp.FreeBSD.org</programlisting> - - <para>Im <xref linkend="mirrors-ftp"/> finden Sie - eine Liste mit Spiegeln.</para> - </tip> - </sect2> - - <sect2 xml:id="jails-ezjail-create"> - <title>Eine neue Jail erstellen und starten</title> - - <para>Neue Jails werden mit <command>ezjail-admin - create</command> erstellt. In diesen Beispielen wird die - <literal>lo1</literal> Loopback-Schnittstelle, wie oben - beschrieben, verwendet.</para> - - <procedure xml:id="jails-ezjail-create-steps"> - <title>Eine neue Jail erstellen und starten</title> - - <step> - <para>Geben Sie bei der Erstellung der Jail einen Namen - und die verwendeten Loopback- und Netzwerk-Schnittstellen - mit den <acronym>IP</acronym>-Adressen an. In diesem - Beispiel trägt die Jail den Namen - <literal>dnsjail</literal>.</para> - - <screen>&prompt.root; <userinput>ezjail-admin create <replaceable>dnsjail</replaceable> '<replaceable>lo1|127.0.1.1</replaceable>,<replaceable>em0</replaceable>|<replaceable>192.168.1.50</replaceable>'</userinput></screen> - - <tip xml:id="jails-ezjail-raw-network-sockets"> - <para>Die meisten Netzwerkdienste laufen problemlos in - einer Jail. Ein paar wenige Netzwerkdienste, vor allem - &man.ping.8; verwenden Netzwerk-Sockets. Aus - Sicherheitsgründen werden Netzwerk-Sockets innerhalb der - Jails deaktiviert, so dass Dienste, die diese Sockets - benötigten, nicht funktionieren werden. Gelegentlich - benötigt ein Jail jedoch den Zugriff auf Raw-Sockets. - Beispielsweise verwenden Netzwerk-Monitoring-Anwendungen - &man.ping.8;, um die Verfügbarkeit von anderen Rechnern - zu überprüfen. Sollten diese Sockets tatsächlich - benötigt werden, können sie durch einen Eintrag in der - Konfigurationsdatei von - <application>ezjail</application>, - <filename>/usr/local/etc/<replaceable>jailname</replaceable></filename>, - für einzelne Jails aktiviert werden. Bearbeiten Sie den - Eintrag <literal>parameters</literal>:</para> - - <programlisting>export jail_<replaceable>jailname</replaceable>_parameters="allow.raw_sockets=1"</programlisting> - - <para>Aktivieren Sie keine Netzwerk-Sockets, solange - die Dienste im Jail sie nicht tatsächlich - benötigen.</para> - </tip> - </step> - - <step> - <para>Starten Sie die Jail:</para> - - <screen>&prompt.root; <userinput>ezjail-admin start <replaceable>dnsjail</replaceable></userinput></screen> - </step> - - <step> - <para>Starten Sie eine Konsole in der Jail:</para> - - <screen>&prompt.root; <userinput>ezjail-admin console <replaceable>dnsjail</replaceable></userinput></screen> - </step> - </procedure> - - <para>Die Jail ist jetzt in Betrieb und die zusätzliche - Konfiguration kann nun abgeschlossen werden. Typische - Einstellungen an dieser Stelle sind:</para> - - <procedure> - <step> - <title>Das <systemitem - class="username">root</systemitem>-Passwort - setzen</title> - - <para>Verbinden Sie sich mit der Jail und setzen Sie das - Passwort für den Benutzer - <systemitem class="username">root</systemitem>:</para> - - <screen>&prompt.root; <userinput>ezjail-admin console <replaceable>dnsjail</replaceable></userinput> -&prompt.root; <userinput>passwd</userinput> -Changing local password for root -New Password: -Retype New Password:</screen> - </step> - - <step> - <title>Konfiguration der Zeitzone</title> - - <para>Die Zeitzone kann innerhalb der Jail mit - &man.tzsetup.8; gesetzt werden. Um störende - Fehlermeldungen zu vermeiden, kann der Eintrag - &man.adjkerntz.8; in <filename>/etc/crontab</filename> - auskommentiert werden. Dieser Job versucht die - Uhr des Rechners zu aktualisieren, was jedoch in einem - Jail fehlschlägt, da die Jail nicht auf diese Hardware - zugreifen darf.</para> - </step> - - <step> - <title><acronym>DNS</acronym>-Server</title> - - <para>Tragen Sie die Zeilen für die Nameserver der Domäne - in <filename>/etc/resolv.conf</filename> ein, damit die - Namensauflösung in der Jail funktioniert.</para> - </step> - - <step> - <title><filename>/etc/hosts</filename> anpassen</title> - - <para>Ändern Sie die Adresse und fügen Sie den Namen der - Jail zu den <literal>localhost</literal>-Einträgen in - <filename>/etc/hosts</filename> hinzu.</para> - </step> - - <step> - <title><filename>/etc/rc.conf</filename> - konfigurieren</title> - - <para>Tragen Sie Konfigurationseinstellungen in - <filename>/etc/rc.conf</filename> ein. Der Rechnername - und die <acronym>IP</acronym>-Adresse werden nicht - eingestellt, da diese Werte bereits durch die - Jail-Konfiguration zur Verfügung gestellt werden.</para> - </step> - </procedure> - - <para>Nach der Konfiguration der Jail können die Anwendungen, - für die die Jail erstellt wurde, installiert werden.</para> - - <tip> - <para>Einige Ports müssen mit speziellen Optionen gebaut - werden, damit sie in der Jail verwendet werden können. Zum - Beispiel haben die Netzwerk-Monitoring-Pakete - <package>net-mgmt/nagios-plugins</package> und - <package>net-mgmt/monitoring-plugins</package> eine Option - <literal>JAIL</literal>, die aktiviert werden muss, damit - diese Werkzeuge innerhalb einer Jail funktionieren.</para> - </tip> - </sect2> - - <sect2 xml:id="jails-ezjail-update"> - <title>Jails aktualisieren</title> - - <sect3 xml:id="jails-ezjail-update-os"> - <title>Das Betriebssystem aktualisieren</title> - - <para>Da das Basissystem der Basejail von den anderen Jails - gemeinsam genutzt wird, werden bei einem Update der Basejail - automatisch alle anderen Jails aktualisiert. Die - Aktualisierung kann entweder über den Quellcode oder über - binäre Updates erfolgen.</para> - - <para>Um das Basissystem auf dem Host-System zu bauen und in - der Basejail zu installieren, geben Sie folgendes - ein:</para> - - <screen>&prompt.root; <userinput>ezjail-admin update -b</userinput></screen> - - <para>Wenn das Basissystem bereits auf dem Host-System gebaut - wurde, kann es in der Basejail installiert werden:</para> - - <screen>&prompt.root; <userinput>ezjail-admin update -i</userinput></screen> - - <para>Binär-Updates verwenden &man.freebsd-update.8;. Das - Update unterliegt dabei den gleichen Einschränkungen, als - wenn &man.freebsd-update.8; direkt ausgeführt würde. Vor - allem stehen mit dieser Methode nur -RELEASE Versionen von - &os; zur Verfügung.</para> - - <para>Aktualisieren Sie die Basejail auf die neueste - &os;-Version des Host-Systems. Zum Beispiel von - RELEASE-p1 auf RELEASE-p2.</para> - - <screen>&prompt.root; <userinput>ezjail-admin update -u</userinput></screen> - - <para>Damit das Basejail aktualisiert werden kann, muss - zunächst das Host-System, wie in <xref - linkend="freebsdupdate-upgrade"/> beschrieben, - aktualisiert werden. Sobald das Host-System aktualisiert - und neu gestartet wurde, kann die Basejail aktualisiert - werden. Da &man.freebsd-update.8; keine Möglichkeit - besitzt, die derzeit installierte Version der Basejail zu - bestimmen, muss die ursprüngliche Version beim Aufruf mit - angegeben werden. Benutzen Sie &man.file.1; um die - ursprüngliche Version der Basejail zu bestimmen:</para> - - <screen>&prompt.root; <userinput>file /usr/jails/basejail/bin/sh</userinput> -/usr/jails/basejail/bin/sh: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked (uses shared libs), for FreeBSD 9.3, stripped</screen> - - <para>Nutzen Sie diese Information, um die Aktualisierung von - <literal>9.3-RELEASE</literal> auf die aktuelle Version des - Host-Systems durchzuführen:</para> - - <screen>&prompt.root; <userinput>ezjail-admin update -U -s <replaceable>9.3-RELEASE</replaceable></userinput></screen> - - <para>Nachdem die Basejail aktualisiert ist, muss in jeder - Jail &man.mergemaster.8; ausgeführt werden, um die - Konfigurationsdateien zu aktualisieren.</para> - - <para>Wie &man.mergemaster.8; verwendet wird, hängt stark vom - Zweck und Vertrauenswürdigkeit der Jail ab. Wenn die - Dienste oder Benutzer nicht vertrauenswürdig sind, dann - sollte &man.mergemaster.8; nur innerhalb der Jail ausgeführt - werden:</para> - - <example xml:id="jails-ezjail-update-mergemaster-untrusted"> - <title>&man.mergemaster.8; in einer nicht vertrauenswürdigen - Jail ausführen</title> - - <para>Entfernen Sie die Verknüpfung von - <filename>/usr/src</filename> des Jails zur Basejail und - erstellen Sie ein neues <filename>/usr/src</filename> als - Mountpunkt für die Jail. Hängen Sie - <filename>/usr/src</filename> vom Host-System - schreibgeschützt in den Mountpunkt für die Jail - ein:</para> - - <screen>&prompt.root; <userinput>rm /usr/jails/<replaceable>jailname</replaceable>/usr/src</userinput> -&prompt.root; <userinput>mkdir /usr/jails/<replaceable>jailname</replaceable>/usr/src</userinput> -&prompt.root; <userinput>mount -t nullfs -o ro /usr/src /usr/jails/<replaceable>jailname</replaceable>/usr/src</userinput></screen> - - <para>Öffnen Sie eine Konsole in der Jail:</para> - - <screen>&prompt.root; <userinput>ezjail-admin console <replaceable>jailname</replaceable></userinput></screen> - - <para>Innerhalb der Jail führen Sie dann &man.mergemaster.8; - aus. Danach verlassen Sie die Konsole:</para> - - <screen>&prompt.root; <userinput>cd /usr/src</userinput> -&prompt.root; <userinput>mergemaster -U</userinput> -&prompt.root; <userinput>exit</userinput></screen> - - <para>Abschließend können Sie <filename>/usr/src</filename> - aus der Jail aushängen:</para> - - <screen>&prompt.root; <userinput>umount /usr/jails/<replaceable>jailname</replaceable>/usr/src</userinput></screen> - </example> - - <example xml:id="jails-ezjail-update-mergemaster-trusted"> - <title>&man.mergemaster.8; in einer vertrauenswürdigen Jail - ausführen</title> - - <para>Wenn den Benutzern und den Diensten in der Jail - vertraut wird, kann &man.mergemaster.8; auf dem - Host-System ausgeführt werden:</para> - - <screen>&prompt.root; <userinput>mergemaster -U -D /usr/jails/<replaceable>jailname</replaceable></userinput></screen> - </example> - - <tip> - <para>Nach einem größeren Versionsupdate empfiehlt - <package>sysutils/ezjail</package>, sicherzustellen, - dass <command>pkg</command> die richtige Version hat. - Geben Sie dazu den folgenden Befehl ein, um auf die - entsprechende Version zu aktualisieren:</para> - - <screen>&prompt.root; <userinput>pkg-static upgrade -f pkg</userinput></screen> - </tip> - </sect3> - - <sect3 xml:id="jails-ezjail-update-ports"> - <title>Ports aktualisieren</title> - - <para>Die Ports-Sammlung der Basejail wird von den anderen - Jails gemeinsam genutzt. Somit genügt es, die - Ports-Sammlung in der Basejail zu aktualisieren.</para> - - <para>Die Ports-Sammlung der Basejail wird mit - &man.portsnap.8; aktualisiert:</para> - - <screen>&prompt.root; <userinput>ezjail-admin update -P</userinput></screen> - </sect3> - </sect2> - - <sect2 xml:id="jails-ezjail-control"> - <title>Jails verwalten</title> - - <sect3 xml:id="jail-ezjail-control-stop-start"> - <title>Jails starten und stoppen</title> - - <para><application>ezjail</application> startet automatisch - alle Jails, wenn das System hochfährt. Jails können auch - manuell mit <command>stop</command> und - <command>start</command> gestoppt und neu gestartet - werden:</para> - - <screen>&prompt.root; <userinput>ezjail-admin stop <replaceable>sambajail</replaceable></userinput> -Stopping jails: sambajail</screen> - - <para>In der Voreinstellung werden die Jails automatisch - gestartet, wenn das Host-System hochfährt. Der automatische - Start kann mit <command>config</command> deaktiviert - werden:</para> - - <screen>&prompt.root; <userinput>ezjail-admin config -r norun <replaceable>seldomjail</replaceable></userinput></screen> - - <para>Diese Einstellung wird nach einem Neustart des - Host-Systems aktiviert. Eine Jail, die bereits - läuft, wird hiermit nicht gestoppt.</para> - - <para>Der automatische Start kann auch aktiviert - werden:</para> - - <screen>&prompt.root; <userinput>ezjail-admin config -r run <replaceable>oftenjail</replaceable></userinput></screen> - </sect3> - - <sect3 xml:id="jails-ezjail-control-backup"> - <title>Jails archivieren und wiederherstellen</title> - - <para>Benutzen Sie <command>archive</command> um ein - <filename>.tar.gz</filename>-Archiv einer Jail zu erstellen. - Der Dateiname wird aus dem Namen der Jail und dem aktuellen - Datum zusammengesetzt. Archivdateien werden in - <filename>/usr/jails/ezjail_archives</filename> abgelegt. - Ein alternatives Verzeichnis für die Ablage kann in der - Variable <varname>ezjail_archivedir</varname> der - Konfigurationsdatei definiert werden.</para> - - <para>Die Archivdatei kann an anderer Stelle als Sicherung - gespeichert werden, oder eine andere Jail kann daraus - mit <command>restore</command> wiederhergestellt werden. - Eine neue Jail kann auch aus dem Archiv erstellt werden, was - eine bequeme Möglichkeit bietet, bestehende Jails zu - klonen.</para> - - <para>Die Jail <literal>wwwserver</literal> stoppen und - archivieren:</para> - - <screen>&prompt.root; <userinput>ezjail-admin stop <replaceable>wwwserver</replaceable></userinput> -Stopping jails: wwwserver. -&prompt.root; <userinput>ezjail-admin archive <replaceable>wwwserver</replaceable></userinput> -&prompt.root; <userinput>ls /usr/jails/ezjail-archives/</userinput> -wwwserver-201407271153.13.tar.gz</screen> - - <para>Erstellen Sie aus dem eben erzeugten Archiv eine neue - Jail namens <literal>wwwserver-clone</literal>. Verwenden - Sie die Schnittstelle <filename>em1</filename> und weisen - Sie eine neue <acronym>IP</acronym>-Adresse zu, um einen - Konflikt mit dem Original zu vermeiden:</para> - - <screen>&prompt.root; <userinput>ezjail-admin create -a /usr/jails/ezjail_archives/wwwserver-201407271153.13.tar.gz <replaceable>wwwserver-clone</replaceable> 'lo1|127.0.3.1,em1|192.168.1.51'</userinput></screen> - </sect3> - </sect2> - - <sect2 xml:id="jails-ezjail-example-bind"> - <title>Vollständiges Beispiel: <application>BIND</application> - in einer Jail</title> - - <para>Einen <application>BIND</application> - <acronym>DNS</acronym>-Server innerhalb einer Jail zu - betreiben erhöht die Sicherheit, da der Dienst isoliert - wird. Dieses Beispiel erstellt einen einfachen - <foreignphrase>caching-only</foreignphrase> Nameserver.</para> - - <itemizedlist> - <listitem> - <para>Die Jail bekommt den Namen - <literal>dns1</literal>.</para> - </listitem> - - <listitem> - <para>Die Jail erhält die <acronym>IP</acronym>-Adresse - <literal>192.168.1.240</literal> auf der Schnittstelle - <literal>re0</literal> des Host-Systems.</para> - </listitem> - - <listitem> - <para>Die Upstream-<acronym>DNS</acronym>-Server des - <acronym>ISP</acronym>s lauten - <literal>10.0.0.62</literal> und - <literal>10.0.0.61</literal>.</para> - </listitem> - - <listitem> - <para>Die Basejail wurde bereits erstellt und die - Ports-Sammlung installiert, wie in <xref - linkend="jails-ezjail-initialsetup"/> - beschrieben.</para> - </listitem> - </itemizedlist> - - <example xml:id="jails-ezjail-example-bind-steps"> - <title><application>BIND</application> in einer Jail laufen - lassen</title> - - <para>Erstellen Sie eine geklonte Loopback-Schnittstelle durch - einen Eintrag in <filename>/etc/rc.conf</filename>:</para> - - <programlisting>cloned_interfaces="lo1"</programlisting> - - <para>Erzeugen Sie jetzt die Loopback-Schnittstelle:</para> - - <screen>&prompt.root; <userinput>service netif cloneup</userinput> -Created clone interface: lo1</screen> - - <para>Erstellen Sie die Jail:</para> - - <screen>&prompt.root; <userinput>ezjail-admin create dns1 'lo1|127.0.2.1,re0|192.168.1.240'</userinput></screen> - - <para>Starten Sie die Jail, verbinden Sie sich mit der Konsole - und führen Sie die grundlegende Konfiguration durch:</para> - - <screen>&prompt.root; <userinput>ezjail-admin start dns1</userinput> -&prompt.root; <userinput>ezjail-admin console dns1</userinput> -&prompt.root; <userinput>passwd</userinput> -Changing local password for root -New Password: -Retype New Password: -&prompt.root; <userinput>tzsetup</userinput> -&prompt.root; <userinput>sed -i .bak -e '/adjkerntz/ s/^/#/' /etc/crontab</userinput> -&prompt.root; <userinput>sed -i .bak -e 's/127.0.0.1/127.0.2.1/g; s/localhost.my.domain/dns1.my.domain dns1/' /etc/hosts</userinput></screen> - - <para>Setzen Sie vorübergehend die - Upstream-<acronym>DNS</acronym>-Server in - <filename>/etc/resolv.conf</filename>, damit die - Ports-Sammlung heruntergeladen werden kann:</para> - - <programlisting>nameserver 10.0.0.62 -nameserver 10.0.0.62</programlisting> - - <para>Immer noch in der Konsole der Jail, installieren Sie - <package>dns/bind99</package>.</para> - - <screen>&prompt.root; <userinput>make -C /usr/ports/dns/bind99 install clean</userinput></screen> - - <para>Konfigurieren Sie den Nameserver in - <filename>/usr/local/etc/namedb/named.conf</filename>.</para> - - <para>Erstellen Sie eine Zugriffskontrollliste - (<acronym>ACL</acronym>) der Adressen und Netzwerke, die - <acronym>DNS</acronym>-Anfragen an diesen Nameserver senden - dürfen. Diese Sektion wird vor der Sektion - <literal>options</literal> hinzugefügt, die sich bereits in - der Datei befindet:</para> - - <programlisting>... -// or cause huge amounts of useless Internet traffic. - -acl "trusted" { - 192.168.1.0/24; - localhost; - localnets; -}; - -options { -...</programlisting> - - <para>Verwenden Sie die <acronym>IP</acronym>-Adresse der - Jail in der Direktive <literal>listen-on</literal>, um - <acronym>DNS</acronym>-Anfragen von anderen Rechnern aus - dem Netzwerk zu akzeptieren:</para> - - <programlisting> listen-on { 192.168.1.240; };</programlisting> - - <para>Entfernen Sie die Kommentarzeichen <literal>/*</literal> - und <literal>*/</literal>. Tragen Sie die - <acronym>IP</acronym>-Adressen der - Upstream-<acronym>DNS</acronym>-Server ein. Unmittelbar - nach der Sektion <literal>forwarders</literal> fügen Sie - Verweise auf die bereits definierten <acronym>ACL</acronym>s - ein:</para> - - <programlisting> forwarders { - 10.0.0.62; - 10.0.0.61; - }; - - allow-query { any; }; - allow-recursion { trusted; }; - allow-query-cache { trusted; };</programlisting> - - <para>Aktivieren Sie den Dienst in - <filename>/etc/rc.conf</filename>:</para> - - <programlisting>named_enable="YES"</programlisting> - - <para>Starten und testen Sie den Nameserver:</para> - - <screen>&prompt.root; <userinput>service named start</userinput> -wrote key file "/usr/local/etc/namedb/rndc.key" -Starting named. -&prompt.root; <userinput>/usr/local/bin/dig @192.168.1.240 freebsd.org</userinput></screen> - - <para>Beinhaltet die Antwort</para> - - <screen>;; Got answer;</screen> - - <para>dann funktioniert der Nameserver. Eine längere - Verzögerung, gefolgt von der Antwort</para> - - <screen>;; connection timed out; no servers could be reached</screen> - - <para>weist auf ein Problem hin. Überprüfen Sie die - Konfigurationseinstellungen und stellen Sie sicher, dass - alle lokalen Firewalls den <acronym>DNS</acronym>-Zugriff - auf die Upstream-<acronym>DNS</acronym>-Server - erlauben.</para> - - <para>Wie auch jeder andere lokale Rechner, kann der - <acronym>DNS</acronym>-Server Anfragen für Namensauflösung - an sich selbst stellen. Tragen Sie die Adresse des - <acronym>DNS</acronym>-Servers in die - <filename>/etc/resolv.conf</filename> der - Client-Rechner:</para> - - <programlisting>nameserver 192.168.1.240</programlisting> - - <para>Ein lokaler <acronym>DHCP</acronym>-Server kann die - Adresse eines lokalen <acronym>DNS</acronym>-Servers - automatisch für alle <acronym>DHCP</acronym>-Clients zur - Verfügung stellen.</para> - </example> - </sect2> - </sect1> -</chapter> |