Update to r45496:
Add new sysutils/ezjail section. Reviewed by: bcr Differential Revision: https://reviews.freebsd.org/D6111
This commit is contained in:
parent
6df10ba2e2
commit
40c9c88767
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48740
1 changed files with 691 additions and 3 deletions
|
@ -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; 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>
|
||||
</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>
|
||||
|
|
Loading…
Reference in a new issue