Index: head/de_DE.ISO8859-1/books/handbook/jails/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/handbook/jails/chapter.xml (revision 48739) +++ head/de_DE.ISO8859-1/books/handbook/jails/chapter.xml (revision 48740) @@ -1,1030 +1,1718 @@ Jails MatteoRiondatoBeigetragen von OliverPeterÜbersetzt von DirkArlt JohannKois jails Übersicht 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 Jails. 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. 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. 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. Eine Jail zeichnet sich durch folgende Merkmale aus: 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. Ein Hostname: dieser Name wird für die Jail verwendet. Eine IP Adresse: diese Adresse wird der Jail zugewiesen. Die IP-Adresse einer Jails ist üblicherweise ein Adress-Alias auf eine existierende Netzwerkschnittstelle. 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. Jails haben einen eigenen Satz von Benutzern und ihren eigenen root-Konto. Die Rechte dieser Benutzer sind nur auf die Jail-Umgebung beschränkt. Der Benutzer root der Jail-Umgebung ist nicht dazu berechtigt, kritische Operationen am System außerhalb der angebundenen Jail-Umgebung durchzuführen. Dieses Kapitel erklärt, was &os;-Jails sind und wie sie eingesetzt werden. Jails sind ein sehr mächtiges Werkzeug für Administratoren, jedoch kann deren grundlegende Verwendung auch für fortgeschrittene Anwender nützlich sein. Nachdem Sie dieses Kapitel gelesen haben, werden Sie Wissen, was eine Jail ist und welche Verwendungszwecke es dafür unter &os; gibt. Wissen, wie man eine Jail erstellt, startet und und anhält. Die Grundlagen der Jail-Administration (sowohl innerhalb als auch ausserhalb des Jails) kennen. 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. 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. Jails - Definitionen Um die für den Einsatz von Jails benötigten FreeBSD-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: &man.chroot.8; (-Befehl) Ein Werkzeug, das den &os;-Systemaufruf &man.chroot.2; verwendet, um das Wurzelverzeichnis eines Prozesses und all seiner Nachkömmlinge zu ändern. &man.chroot.2; (-Umgebung) Die Umgebung eines Prozesses, der in einem chroot 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. &man.jail.8; (-Befehl) Das Systemadministrationswerkzeug, welches es erlaubt, Prozesse innerhalb der Jail-Umgebung zu starten. Host (-Benutzer, -Prozess, -System) Das verwaltende System einer Jail-Umgebung. Das Host-System hat Zugriff auf alle verfügbaren Hardwareressourcen und kann sowohl innerhalb als auch ausserhalb 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. Gast (-Benutzer, -Prozess, -System) Ein Prozess, ein Benutzer oder eine andere Instanz, deren Zugriff durch eine &os;-Jail eingeschränkt ist. Einrichtung und Verwaltung von Jails Einige Administratoren unterscheiden zwei verschiedene Jail-Arten: Komplette Jails, die ein echtes &os; darstellen und Jails für einen bestimmten Dienst, 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. Um das Userland von Installationsmedien zu installieren, erstellen Sie zunächst das Rootverzeichnis für die Jail. Dazu setzen Sie DESTDIR auf das entsprechende Verzeichnis. Das hierfür benötigte Kommando hängt von der verwendeten Shell ab. Für &man.sh.1;: &prompt.root; export DESTDIR=/hier/ist/die/jail Für csh/tcsh: &prompt.root; setenv DESTDIR /hier/ist/die/jail Hängen Sie das Installationsmedium ein, wenn Sie von einem Abbild installieren: &prompt.root; mount -t cd9660 /dev/`mdonfig -f cdimage.iso` /mnt Extrahieren Sie die Binärdateien aus den Archiven des Installationsmediums in das entsprechende Verzeichnis. Es wird mindestens das base-Set benötigt, aber Sie können auch eine komplette Installation durchführen, wenn Sie dies bevorzugen. Um lediglich das Basissystem zu installiren, führen Sie die nachstehenden Kommandos aus: &prompt.root; tar -xf /mnt/freebsd_install/usr/freebsd_dist/base.txz -C $DESTDIR Führen Sie folgendes Kommando in &man.sh.1; aus, um alles außer den Kernel zu installieren: &prompt.root; for sets in BASE DOC GAMES PORTS; do tar -xf /mnt/FREEBSD_INSTALL/USR/FREEBSD_DIST/$sets.TXZ -C $DESTDIR ; done Führen Sie folgendes Kommando aus, wenn Sie csh/tcsh benutzen: &prompt.root; foreach sets ( BASE DOC GAMES PORTS ) tar -xf /mnt/FREEBSD_INSTALL/USR/FREEBSD_DIST/$sets.TXZ -C $DESTDIR done Die Manualpage &man.jail.8; beschreibt die Erstellung einer Jail wie folgt: &prompt.root; setenv D /hier/ist/die/jail &prompt.root; mkdir -p $D &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; make installworld DESTDIR=$D &prompt.root; make distribution DESTDIR=$D &prompt.root; mount -t devfs devfs $D/dev 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 /usr/jail/name_der_jail, wobei name_der_jail den Hostname darstellt, über den die Jail identifiziert werden soll. Das Dateisystem unterhalb von /usr/ stellt normalerweise aussreichend Platz für eine Jail zur Verfügung (bedenken Sie, dass eine komplette Jail ein Replikat einer jeden Datei der Standardinstallation des &os;-Basissystems enthält. Wenn Sie bereits ihre Systemanwendungen mittels make world oder make buildworld neu erstellt haben, können Sie diesen Schritt überspringen und die Systemanwendungen in die neue Jail installieren. Dieser Befehl wird den Verzeichnisbaum mit allen notwendigen Binärdateien, Bibliotheken, Manualpages usw. erstellen. Der distribution-Befehl lässt make alle benötigten Konfigurationsdateien installieren, es werden also alle installierbaren Dateien aus /usr/src/etc/ in das Verzeichnis /etc der Jail installiert (also nach $D/etc/). 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. Ist eine Jail einmal erst erstellt, kann sie durch &man.jail.8; gestartet werden. &man.jail.8; benötigt zwingend mindestens vier Argumente, die im Abschnitt des Handbuchs beschrieben sind. Weitere Argumente sind möglich, um beispielsweise die Jail mit den Berechtigungen eines bestimmten Benutzers laufen zu lassen. Das Argument hängt vom Typ der Jail ab; für ein virtuelles System ist /etc/rc eine gute Wahl, da dies dem Startvorgang eines echten &os;-Systems entspricht. Bei einer Service-Jail hängt dieses von der Art des Dienstes ab, der in der Jail laufen soll. Jails werden häufig mit dem Betriebssystem gestartet, da der rc-Mechanismus von &os; dafür eine einfach zu realisierende Möglichkeit bietet. Eine Liste der Jails, die mit dem Betriebssystem gestartet werden sollen, wird in die Datei &man.rc.conf.5; geschrieben: jail_enable="YES" # Set to NO to disable starting of any jails jail_list="www" # Space separated list of names of jails Die Namen der Jails in der jail_list sollten nur alphanumerische Zeichen enthalten. Für jede Jail in der jail_list sollten in &man.rc.conf.5; einige Einstellungen vorgenommen werden: jail_www_rootdir="/usr/jail/www" # jail's root directory jail_www_hostname="www.example.org" # jail's hostname jail_www_ip="192.168.0.10" # jail's IP address jail_www_devfs_enable="YES" # mount devfs in the jail Beim Start einer in &man.rc.conf.5; konfigurierten Jail wird das /etc/rc-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 jail_jailname_exec_start entsprechend angepasst werden. Eine vollständige Liste der Optionen findet sich in der Manualpage zu &man.rc.conf.5;. &man.service.8; kann zum manuellen Starten und Stoppen der Jail genutzt werden, wenn ein Eintrag in rc.conf angelegt wurde: &prompt.root; service jail start www &prompt.root; service jail stop www Es gibt momentan keinen sauberen Weg, eine &man.jail.8; zu stoppen. Dies liegt daran, dass die Kommandos zum sauberen Herunterfahren eines Systems innerhalb einer Jail nicht ausgeführt werden können. Der beste Weg eine Jail zu beenden ist es daher, innerhalb der Jail den folgenden Befehl auszuführen (alternativ können Sie auch &man.jexec.8; von außerhalb der Jail aufrufen): &prompt.root; sh /etc/rc.shutdown Weitere Informationen zu diesem Thema finden Sie in der Manualpage &man.jail.8;. Feinabstimmung und Administration 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: Einige zur Verfügung stehende Optionen zur Abstimmung des Verhaltens und der Sicherheitseinstellungen, die mit einer Jail-Installation ausgeführt werden können. 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. Systemwerkzeuge zur Feinabstimmung von Jails in &os; 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 security.jail.*-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;. security.jail.set_hostname_allowed: 1 security.jail.socket_unixiproute_only: 1 security.jail.sysvipc_allowed: 0 security.jail.enforce_statfs: 2 security.jail.allow_raw_sockets: 0 security.jail.chflags_allowed: 0 security.jail.jailed: 0 Diese Variablen können vom Administrator des Host-Systems genutzt werden, um Beschränkungen hinzuzufügen oder aufzuheben, die dem Benutzer root als Vorgabe auferlegt sind. Beachten Sie, dass es einige Beschränkungen gibt, die nicht verändert werden können. Der Benutzer root darf innheralb 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 bespielsweise das Setzen des Securelevels des Kernel. 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: Das Anzeigen einer Liste der aktiven Jails und ihrer zugehörigen Jail Identifier (JID), ihrer IP-Addresse, ihres Hostnames und ihres Pfades. Das Herstellen einer Verbindung mit einer laufenden Jail, das Starten eines Befehls aus dem gastgebenen System heraus oder das Ausführen einer administrativen Aufgabe innerhalb der Jail selbst. Dies ist insbesondere dann nützlich, wenn der Benutzer root die Jail sauber herunterfahren möchte. &man.jexec.8; kann auch zum Starten einer Shell innerhalb der Jail genutzt werden, um adminstrative Aufgaben durchzuführen: &prompt.root; jexec 1 tcsh High-Level-Werkzeuge zur Jail-Administration in der &os; Ports-Sammlung Unter den zahlreichen Fremdwerkzeugen für die Administration von Jails sind die sysutils/jailutils die vollständigsten und brauchbarsten. Dabei handelt es sich um eine Sammlung kleiner Anwendungen, die das &man.jail.8;-Management vereinfachen. Weitere Informationen zu diesen Werkzeugen finden Sie auf den entsprechenden Internetseiten. Jails auf dem aktuellen Stand halten 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 mit dem Pfad der Jail, die Sie aktualisieren möchten. &prompt.root; freebsd-update -b /hier/ist/die/jail fetch &prompt.root; freebsd-update -b /hier/ist/die/jail install Mehrere Jails aktualisieren DanielGerzoBeigetragen von Simon L. B. Nielsen Basierend auf einer Idee von Ken Tom Artikel geschrieben von 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. 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 HTTP, DNS und SMTP, auf verschiedene Jails wird attraktiver. Außerdem bietet dieses Verfahren einen einfachen Weg, Jails zu erstellen, zu entfernen und zu aktualisieren. Es existieren auch einfachere Lösungen, wie zum - Beispiel sysutils/ezjail, das + Beispiel ezjail, das einfachere Methoden zur Administration von Jails verwendet und daher nicht so anspruchsvoll ist, wie der hier - beschriebene Aufbau. + beschriebene Aufbau. ezjail + wird in ausführlich + behandelt. Die Ziele des in diesem Abschnitt beschriebenen Aufbaus sind: 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. Es einfach zu machen, neue Jails zu erstellen oder alte zu entfernen. Es einfach zu machen, bestehende Jails zu aktualisieren. Es einfach zu machen, einen angepassten &os;-Zweig zu nutzen. Paranoid bezüglich Sicherheit zu sein und Angriffsmöglickeiten weitgehend zu reduzieren. Soviel Platz und Inodes wie möglich einzusparen. 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 nullfs-Mount genutzt. Das Layout des Dateisystems ist wie folgt: Die Jails befinden sich unterhalb der /home Partition. Jede Jail wird unterhalb des /home/j-Verzeichnisses gemountet. /home/j/mroot ist die Vorlage für jede Jail und die nur lesbare Partition für alle Jails. Unterhalb von /home/j wird für jede Jail ein leeres Verzeichnis angelegt. Jede Jail bekommt ein /s-Verzeichnis, das zum read/write-Teilbereich des Systems verlinkt wird. Jede Jail bekommt ihr eigenes read/write-System, das auf /home/j/skel basiert. Der read/write-Teilbereich jeder Jail wird in /home/js erstellt. Erstellen der Vorlage Dieser Abschnitt beschreibt die Schritte, die zum Erstellen der Hauptvorlage notwendig sind. Es wird empfohlen, zunächst das &os; Host-System nach den Anweisungen in auf den aktuellen -RELEASE-Zweig zu aktualisieren. Darüber hinaus verwendet diese Vorlage sysutils/cpdup, sowie portsnap zum herunterladen der &os; Ports-Sammlung. Zuerst erstellen wir eine Verzeichnissstruktur 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. &prompt.root; mkdir /home/j /home/j/mroot &prompt.root; cd /usr/src &prompt.root; make installworld DESTDIR=/home/j/mroot Als nächstes bereiten wir die Ports-Sammlung fü die Jails vor und kopieren den &os; Quellcodebaum in die Jail, da dieser für mergemaster benötigt wird: &prompt.root; cd /home/j/mroot &prompt.root; mkdir usr/ports &prompt.root; portsnap -p /home/j/mroot/usr/ports fetch extract &prompt.root; cpdup /usr/src /home/j/mroot/usr/src Danach wird die Struktur für den read/write-Bereich des Systems erstellt: &prompt.root; mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles &prompt.root; mv etc /home/j/skel &prompt.root; mv usr/local /home/j/skel/usr-local &prompt.root; mv tmp /home/j/skel &prompt.root; mv var /home/j/skel &prompt.root; mv root /home/j/skel Nutzen Sie mergemaster, um fehlende Konfigurationsdateien zu installieren. Anschließend werden die von mergemaster erstellten Extra-Verzeichnisse entfernt: &prompt.root; mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i &prompt.root; cd /home/j/skel &prompt.root; rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev Nun wird das read/write-Dateisystem mit dem read-only-Dateisystem verlinkt. Vergewissern Sie sich, dass die symbolischen Links an den korrekten s/ Positionen erstellt werden, weil echte Verzeichnisse oder an falschen Positionen erstellte Verzeichnisse die Installation fehlschlagen lassen. &prompt.root; cd /home/j/mroot &prompt.root; mkdir s &prompt.root; ln -s s/etc etc &prompt.root; ln -s s/home home &prompt.root; ln -s s/root root &prompt.root; ln -s s/usr-local usr/local &prompt.root; ln -s s/usr-X11R6 usr/X11R6 &prompt.root; ln -s s/distfiles usr/ports/distfiles &prompt.root; ln -s s/tmp tmp &prompt.root; ln -s s/var var Zuletzt erstellen Sie eine allgemeine /home/j/skel/etc/make.conf mit folgendem Inhalt: WRKDIRPREFIX?= /s/portbuild Dies erlaubt es, die &os;-Ports innerhalb jeder Jail zu kompilieren. Das Ports-Verzeichnis ist Teil des read-only System. Der angepasste Pfad des WRKDIRPREFIX macht es möglich, innerhalb des read/write-Bereichs der Jail Ports zu bauen. Jails erstellen Die Jailvorlage kann nun verwendet werden, um die Jails einzurichten und in /etc/rc.conf zu konfigurieren. In diesem Beispiel werden drei Jails erstellt: NS, MAIL und WWW. Fügen Sie die folgenden Zeilen in /etc/fstab ein, damit die read-only-Vorlage und der read/write-Bereich für alle Jails verfügbar sind: /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 Um zu verhindern, dass fsck die nullfs-Mounts während des Bootens überprüft oder dass dump die Mounts sichert, müssen die letzten beiden Spalten auf 0 gesetzt werden. Konfigurieren Sie die Jails in /etc/rc.conf: 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" Die Variable jail_name_rootdir zeigt nach /usr/home statt nach /home, da der physikalische Pfad von /home unter &os; /usr/home lautet. Die Variable jail_name_rootdir darf im Pfad aber keinen symbolischen Link enthalten, weil das Jail ansonsten nicht gestartet werden kann. Erstellen Sie die notwendigen Mountpunkte für die nur lesbaren Bereiche jeder Jail: &prompt.root; mkdir /home/j/ns /home/j/mail /home/j/www Installieren Sie mit sysutils/cpdup die read/write-Vorlage in jede Jail: &prompt.root; mkdir /home/js &prompt.root; cpdup /home/j/skel /home/js/ns &prompt.root; cpdup /home/j/skel /home/js/mail &prompt.root; cpdup /home/j/skel /home/js/www An dieser Stelle werden die Jails erstellt und fü den Betrieb vorbereitet. Mounten Sie zuerst die notwendigen Dateisysteme für jede Jail. Danach starten Sie die Jails: &prompt.root; mount -a &prompt.root; service jail start Die Jails sollten nun laufen. Um zu prüfen, ob sie korrekt gestartet wurden, verwenden Sie jls. Die Ausgabe sollte ähnlich der folgenden sein: &prompt.root; jls 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 An diesem Punkt sollte es möglich sein, sich an jeder Jail anzumelden, Benutzer anzulegen und Dienste zu konfigurieren. Die Spalte JID gibt die Jail-Identifikationsnummer jeder laufenden Jail an. Nutzen Sie den folgenden Befehl, um administrative Aufgaben in der Jail mit der JID 3 durchzuführen: &prompt.root; jexec 3 tcsh Jails aktualisieren 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. Im ersten Schritt wird das Host-System aktualisiert. Anschließend wird eine temporäre neue read-only Vorlage /home/j/mroot2 erstellt. &prompt.root; mkdir /home/j/mroot2 &prompt.root; cd /usr/src &prompt.root; make installworld DESTDIR=/home/j/mroot2 &prompt.root; cd /home/j/mroot2 &prompt.root; cpdup /usr/src usr/src &prompt.root; mkdir s installworld erzeugt einige unnötige Verzeichnisse, die nun entfernt werden sollten: &prompt.root; chflags -R 0 var &prompt.root; rm -R etc var root usr/local tmp Erzeugen Sie neue symbolische Links für das Hauptdateisystem: &prompt.root; ln -s s/etc etc &prompt.root; ln -s s/root root &prompt.root; ln -s s/home home &prompt.root; ln -s ../s/usr-local usr/local &prompt.root; ln -s ../s/usr-X11R6 usr/X11R6 &prompt.root; ln -s s/tmp tmp &prompt.root; ln -s s/var var Nun können die Jails gestoppt werden: &prompt.root; service jail stop Hängen Sie die originalen Dateisysteme aus, da die read/write-Systeme an das read-only System (/s) angeschlossen sind: &prompt.root; umount /home/j/ns/s &prompt.root; umount /home/j/ns &prompt.root; umount /home/j/mail/s &prompt.root; umount /home/j/mail &prompt.root; umount /home/j/www/s &prompt.root; umount /home/j/www 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: &prompt.root; cd /home/j &prompt.root; mv mroot mroot.20060601 &prompt.root; mv mroot2 mroot &prompt.root; mv mroot.20060601/usr/ports mroot/usr Nun ist die neue read-only-Vorlage fertig. Sie müssen daher nur noch die Dateisysteme erneut mounten und die Jails starten: &prompt.root; mount -a &prompt.root; service jail start Nutzen Sie jls um zu prüfen, ob die Jails korrekt gestartet wurden. Führen Sie innerhalb jeder Jail mergemaster aus, damit die Konfigurationsdateien aktualisiert werden. + + + + + + Verwaltung von Jails mit + <application>ezjail</application> + + + + + Warren + Block + + Beigetragen von + + + + + + Björn + Heidotting + + Übersetzt von + + + + + Das Erstellen und Verwalten von mehreren Jails kann schnell + zeitaufwändig und fehleranfällig werden. Dirk Engling's + ezjail automatisiert und vereinfacht + viele dieser Aufgaben. Als Vorlage wird ein + Basejail 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. + + Weitere Vorteile und Merkmale werden im Detail auf der + Webseite von ezjail beschrieben: + . + + + <application>ezjail</application> installieren + + Für die Installation von ezjail + wird zunächst eine Loopback-Schnittstelle für die Jails + benötigt. Anschließend kann + ezjail installiert und der + dazugehörige Dienst aktiviert werden. + + + + Damit der Verkehr auf der Loopback-Schnittstelle des + Jails vom Host-System separiert ist, wird eine zweite + Loopback-Schnittstelle in + /etc/rc.conf erstellt: + + cloned_interfaces="lo1" + + Die zusätzliche Schnittstelle lo1 + wird erstellt, wenn das System neu gestartet wird. Die + Schnittstelle kann auch ohne Neustart manuell erstellt + werden: + + &prompt.root; service netif cloneup +Created clone interfaces: lo1. + + Jails können die Aliase dieser sekundären + Schnittstelle verwenden, ohne dabei das Host-System zu + stören. + + Der Zugang zur Loopback-Adresse 127.0.0.1 wird an die + erste IP-Adresse umgeleitet, die dem + Jail zugewiesen ist. Damit die Loopback-Schnittstelle des + Jails der neuen lo1-Schnittstelle + zugeordnet werden kann, muss beim Erstellen der Jail diese + Schnittstelle als erstes in der Liste der + IP-Adressen angegeben werden. + + Teilen Sie jedem Jail eine Loopback-Adresse aus dem + Netzblock 127.0.0.0/8 zu. + + + + Installieren Sie + sysutils/ezjail: + + &prompt.root; cd /usr/ports/sysutils/ezjail +&prompt.root; make install clean + + + + Aktivieren Sie ezjail, + indem Sie folgende Zeile in + /etc/rc.conf hinzufügen: + + ezjail_enable="YES" + + + + Der Dienst wird automatisch gestartet, wenn das System + bootet. Er kann auch direkt für die aktuelle Sitzung + gestartet werden: + + &prompt.root; service ezjail start + + + + + + Einrichtung + + Nach erfolgreicher Installation von + ezjail kann die Verzeichnisstruktur + für die Basejail erstellt und befüllt werden. Dieser Schritt + wird einmalig auf dem Host-System ausgeführt. + + In diesen beiden Beispielen wird + 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 FAQ von + ezjail erklärt dies im Detail: + . + + + + + + Die Jail mit &os;-RELEASE installieren + + Benutzen Sie install, 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: + + &prompt.root; ezjail-admin install -p + + + + Die Jail mit <command>installworld</command> + installieren + + Mit ezjail-admin update kann + die Basejail mit den Binärdateien aus dem Host-System + befüllt werden. Diese Dateien wurden auf dem + Host-System mittels + buildworld erzeugt. + + In diesem Beispiel wird &os; 10-STABLE aus + den Quellen gebaut. Die Verzeichnisse für die Jail + wurden bereits erstellt. Anschließend wird + installworld ausgeführt, das + /usr/obj aus dem Host-System in + die Basejail installiert. + + &prompt.root; ezjail-admin update -i -p + + In der Voreinstellung wird + /usr/src des Host-Systems + verwendet. Ein anderes Quellverzeichnis kann durch + die Angabe von , oder durch Setzen + der Variable ezjail_sourcetree in + /usr/local/etc/ezjail.conf + definiert werden. + + + + + + + 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 + /var/ports/distfiles der Jail + gespeichert. Wenn die Ports gebaut werden, wird + /var/ports im Jail als + Arbeitsverzeichnis genutzt. + + + + + Eine neue Jail erstellen und starten + + Neue Jails werden mit ezjail-admin + create erstellt. In diesen Beispielen wird die + lo1 Loopback-Schnittstelle, wie oben + beschrieben, verwendet. + + + Eine neue Jail erstellen und starten + + + Geben Sie bei der Erstellung der Jail einen Namen + und die verwendeten Loopback- und Netzwerk-Schnittstellen + mit den IP-Adressen an. In diesem + Beispiel trägt die Jail den Namen + dnsjail. + + &prompt.root; ezjail-admin create dnsjail 'lo1|127.0.1.1,em0|192.168.1.50' + + + 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 + ezjail, + /usr/local/etc/jailname, + für einzelne Jails aktiviert werden. Bearbeiten Sie den + Eintrag parameters: + + export jail_jailname_parameters="allow.raw_sockets=1" + + Aktivieren Sie keine Netzwerk-Sockets, solange + die Dienste im Jail sie nicht tatsächlich + benötigen. + + + + + Starten Sie die Jail: + + &prompt.root; ezjail-admin start dnsjail + + + + Starten Sie eine Konsole in der Jail: + + &prompt.root; ezjail-admin console dnsjail + + + + Die Jail ist jetzt in Betrieb und die zusätzliche + Konfiguration kann nun abgeschlossen werden. Typische + Einstellungen an dieser Stelle sind: + + + + Das <systemitem + class="username">root</systemitem>-Passwort + setzen + + Verbinden Sie sich mit der Jail und setzen Sie das + Passwort für den Benutzer + root: + + &prompt.root; ezjail-admin console dnsjail +&prompt.root; passwd +Changing local password for root +New Password: +Retype New Password: + + + + Konfiguration der Zeitzone + + 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 /etc/crontab + 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. + + + + <acronym>DNS</acronym>-Server + + Tragen Sie die Zeilen für die Nameserver der Domäne + in /etc/resolv.conf ein, damit die + Namensauflösung in der Jail funktioniert. + + + + <filename>/etc/hosts</filename> anpassen + + Ändern Sie die Adresse und fügen Sie den Namen der + Jail zu den localhost-Einträgen in + /etc/hosts hinzu. + + + + <filename>/etc/rc.conf</filename> + konfigurieren + + Tragen Sie Konfigurationseinstellungen in + /etc/rc.conf ein. Der Rechnername + und die IP-Adresse werden nicht + eingestellt, da diese Werte bereits durch die + Jail-Konfiguration zur Verfügung gestellt werden. + + + + Nach der Konfiguration der Jail können die Anwendungen, + für die die Jail erstellt wurde, installiert werden. + + + 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 + net-mgmt/nagios-plugins und + net-mgmt/monitoring-plugins eine Option + JAIL, die aktiviert werden muss, damit + diese Werkzeuge innerhalb einer Jail funktionieren. + + + + + Jails aktualisieren + + + Das Betriebssystem aktualisieren + + 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. + + Um das Basissystem auf dem Host-System zu bauen und in + der Basejail zu installieren, geben Sie folgendes + ein: + + &prompt.root; ezjail-admin update -b + + Wenn das Basissystem bereits auf dem Host-System gebaut + wurde, kann es in der Basejail installiert werden: + + &prompt.root; ezjail-admin update -i + + 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. + + Aktualisieren Sie die Basejail auf die neueste + &os;-Version des Host-Systems. Zum Beispiel von + RELEASE-p1 auf RELEASE-p2. + + &prompt.root; ezjail-admin update -u + + Damit das Basejail aktualisiert werden kann, muss + zunächst das Host-System, wie in 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: + + &prompt.root; file /usr/jails/basejail/bin/sh +/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 + + Nutzen Sie diese Information, um die Aktualisierung von + 9.3-RELEASE auf die aktuelle Version des + Host-Systems durchzuführen: + + &prompt.root; ezjail-admin update -U -s 9.3-RELEASE + + Nachdem die Basejail aktualisiert ist, muss in jeder + Jail &man.mergemaster.8; ausgeführt werden, um die + Konfigurationsdateien zu aktualisieren. + + 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: + + + &man.mergemaster.8; in einer nicht vertrauenswürdigen + Jail ausführen + + Entfernen Sie die Verknüpfung von + /usr/src des Jails zur Basejail und + erstellen Sie ein neues /usr/src als + Mountpunkt für die Jail. Hängen Sie + /usr/src vom Host-System + schreibgeschützt in den Mountpunkt für die Jail + ein: + + &prompt.root; rm /usr/jails/jailname/usr/src +&prompt.root; mkdir /usr/jails/jailname/usr/src +&prompt.root; mount -t nullfs -o ro /usr/src /usr/jails/jailname/usr/src + + Öffnen Sie eine Konsole in der Jail: + + &prompt.root; ezjail-admin console jailname + + Innerhalb der Jail führen Sie dann &man.mergemaster.8; + aus. Danach verlassen Sie die Konsole: + + &prompt.root; cd /usr/src +&prompt.root; mergemaster -U +&prompt.root; exit + + Abschließend können Sie /usr/src + aus der Jail aushängen: + + &prompt.root; umount /usr/jails/jailname/usr/src + + + + &man.mergemaster.8; in einer vertrauenswürdigen Jail + ausführen + + Wenn den Benutzern und den Diensten in der Jail + vertraut wird, kann &man.mergemaster.8; auf dem + Host-System ausgeführt werden: + + &prompt.root; mergemaster -U -D /usr/jails/jailname + + + + + Ports aktualisieren + + Die Ports-Sammlung der Basejail wird von den anderen + Jails gemeinsam genutzt. Somit genügt es, die + Ports-Sammlung in der Basejail zu aktualisieren. + + Die Ports-Sammlung der Basejail wird mit + &man.portsnap.8; aktualisiert: + + &prompt.root; ezjail-admin update -P + + + + + Jails verwalten + + + Jails starten und stoppen + + ezjail startet automatisch + alle Jails, wenn das System hochfährt. Jails können auch + manuell mit stop und + start gestoppt und neu gestartet + werden: + + &prompt.root; ezjail-admin stop sambajail +Stopping jails: sambajail + + In der Voreinstellung werden die Jails automatisch + gestartet, wenn das Host-System hochfährt. Der automatische + Start kann mit config deaktiviert + werden: + + &prompt.root; ezjail-admin config -r norun seldomjail + + 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. + + Der automatische Start kann auch aktiviert + werden: + + &prompt.root; ezjail-admin config -r run oftenjail + + + + Jails archivieren und wiederherstellen + + Benutzen Sie archive um ein + .tar.gz-Archiv einer Jail zu erstellen. + Der Dateiname wird aus dem Namen der Jail und dem aktuellen + Datum zusammengesetzt. Archivdateien werden in + /usr/jails/ezjail_archives abgelegt. + Ein alternatives Verzeichnis für die Ablage kann in der + Variable ezjail_archivedir der + Konfigurationsdatei definiert werden. + + Die Archivdatei kann an anderer Stelle als Sicherung + gespeichert werden, oder eine andere Jail kann daraus + mit restore wiederhergestellt werden. + Eine neue Jail kann auch aus dem Archiv erstellt werden, was + eine bequeme Möglichkeit bietet, bestehende Jails zu + klonen. + + Die Jail wwwserver stoppen und + archivieren: + + &prompt.root; ezjail-admin stop wwwserver +Stopping jails: wwwserver. +&prompt.root; ezjail-admin archive wwwserver +&prompt.root; ls /usr/jails/ezjail-archives/ +wwwserver-201407271153.13.tar.gz + + Erstellen Sie aus dem eben erzeugten Archiv eine neue + Jail namens wwwserver-clone. Verwenden + Sie die Schnittstelle em1 und weisen + Sie eine neue IP-Adresse zu, um einen + Konflikt mit dem Original zu vermeiden: + + &prompt.root; ezjail-admin create -a /usr/jails/ezjail_archives/wwwserver-201407271153.13.tar.gz wwwserver-clone 'lo1|127.0.3.1,em1|192.168.1.51' + + + + + Vollständiges Beispiel: <application>BIND</application> + in einer Jail + + Einen BIND + DNS-Server innerhalb einer Jail zu + betreiben erhöht die Sicherheit, da der Dienst isoliert + wird. Dieses Beispiel erstellt einen einfachen + caching-only Nameserver. + + + + Die Jail bekommt den Namen + dns1. + + + + Die Jail erhält die IP-Adresse + 192.168.1.240 auf der Schnittstelle + re0 des Host-Systems. + + + + Die Upstream-DNS-Server des + ISPs lauten + 10.0.0.62 und + 10.0.0.61. + + + + Die Basejail wurde bereits erstellt und die + Ports-Sammlung ist installiert. + + + + + <application>BIND</application> in einer Jail laufen + lassen + + Erstellen Sie eine geklonte Loopback-Schnittstelle durch + einen Eintrag in /etc/rc.conf: + + cloned_interfaces="lo1" + + Erzeugen Sie jetzt die Loopback-Schnittstelle: + + &prompt.root; service netif cloneup +Created clone interface: lo1 + + Erstellen Sie die Jail: + + &prompt.root; ezjail-admin create dns1 'lo1|127.0.2.1,re0|192.168.1.240' + + Starten Sie die Jail, verbinden Sie sich mit der Konsole + und führen Sie die grundlegende Konfiguration durch: + + &prompt.root; ezjail-admin start dns1 +&prompt.root; ezjail-admin console dns1 +&prompt.root; passwd +Changing local password for root +New Password: +Retype New Password: +&prompt.root; tzsetup +&prompt.root; sed -i .bak -e '/adjkerntz/ s/^/#/' /etc/crontab +&prompt.root; sed -i .bak -e 's/127.0.0.1/127.0.2.1/g; s/localhost.my.domain/dns1.my.domain dns1/' /etc/hosts + + Setzen Sie vorübergehend die + Upstream-DNS-Server in + /etc/resolv.conf, damit die + Ports-Sammlung heruntergeladen werden kann: + + nameserver 10.0.0.62 +nameserver 10.0.0.62 + + Immer noch in der Konsole der Jail, installieren Sie + dns/bind99. + + &prompt.root; make -C /usr/ports/dns/bind99 install clean + + Konfigurieren Sie den Nameserver in + /usr/local/etc/namedb/named.conf. + + Erstellen Sie eine Zugriffskontrollliste + (ACL) der Adressen und Netzwerke, die + DNS-Anfragen an diesen Nameserver senden + dürfen. Diese Sektion wird vor der Sektion + options hinzugefügt, die sich bereits in + der Datei befindet: + + ... +// or cause huge amounts of useless Internet traffic. + +acl "trusted" { + 192.168.1.0/24; + localhost; + localnets; +}; + +options { +... + + Verwenden Sie die IP-Adresse der + Jail in der Direktive listen-on, um + DNS-Anfragen von anderen Rechnern aus + dem Netzwerk zu akzeptieren: + + listen-on { 192.168.1.240; }; + + Entfernen Sie die Kommentarzeichen /* + und */. Tragen Sie die + IP-Adressen der + Upstream-DNS-Server ein. Unmittelbar + nach der Sektion forwarders fügen Sie + Verweise auf die bereits definierten ACLs + ein: + + forwarders { + 10.0.0.62; + 10.0.0.61; + }; + + allow-query { any; }; + allow-recursion { trusted; }; + allow-query-cache { trusted; }; + + Aktivieren Sie den Dienst in + /etc/rc.conf: + + named_enable="YES" + + Starten und testen Sie den Nameserver: + + &prompt.root; service named start +wrote key file "/usr/local/etc/namedb/rndc.key" +Starting named. +&prompt.root; /usr/local/bin/dig @192.168.1.240 freebsd.org + + Beinhaltet die Antwort + + ;; Got answer; + + dann funktioniert der Nameserver. Eine längere + Verzögerung, gefolgt von der Antwort + + ;; connection timed out; no servers could be reached + + weist auf ein Problem hin. Überprüfen Sie die + Konfigurationseinstellungen und stellen Sie sicher, dass + alle lokalen Firewalls den DNS-Zugriff + auf die Upstream-DNS-Server + erlauben. + + Wie auch jeder andere lokale Rechner, kann der + DNS-Server Anfragen für Namensauflösung + an sich selbst stellen. Tragen Sie die Adresse des + DNS-Servers in die + /etc/resolv.conf der + Client-Rechner: + + nameserver 192.168.1.240 + + Ein lokaler DHCP-Server kann die + Adresse eines lokalen DNS-Servers + automatisch für alle DHCP-Clients zur + Verfügung stellen. +