Update to r45496:

Add new sysutils/ezjail section.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D6111
This commit is contained in:
Bjoern Heidotting 2016-04-27 18:44:38 +00:00
parent 6df10ba2e2
commit 40c9c88767
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48740

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/jails/chapter.xml,v 1.23 2011/05/25 20:42:25 jkois Exp $
basiert auf: r44908
basiert auf: r45496
-->
<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>
@ -615,10 +615,12 @@ jail_<replaceable>www</replaceable>_devfs_enable="YES" # mount devfs in
<note>
<para>Es existieren auch einfachere Lösungen, wie zum
Beispiel <package>sysutils/ezjail</package>, das
Beispiel <application>ezjail</application>, das
einfachere Methoden zur Administration von Jails verwendet
und daher nicht so anspruchsvoll ist, wie der hier
beschriebene Aufbau.</para>
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
@ -1027,4 +1029,690 @@ jail_www_devfs_enable="YES"</programlisting>
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;&nbsp;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;&nbsp;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>
</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>
</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 aktiviert, wenn das Host-System
das nächste mal neu gestartet wird. 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 ist installiert.</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>