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$
|
$FreeBSD$
|
||||||
$FreeBSDde: de-docproj/books/handbook/jails/chapter.xml,v 1.23 2011/05/25 20:42:25 jkois Exp $
|
$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">
|
<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>
|
<info><title>Jails</title>
|
||||||
|
@ -615,10 +615,12 @@ jail_<replaceable>www</replaceable>_devfs_enable="YES" # mount devfs in
|
||||||
|
|
||||||
<note>
|
<note>
|
||||||
<para>Es existieren auch einfachere Lösungen, wie zum
|
<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
|
einfachere Methoden zur Administration von Jails verwendet
|
||||||
und daher nicht so anspruchsvoll ist, wie der hier
|
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>
|
</note>
|
||||||
|
|
||||||
<para>Die Ziele des in diesem Abschnitt beschriebenen Aufbaus
|
<para>Die Ziele des in diesem Abschnitt beschriebenen Aufbaus
|
||||||
|
@ -1027,4 +1029,690 @@ jail_www_devfs_enable="YES"</programlisting>
|
||||||
Konfigurationsdateien aktualisiert werden.</para>
|
Konfigurationsdateien aktualisiert werden.</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
</sect1>
|
</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>
|
</chapter>
|
||||||
|
|
Loading…
Reference in a new issue