CentOS:Webmin-Bind

Aus Fortinet Wiki
Zur Navigation springen Zur Suche springen


Vorwort

Das Ziel dieser Anleitung ist es auf einem CentOS Bind in der neusten Version zu installieren und dies im "chroot" mode. Zur Administration werden wir Webmin hinzufügen. Das Tool Webmin erlaubt es einen DSN Server komplett über ein Webinterface zu administrieren.


Test- und Installationsmaschinen waren:

HP DL 360, Xeon-3.06 GHz, 2 GB RAM, 30 GB HD

Datenschutz

        *********************************************************************
        *                                                                   *
        *  THIS FILE MAY CONTAIN CONFIDENTIAL, PRIVILEGED OR OTHER LEGALLY  *
        *      PROTECTED INFORMATION. YOU ARE PROHIBITED FROM COPYING,      *
        *    DISTRIBUTING OR OTHERWISE USING IT WITHOUT PERMISSION FROM     *
        *                  ALSO SCHWEIZ AG SWITZERLAND.                     *
        *                                                                   *
        *********************************************************************

"Die in diesen Artikeln enthaltenen Informationen sind vertraulich und dürfen ohne
schriftliche Zustimmung von der ALSO Schweiz AG gegenüber Dritt-Unternehmen nicht 
                         bekannt gemacht werden"

CentOS Installation

Die CentOS Installation die hier benutzt wird basiert auf einer minimal Installation dh. bei der Installation wurden KEINE Applikationen ausgewählt (deaktivere bei der CentOS Installation alle Positionen und gehe dann auf Customized; unter Customized deaktiviere ebenfalls sämtliche Positionen bis auf Emacs und Vi). Um die effektive Installation auszuführen kann natürlich die CD oder DVD von CentOS benutzt werden. In unserem Beispile wurde das CentOS anhand eines "Netinstall" durchgeführt. Dies bedeutet anstelle der ganzen CD oder DVD runterzuladen wurde nur folgendes ISO heruntergeladen:

       http://mirror.switch.ch/ftp/mirror/centos/5.4/isos/i386/CentOS-5.4-i386-netinstall.iso

Danach wurde das ISO auf eine CD gebrannt und durch einen Neustart des Servers gebootet. Beim Austarten wird nach einem DHCP Server gesucht und sofern gefunden der Server per DHCP adressiert. Es ist nicht zu empfehlen dieses ISO zu benutzen wenn KEIN DHCP Server im Netz ist da die statische Adressierung in diesem ISO einige Probleme verursacht. Die Ganze Doku basiert auf einer DHCP Adressierung dh. erst zuletzt -bevor der Server Live geht- muss die statische Konfiguration durchgeführt werden.

CentOS Repositoriy Installation

Nach der CentOS Installation führe folgendes aus:

       Linux:Yum-Priority-FreshRPM

SELinux Deaktivierung

Als nächstes werden wir SELinux sowie IPTables deaktivieren. Um SELinux zu deaktivieren führe folgendes durch:

       # service iptables stop
       Flushing firewall rules: [  OK  ]
       Setting chains to policy ACCEPT: filter [  OK  ]
       Unloading iptables modules: [  OK  ]
       # vi /etc/sysconfig/selinux 
       
       --------------- /etc/sysconfig/selinux --------------- 
       
       # This file controls the state of SELinux on the system.
       # SELINUX= can take one of these three values:
       #       enforcing - SELinux security policy is enforced.
       #       permissive - SELinux prints warnings instead of enforcing.
       #       disabled - SELinux is fully disabled.
       SELINUX=disabled
       # SELINUXTYPE= type of policy in use. Possible values are:
       #       targeted - Only targeted network daemons are protected.
       #       strict - Full SELinux protection.
       SELINUXTYPE=targeted
       
       # SETLOCALDEFS= Check local definition changes
       SETLOCALDEFS=0
       
       --------------- /etc/sysconfig/selinux ---------------

NOTE
Obwohl SELinux nun deaktivert ist sind einige Einstellungen im Kernel immer noch aktiv dh. umbedingt ein Neustart des Servers durchführen. Wird dies nicht durchgeführt kann beim Start von Bind eine Fehlermeldung erscheinen "initgroups". Diese Fehlermeldung stammt daher da Bind beim Start anhand User "root" nachträglich die entsprechenden Rechte im "chroot" oder "jail" dem User "named" übergibt. Solche Uebergaben werden im Kernel von SELinux überwacht und verhindert.

       # reboot

IPTables Deaktivierung

Um IPTables zu deaktiveren führe folgendes durch:

       # chkconfig --list
       exim            0:off   1:off   2:on    3:on    4:on    5:on    6:off
       gpm             0:off   1:off   2:on    3:on    4:on    5:on    6:off
       haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
       ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
       iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
       kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off
       lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
       mcstrans        0:off   1:off   2:on    3:on    4:on    5:on    6:off
       messagebus      0:off   1:off   2:off   3:on    4:on    5:on    6:off
       multipathd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
       netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
       netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
       netplugd        0:off   1:off   2:off   3:off   4:off   5:off   6:off
       network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
       rawdevices      0:off   1:off   2:off   3:on    4:on    5:on    6:off
       rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
       restorecond     0:off   1:off   2:on    3:on    4:on    5:on    6:off        
       sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off        
       syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
       tcsd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
       # chkconfig iptables off
       # chkconfig ip6tables off
       # chkconfig --list
       exim            0:off   1:off   2:on    3:on    4:on    5:on    6:off
       gpm             0:off   1:off   2:on    3:on    4:on    5:on    6:off
       haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
       ip6tables       0:off   1:off   2:off   3:off   4:off   5:off   6:off
       iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
       kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off
       lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
       mcstrans        0:off   1:off   2:on    3:on    4:on    5:on    6:off
       messagebus      0:off   1:off   2:off   3:on    4:on    5:on    6:off
       multipathd      0:off   1:off   2:off   3:off   4:off   5:off   6:off
       netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
       netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
       netplugd        0:off   1:off   2:off   3:off   4:off   5:off   6:off
       network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
       rawdevices      0:off   1:off   2:off   3:on    4:on    5:on    6:off
       rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
       restorecond     0:off   1:off   2:on    3:on    4:on    5:on    6:off
       sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
       syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
       tcsd            0:off   1:off   2:off   3:off   4:off   5:off   6:off

Webmin Installation

Nun die Vorraussetzung um Webmin zu installieren sind gegeben. Da wir mit "freshRPM und Yum-Priority" arbeiten die unsere CentOS Packages nach Prioritäten up to date halten müssen wir Webmin ebenfalls in diese Konstellation bringen. Um dies zu gewährleisten installieren wir das "Webmin Repository" indem wir folgendes File anlegen mit folgenden Inhalt:

       # vi /etc/yum.repos.d/webmin.repo
       
       --------------- /etc/yum.repos.d/webmin.repo ---------------
       
       [Webmin]
       name=Webmin Distribution Neutral
       baseurl=http://download.webmin.com/download/yum
       enabled=1
       priorities=10
       
       --------------- /etc/yum.repos.d/webmin.repo ---------------
       
       # chown root:root /etc/yum.repos.d/webmin.repo 
       # chmod 644 /etc/yum.repos.d/webmin.repo 

Als Erstes muss der public key von Webmin importiert werden:

       # rpm --import http://www.webmin.com/jcameron-key.asc

Sobald dies erstellt ist kann durch yum Webmin installiert werden da es jetzt durch das Repository File eingebunden ist in unsere Konstellation mit "freshRPM" und "Yum-Priority":

       # yum install webmin
       
       Loaded plugins: fastestmirror, priorities
       Loading mirror speeds from cached hostfile
        * addons: mirror.switch.ch
        * base: mirror.switch.ch
        * epel: mirror.switch.ch
        * extras: mirror.switch.ch
        * rpmfusion-free-updates: mirror.andreas-mueller.com
        * rpmfusion-free-updates-testing: mirror.andreas-mueller.com
        * rpmfusion-nonfree-updates: mirror.andreas-mueller.com
        * rpmfusion-nonfree-updates-testing: mirror.andreas-mueller.com
        * updates: mirror.switch.ch
       Webmin                                                                          |  951 B     00:00     
       Webmin/primary                                                                  | 5.4 kB     00:00     
       Webmin                                                                                           35/35
       100 packages excluded due to repository priority protections
       Setting up Install Process
       Resolving Dependencies
       --> Running transaction check
       ---> Package webmin.noarch 0:1.500-1 set to be updated
       --> Finished Dependency Resolution
       
       Dependencies Resolved
       
       =======================================================================================================
        Package                Arch                   Version                    Repository              Size
       =======================================================================================================
       Installing:
        webmin                 noarch                 1.500-1                    Webmin                  15 M
       
       Transaction Summary
       =======================================================================================================
       Install      1 Package(s)         
       Update       0 Package(s)         
       Remove       0 Package(s)         
       
       Total download size: 15 M
       Is this ok [y/N]: y
       Downloading Packages:
       webmin-1.500-1.noarch.rpm                                                       |  15 MB     02:16

Webmin Konfiguration

Als nächsten Schritt weren Wir Webmin konfigurieren dh. vergewissere dich das Webmin aktiv ist:

       # /etc/init.d/webmin start

Danach logge dich auf dem WebInterface von Webmin ein:

       http://[IP des Servers oder Hostname]:10000

Benutze User "root" und dessen Passwort um ein Login durchzuführen. Im Webmin Interface wähle "Webmin" > "Change Language and Theme" umd die entsprechende Sprache einzustellen:

       Datei:Webmin-01.jpg

Danach bestätige mit "Make Changes" und aktualisiere den Browser. Nun erstelen wir einen Benutzer "dnsadmin" anhand dessen sich die User für die Bind konfiguration einloggen. Wähle wiederum den Menüpunkt "Webmin" und danach "Webmin-Benutzer":

       Datei:Webmin-02.jpg

Anhand des Menüpunktes "Einen neuen Webminbenutzer anlegen" kann nun der Benutzer angelegt werden. Achte im Abschnitt "verfügbare Webminmodule" darauf, dass "nur" folgendes Module aktiviert ist:

BIND DNS-Server

       Datei:Webmin-03.jpg
       Datei:Webmin-04.jpg

Dies bedeutet wenn der User "dnsadmin" sich einloggt hat er ausschliesslich nur dieses Module zur Verfügung. Danach bestätige die Konfig mit dem Button "Erstellen". Durch "Abmelden" logge dich kurz aus und wieder ein anhand des neu erstellten Users "dnsadmin". Nachdem erfolgreichen einloggen steht nun dem User "dnsadmin" nur noch das Bind Module zur Verfügung:

       Datei:Webmin-05.jpg

Um das Module Bind von Webmin zu konfigurieren wähle "BIND DNS-Server" und danach "Modulkonfiguration":

       Datei:Webmin-06.jpg

Kontrolliere die Einstellungen und achte auf folgende Punkte:

       Kategorisiere Zonen gemäß Ansicht?                   Ja
       
       Verzeichnis für Master-Zonendatei                    /var/named/chroot/var/named/masters
       Verzeichnis für Slave-/Stub-Zonendatei               /var/named/chroot/var/named/slaves
       
       Stil der seriellen Nummer                            Datum basierend (YYYYMMDDnn)
       
       Sicherheitsabfrage vor dem Löschen von Records?      Ja
       Datei:Webmin-07.jpg
       Datei:Webmin-08.jpg
       Datei:Webmin-09.jpg

Bestätige die Einstellungen mit "Speichern". Nun ist Webmin für den Einsatz bereit.

NOTE
Will man das Logo von Webmin durch sein eigenes Austauschen so muss das File "/usr/libexec/webmin/images/webmin-blue.png" ersetzt werden!

Webmin Log

Die Log Dateien von Webmin befinden sich in folgenden Verzeichnis:

       /var/webmin/miniserv.error
       /var/webmin/miniserv.log
       /var/webmin/webmin.log

Webmin Perl Module

Wenn man sich die Webmin Logs anschaut fällt einem folgende Fehlermeldung auf:

       [27/Jan/2010:15:25:53 +0100] Continuing without the Authen::PAM perl module
       [01/Feb/2010:17:19:18 +0100] miniserv.pl started
       [01/Feb/2010:17:19:18 +0100] Perl module Authen::PAM needed for PAM is not installed : 
       Can't locate Authen/PAM.pm in @INC (@INC contains: /usr/libexec/webmin 
       /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8
       /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi 
       /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl 
       /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 5) line 1.
       BEGIN failed--compilation aborted at (eval 5) line 1.

Diese Fehlermeldung stammt daher das einige empfohlene Perl Module für Webmin nicht installiert sind. Speziell wenn Webmin im SSL Modus benützt werden möchte muss "Net::SSLeay" installiert sein. Die empfohlenen Perl Module (exkl. Datenbank Perl Module) sind:

       Authen::PAM           (PAM-Authentifizierung)
       Net::SSLeay           (Webmin-Konfiguration)
       Authen::Libwrap       (Webmin-Konfiguration)
       IO::Pty               (Laufende Prozesse)
       Sys::Syslog           (Webmin-Konfiguration)

Damit die empfohlenen Perl Module installiert werden können muss "pam-devel" installiert sein ansonsten kommt es bei der Kompilation der Perl Module zu Fehlermeldungen. Also installiere als Vorraussetzung das RPM Packge "pam-devel":

       # yum install pam-devel

NOTE
Es würde die Möglichkeit bestehen die Perl Module auch über das Webmin zu installieren. Dies ist jedoch bei den empfohlenen Perl Module nicht möglich!

Die Vorraussetzungen sind gegeben. Um die Perl Module zu installieren nehmen wir CPAN zu Hilfe dh. starte dieses mit folgenden Befehl:

       # cd /root
       # perl -MCPAN -e shell

NOTE
Wenn CPAN das erste Mal benutzt wird werden einige Fragen gestellt jedoch werden immer auch Vorschläge gemacht. Alle Vorschläge können Grundsätzlich wie vorgeschlagen akzeptiert werden (auch wenn keine vorgeschlagen werden). Nur die Auswahl des Kontinentes auf dem man sich befindet sowie das Land müssen manuell ausgewählt werden!

sobald die Grundkonfiguration durchgeführt wurde von CPAN steht einem die CPAN Shell zur Verfügung. Um das erste Module zu installieren führe folgenden Befehl aus:

       cpan> install Authen::PAM
       
       NOTE
Während der Installation muss das "root" Passwort angegeben werden um die Funktion von Authen::PAM zu überprüfen!
       cpan> install Net::SSLeay
       
       .................................................
       .................................................
       .................................................
           ExtUtils::MakeMaker
       Shall I follow them and prepend them to the queue
       of modules we are processing right now? [yes] yes
       .................................................
       .................................................
       .................................................
       cpan> install Authen::Libwrap
       
       .................................................
       .................................................
       .................................................
       This module requires Module::Build to install itself.
         Install Module::Build now from CPAN? [y] y
       
           ExtUtils::CBuilder
           Test::Harness
           ExtUtils::ParseXS
       Shall I follow them and prepend them to the queue
       of modules we are processing right now? [yes] yes
       .................................................
       .................................................
       .................................................
       
       do you want to link against /usr/lib/libwrap.so? [y ]y 
       do you want to use /usr/include/tcpd.h as your header? [y ]y
       .................................................
       .................................................
       .................................................
       
           Test::Exception
       Shall I follow them and prepend them to the queue
       of modules we are processing right now? [yes] yes
       
           Test::More
           Test::Builder
           Sub::Uplevel
           Test::Simple
           Test::Builder::Tester
       Shall I follow them and prepend them to the queue
       of modules we are processing right now? [yes] yes
       .................................................
       .................................................
       .................................................
       cpan> install IO::Pty
       cpan> install Sys::Syslog
       cpan> exit

Nun sind alle benötigten Module installiert und stehen Webmin zur Verfügung. Um dies zu kontrollieren wähle im Webmin folgenden Menüpunkt:

       Sonstiges > Perl-Module (CPAN) > Existing Modules

Webmin SSL

Also Vorraussetzung für die SSL (https) Aktivierung innerhalb Webmin gilt das Perl Module:

       Net::SSLeay

Weitere Information wie dieses Package installiert wird findet man unter den Menüpunkt:

       CentOS:Webmin-Bind#Webmin_Perl_Module

Nachdem das nötige Perl Module installiert wurde wähle im Webmin folgenden Menüpunkt:

       Webmin > Webmin-Konfiguration > SSL-Verschlüsselung 
       Datei:Webmin-18.jpg

Danach ist SSL sofort verfügbar über:

       https://10.150.0.185:10000/

Weitere Optionen für die Generierung eines Certificates etc. stehen unter dem erwähnten Menüpunkt zur Verfügung.

Bind Installation

Nun wir wollen nun Bind installieren jedoch mit der Version "libxml". Diese "libxml" Funktion ist eine Statistik Seite die automatisch generiert wird innerhalb Bind und über Web per xml zur Verfügung gestellt wird. Die aktuellste Verion von Bind in den Repositories von CentOS ist jedoch die Version 9.3.x und diese Version enthält die Funktion "libxml" nicht. Diese Funktion ist ab Version 9.5.x enthalten diese wird jedoch nicht in den Repositories von CentOS angeboten. Aus diesem Grund muss die Bind Version aus den source RPM generiert werden. Als Grundvorraussetzung ein SRC RPM zu installieren ist das Package "rpm-build". Installiere dieses über "yum install":

       # yum install rpm-build
       
       ==============================================================================================================
        Package                      Arch                Version                           Repository           Size
       ==============================================================================================================
       Installing:
        rpm-build                    i386                4.4.2.3-18.el5                    base                301 k
       Installing for dependencies:
        bzip2                        i386                1.0.3-4.el5_2                     base                 48 k
        elfutils                     i386                0.137-3.el5                       base                228 k
        elfutils-libs                i386                0.137-3.el5                       base                193 k
        patch                        i386                2.5.4-29.2.3.el5                  base                 64 k
        unzip                        i386                5.52-3.el5                        base                156 k
       
       Transaction Summary
       ==============================================================================================================
       Install      6 Package(s)         
       Update       0 Package(s)         
       Remove       0 Package(s)         
       
       Total download size: 991 k
       Is this ok [y/N]: y

Wir erstellen ein Source RPM Verzeichnis indem wir das SRC RPM von Bind runterladen:

       # mkdir SRPMS
       # cd SRPMS

NOTE
Soll ein Proxy verwendet werden um den Download durchzuführen benütze folgenden Befehl. Dieser bewirkt das in der momentanen Shell der Proxy für HTTP gesetzt wird:

       # export http_proxy="http://10.150.0.110:8080"

Lade nun über "wget" das SRC RPM Package runter:

       # wget http://mirror.switch.ch/ftp/mirror/fedora/linux/updates/12/SRPMS/bind-9.6.1-15.P3.fc12.src.rpm 

Installiere nun das SRC RPM Package:

       # rpm -ivh --nomd5 bind-9.6.1-15.P3.fc12.src.rpm

NOTE
Die nachfolgende "warning" kann ignoriert werden:

       warning: bind-9.6.1-15.P3.fc12.src.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID 57bbccba
          1:bind                   warning: user mockbuild does not exist - using root

Das Source RPM Package wurde installieret und kann nun anhand eines Compilers Kompiliert werden. Die Konfiguration Datei um die Kompilation auszuführen liegt im folgenden Verzeichnis

       /usr/src/redhat/SPECS/

In diesem Verzeichnis liegt ein .spec File. Dieses representiert das Konfig File das benutzt wird um Bind zu kompilieren. Sollen Funktionen etc. abgeschaltet werden kann dieses .spec File manipuliert werden. In unserem Fall möchten wir die Funktion "libxml" einschalten. Manipuliere den folgenden Abschnitt innerhalb des Files "bind.spec" um die "libxml" Funktion zu aktivieren:

       # vi /usr/src/redhat/SPECS/bind.spec
       
       --------------- /usr/src/redhat/SPECS/bind.spec --------------- 
       
       %configure \
         --with-libtool \
         --localstatedir=/var \
         --enable-threads \
         --enable-ipv6 \
         --with-libxml2=yes \
         --with-pic \
         --disable-static \
         --disable-openssl-version-check \
       %if %{SDB}
         --with-dlz-ldap=yes \
         --with-dlz-postgres=yes \
         --with-dlz-mysql=yes \
         --with-dlz-filesystem=yes \
       %endif
       %if %{GSSTSIG}
         --with-gssapi=yes \
         --disable-isc-spnego \
       %endif
       
       --------------- /usr/src/redhat/SPECS/bind.spec --------------- 

Für die Funktion "libxml" in Bind muss "libxml2" selber auf dem System ebenfalls installiert sein. Vergewissere dich das dieses Package installiert ist:

       # rpm -q --all | grep libxml2
       libxml2-2.6.26-2.1.2.8

Damit die Kompilierung des Package speziell für Bind sowie allgemein auf dem System erfolgreich ist müssen folgende Package zusätzlich installiert werden:

       # yum install openssl-devel
       # yum install openldap-devel
       # yum install libxml2-devel
       # yum install libtool
       # yum install pkgconfig
       # yum install libcap-devel
       # yum install libidn-devel
       # yum install postgresql-devel
       # yum install sqlite-devel
       # yum install mysql-devel
       # yum install gcc
       # yum install make

NOTE
Das nachfolgende Package "which" ist optional jedoch Sinnvoll vorallem wenn gewisse Funktionen nicht zur verfügung stehen und man im Troubleshooten rausfinden muss ob diese vorhanden sind!

       # yum install which

Nun wechsle ins Verzeichnis des SRC RPM .spec File und starte die Kompilation:


       # cd /usr/src/redhat/SPECS/
       # rpmbuild -ba ./bind.spec 

Nach einer erfolgreichen Kompilation befinden sich die entsprechenden RPM Package im folgenden Verzeichnis:

       /usr/src/redhat/RPMS/i386/
       /usr/src/redhat/RPMS/x86_64/

In unserem Fall wurden folgende Package durch das SRC RPM Package erstellt:

       /usr/src/redhat/RPMS/i386/bind-9.6.1-15.P3.i386.rpm
       /usr/src/redhat/RPMS/i386/bind-sdb-9.6.1-15.P3.i386.rpm
       /usr/src/redhat/RPMS/i386/bind-libs-9.6.1-15.P3.i386.rpm
       /usr/src/redhat/RPMS/i386/bind-utils-9.6.1-15.P3.i386.rpm
       /usr/src/redhat/RPMS/i386/bind-devel-9.6.1-15.P3.i386.rpm
       /usr/src/redhat/RPMS/i386/bind-chroot-9.6.1-15.P3.i386.rpm

Um die Package einwandfrei zu installieren benötigen wir "dnssec-conf" und dieses hat wiederum Abhängikeiten auf "curl" "phyton":

       # yum install dnssec-conf 
       
       Downloading Packages:
       (1/3): dnssec-conf-1.21-5.el5.noarch.rpm                                               |  80 kB     00:00     
       (2/3): curl-7.15.5-2.1.el5_3.5.i386.rpm                                                | 232 kB     00:00     
       (3/3): python-dns-1.7.1-1.el5.noarch.rpm                                               | 246 kB     00:00 

Nun sind die Vorraussetzungen gegeben um unserere Kompilierten Package von Bind zu installieren. Jedoch werden wir nur diese installiere die wir wirklich für unsere Installation benötigen:

       # rpm -ivh /usr/src/redhat/RPMS/i386/bind-libs-9.6.1-15.P3.i386.rpm
       # rpm -ivh /usr/src/redhat/RPMS/i386/bind-utils-9.6.1-15.P3.i386.rpm
       # rpm -ivh /usr/src/redhat/RPMS/i386/bind-devel-9.6.1-15.P3.i386.rpm

Damit das Package von Bind einwandfrei installiert wird muss der User "named" existieren dh. erstelle diesen:

       # groupadd -g 25 named
       # useradd -u 25 -g 25 -d /var/named -s /sbin/nologin named

Kontrolliere ob dieser User korrekt erstellt wurde mit der Gruppe:

       # cat /etc/passwd | grep named
       named:x:25:25::/var/named:/sbin/nologin
       # cat /etc/group | grep named
       named:x:25:

Der Account von "named" könnnte missbraucht werden um sich einzuloggen in das System obwohl der User keine Shell hat. Dieser User kann mit "lock-down" gesperrt werden:

       # passwd -l named
       Locking password for user named.
       passwd: Success

Nun installiere die restlichen Package von Bind:

       # rpm -ivh /usr/src/redhat/RPMS/i386/bind-9.6.1-15.P3.i386.rpm
       # rpm -ivh /usr/src/redhat/RPMS/i386/bind-chroot-9.6.1-15.P3.i386.rpm

Alle Package für Bind sind installiert. Es ergiebt sich folgendes Bild:

       # rpm -q --all | grep bind
       bind-utils-9.6.1-15.P3
       bind-chroot-9.6.1-15.P3
       bind-libs-9.6.1-15.P3
       bind-devel-9.6.1-15.P3
       bind-9.6.1-15.P3

Bind Konfiguration

Für Bind wurden folgende Files in folgenden Verzeichnissen installiert:

       /usr/include/isccfg/namedconf.h
       /usr/share/man/man5/named.conf.5.gz
       /usr/share/man/man8/named-checkzone.8.gz
       /usr/share/man/man8/named-compilezone.8.gz
       /usr/share/man/man8/named-checkconf.8.gz
       /usr/share/man/man8/named_selinux.8.gz
       /usr/share/man/man8/named.8.gz
       /usr/share/doc/bind-9.6.1/named.conf.default
       /usr/share/doc/bind-9.6.1/sample/etc/named.conf
       /usr/share/doc/bind-9.6.1/sample/etc/named.rfc1912.zones
       /usr/share/doc/bind-9.6.1/sample/var/named
       /usr/share/doc/bind-9.6.1/sample/var/named/named.ca
       /usr/share/doc/bind-9.6.1/sample/var/named/named.loopback
       /usr/share/doc/bind-9.6.1/sample/var/named/named.localhost
       /usr/share/doc/bind-9.6.1/sample/var/named/named.empty
       /usr/share/vim/vim70/syntax/named.vim
       /usr/sbin/named-checkzone
       /usr/sbin/named-compilezone
       /usr/sbin/named
       /usr/sbin/named-checkconf
       /usr/lib/python2.4/site-packages/dns/namedict.py
       /usr/lib/python2.4/site-packages/dns/namedict.pyc
       /usr/lib/python2.4/site-packages/dns/namedict.pyo
       /etc/pki/dnssec-keys/named.dnssec.keys
       /etc/rc.d/init.d/named
       /etc/logrotate.d/named
       /etc/named.conf.bak
       /etc/sysconfig/named
       /etc/named.conf
       /etc/named
       /etc/named.rfc1912.zones
       /var/spool/mail/named
       /var/run/named
       /var/named
       /var/named/named.ca
       /var/named/named.loopback
       /var/named/chroot/etc/named
       /var/named/chroot/var/run/named        
       /var/named/chroot/var/named
       /var/named/named.localhost
       /var/named/named.empty

Die Daten resp. die Zone Files werden im sogenannten "chroot" erstellt. Dieses "chroot" befindet sich im "/var/named/chroot".In dieesem Verzeichnis existieren folgende Verzeichnisse:

       total 48
       drwxr-x--- 6 root named 4096 Feb  1 16:48 .
       drwxr-x--- 5 root named 4096 Feb  2 09:27 ..
       drwxr-x--- 2 root named 4096 Feb  1 16:48 dev
       drwxr-x--- 4 root named 4096 Feb  1 16:48 etc
       drwxr-xr-x 3 root root  4096 Feb  1 16:48 usr
       drwxr-x--- 6 root named 4096 Feb  1 16:48 var

NOTE
Nun ein "chroot" wird auch "jail" (Gefängnis) genannt dh. dies ist ein Bereich indem ein bestimmtes Programm in einem eigens fuer diesen Zweck erstellten Bereich (jail) drin laeuft. Die "binarys" des Programmes befinden sich nicht im "jail" sondern ausserhalb. Beim start des Deamon wird der "chroot" Befehl ausgefuehrt und der Deamon wechselt mit einem bestimmten "user" (in unserem Fall User "named") ins "jail" (chroot) und laeuft dort als ob dieses "jail" das "root" (/) darstellt.

Diese Verzeichnisse haben folgende Funktion innerhalb des "chroots":

       dev                Representiert die Devices innerhalb des "chroots"
       etc                Representiert das Konfig Verzeichnis innerhalb des "chroots"
       usr                Representiert das Library Verzeichnis innerhalb des "chroots"
       var                Representiert das varierende Daten Verzeichnis (zB log, Zone Files etc.)

Im Verzeichnis "var" befindet sich ein Verzeichnis "named" und darin das Verzeichnis "master". Dieses Verzeichnis wird durch den Primary DNS Server benutzt um die Zone Files darin abzulegen. Damit ein Server beide Rollen übernehmen kann werden wir ebenfalls ein Verzeichnis "slave" erstellen:

       # mkdir /var/named/chroot/var/named/slave
       # chown root:named /var/named/chroot/var/named/slave
       # chmod 755 /var/named/chroot/var/named/slave

Webmin arbeitet betreffend Pfade mit "masters" und "slaves" dh. um hier die Konfig nicht abändern zu müssen erstellen wir Softlinks die "masters" und "slaves" representieren und in die jeweiligen Verzeichnisse "master" und "slave" zeigen: Es ist darauf zu achten das Symbolische Links zwar von ausserhalb in das "jail" funktionieren jedoch nicht von innerhalb des "jail's" nach ausserhalb da der Deamon nicht faehig ist diesen Symbolischen Links zu folgen da er nur das "root" (/) sieht dh. das "jail" (chroot). Hardlinks funktionieren ueberhaupt nicht also immer Symbolische Links von ausserhalb nach innerhalb des "jail's".

       # cd /var/named/chroot/var/named
       # ln -s master ./masters
       # ln -s slave ./slaves

Es ergiebt sich folgende Situation:

       # ls -la /var/named/chroot/var/named
       total 40
       drwxr-x--- 4 root named 4096 Feb  2 10:15 .
       drwxr-x--- 6 root named 4096 Feb  1 16:48 ..
       drwxr-xr-x 2 root named 4096 Feb  2 10:14 master
       lrwxrwxrwx 1 root root     6 Feb  2 10:14 masters -> master
       drwxr-xr-x 2 root named 4096 Feb  2 10:14 slave
       lrwxrwxrwx 1 root root     5 Feb  2 10:15 slaves -> slave
       # vi /var/named/chroot/etc/named.conf
       
       --------------- /var/named/chroot/etc/named.conf ---------------
       
       options {
       
               directory          "/var/named";
               dump-file          "/var/named/data/cache_dump.db";
               statistics-file    "/var/named/data/named_stats.txt";
               memstatistics-file "/var/named/data/named_mem_stats.txt";
       
               version         "[secured]";                // Hide our "real" version number
       };
       
       
               zone "." {
                                                       // The root nameservers
                       type   hint;
                       file   "named.ca";
       };
       
       
               zone        "localhost" {
                                                       // localhost - forward zone
                       type    master;
                       file   "named.localhost";
                       notify  no;
       };
       
       
               zone    "loopback" {
                                                       // localhost - inverse zone
                       type   master;
                       file   "named.loopback";
                       notify no;
       };        
       
       --------------- /var/named/chroot/etc/named.conf ---------------
       
       # chown root:named /var/named/chroot/etc/named.conf
       # chmod 640 /var/named/chroot/etc/named.conf

NOTE
Die Angaben im "named.conf" der Files fuer "pid" usw. sind relativ zum "jail" und verweisen nicht auf das "root" (/) des Systems.

Im Konfigurationsfile werden mehrer Files erwaehnt dh. "named.ca" ist das Konfig File das die sogenannten "root-Server" enthaelt. Die Files "named.localhost"und "named.loopback" sind fuer den localhost selber resp. lokalen gebrauch und werden nur einmal konfiguriert! Erstelle nun diese Files:

       # vi /var/named/named.ca
       
       --------------- /var/named/named.ca ---------------
       
       ;       This file holds the information on root name servers needed to
       ;       initialize cache of Internet domain name servers
       ;       (e.g. reference this file in the "cache  .  <file>"
       ;       configuration file of BIND domain name servers).
       ;
       ;       This file is made available by InterNIC 
       ;       under anonymous FTP as
       ;           file                /domain/named.root
       ;           on server           FTP.INTERNIC.NET
       ;       -OR-                    RS.INTERNIC.NET
       ;
       ;       last update:    Jan 29, 2004
       ;       related version of root zone:   2004012900
       ;
       ;
       ; formerly NS.INTERNIC.NET
       ;
       .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
       A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
       ;
       ; formerly NS1.ISI.EDU
       ;
       .                        3600000      NS    B.ROOT-SERVERS.NET.
       B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
       ;
       ; formerly C.PSI.NET
       ;
       .                        3600000      NS    C.ROOT-SERVERS.NET.
       C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
       ;
       ; formerly TERP.UMD.EDU
       ;
       .                        3600000      NS    D.ROOT-SERVERS.NET.
       D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
       ;
       ; formerly NS.NASA.GOV
       ;
       .                        3600000      NS    E.ROOT-SERVERS.NET.
       E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
       ;        
       ; formerly NS.ISC.ORG
       ;
       .                        3600000      NS    F.ROOT-SERVERS.NET.
       F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
       ;
       ; formerly NS.NIC.DDN.MIL
       ;
       .                        3600000      NS    G.ROOT-SERVERS.NET.
       G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
       ;
       ; formerly AOS.ARL.ARMY.MIL
       ;
       .                        3600000      NS    H.ROOT-SERVERS.NET.
       H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
       ;
       ; formerly NIC.NORDU.NET
       ;
       .                        3600000      NS    I.ROOT-SERVERS.NET.
       I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
       ;
       ; operated by VeriSign, Inc.
       ;
       .                        3600000      NS    J.ROOT-SERVERS.NET.
       J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
       ;
       ; operated by RIPE NCC
       ;
       .                        3600000      NS    K.ROOT-SERVERS.NET.
       K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
       ;
       ; operated by ICANN
       ;
       .                        3600000      NS    L.ROOT-SERVERS.NET.
       L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
       ;
       ; operated by WIDE
       ;
       .                        3600000      NS    M.ROOT-SERVERS.NET.
       M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
       ; End of File
       
       --------------- /var/named/named.ca ---------------
       
       # chown root:named /var/named/named.ca
       # chmod 640 /var/named/named.ca
       # vi /var/named/named.localhost
       
       --------------- /var/named/named.localhost ---------------
       
       $TTL 1D
       @       IN SOA  @ rname.invalid. (
                                               0       ; serial
                                               1D      ; refresh
                                               1H      ; retry
                                               1W      ; expire
                                               3H )    ; minimum
               NS      @
               A       127.0.0.1
               AAAA    ::1
       
       --------------- /var/named/named.localhost ---------------
       
       # chown root:named /var/named/named.localhost 
       # chmod 640 /var/named/named.localhost 
       # vi /var/named/named.loopback
       
       --------------- /var/named/named.loopback ---------------
       
       $TTL 1D
       @       IN SOA  @ rname.invalid. (
                                               0       ; serial
                                               1D      ; refresh
                                               1H      ; retry
                                               1W      ; expire
                                               3H )    ; minimum
               NS      @
               PTR     localhost.
       
       --------------- /var/named/named.loopback ---------------
       
       # chown root:named /var/named/named.loopback
       # chmod 640 /var/named/named.loopback

NOTE
Sofern Internet Zugriff bereits besteht kann dieses File autom. angelegt werden:

       # /usr/bin/dig @a.root-servers.net . ns > /var/named/named.ca

Die "Root-Server" sollten von Zeit zu Zeit aktualisiert werden. Dies kann mit folgenden Befehl bewerkstelligt werden:

       # /usr/bin/dig @a.root-servers.net . ns > /var/named/named.ca

Dies kann auch so im Cron erfasst werden. Dazu muss um Cron nutzen zu können "vixie-cron:" installiert werden:

       # yum install vixie-cron

Nun kann anhand "crontab" der Cron Job erfasst werden. In unserem Beispiel wird der Cron um 01:00 Morgens ausgeführt:

       # crontab -e
       
       0 1 * * * /usr/bin/dig @a.root-servers.net . ns > /var/named/named.ca

Alle Grundlegenden Files für die Funktion von Bind sind erstellt dh. Bind kann das erste Mal gestartet werden um zu überprüfen ob alles in Ordnung ist. Beim Start von Bind wird nachdem File "/etc/named.conf" gesucht dh. unser "named.conf" befindet sich jedoch im Verzeichnis "/Var/named/chroot/etc" dh. erstelle einen Softlink von "/etc/named.conf" nach "/Var/named/chroot/etc/named.conf":

       # mv /etc/named.conf /etc/named.conf.orig
       # ln -s /var/named/chroot/etc/named.conf /etc/named.conf

Danach starte Bind anhand des Startscriptes:

       # /etc/init.d/named start

NOTE
Ab Bind 9.6.x wird im "/var/log/messages" zusätzliche Informationen angzeigt dh. zB wie Kompiliert wurde etc.

Als naechstes konfigurieren wir die Funktion "rndc.key" dh. diese Funktion wird fuer das Absetzen von Remote-Befehlen gebraucht zB. "reload" des Servers usw. In Bind 8 war dies der "ndc" Befehl jedoch dieser war sehr beschraenkt und die Sicherheit liess auch einige Wuensche offen. Dies wurde mit "rndc" geloest.

Das Konfigurationsfile von "rndc.key" gleich ziemlich einem "named.conf" File. Der Name des Key's kann, sei es in Art und Weise sowie in der Laenge, frei gewaehlt werden. Die Position "secret key here" stellt den Key dar (base-64-encoded) der mit dem Tool "dnssec-keygen" generiert werden muss! Also generieren wir diesen Key mit folgenden Befehl:

       # cd /var/named/chroot/
       # /usr/sbin/dnssec-keygen -a HMAC-MD5 -b 256 -n HOST rndc
       
       --------------- output of dnssec-keygen ---------------
       
       Krndc.+157+50653
       
       --------------- output of dnssec-keygen ---------------

NOTE
Sollte es zu Problemen kommen bei der Generierung des Keys dh. sollte das System haengen bleiben kann versucht werden vor der Option "-a" folgende Option zusaetzlich anzugeben:

       -r /dev/urandom

Nach erfolgreicher Ausfuehrung haben wir zwei Files resp. zwei Keys dh. einen "*.key" sowie einen "*.private" Key:

       # ls -la Krndc.*
       
       -rw------- 1 root root  68 Feb  2 14:21 Krndc.+157+50653.key
       -rw------- 1 root root 112 Feb  2 14:21 Krndc.+157+50653.private

Der Inhalt des "*.privat" Key resp. die Position Key selber muss im Konfigurationsfile "rndc.conf" unter "secret key here" angegeben werden:

       # cat Krndc.+157+50653.private
       
       --------------- output of Krndc.+157+64641.private ---------------
       
       Private-key-format: v1.2
       Algorithm: 157 (HMAC_MD5)
       Key: guXeDVSSU6bL/TGDu7oG0znF+x2Ii374kyaJYMRp2a0=
       Bits: AAA=
       
       --------------- output of Krndc.+157+64641.private ---------------

Das Konfig File legen wir aus Sicherheitsgruenden im "jail" unter dem Verzeichnis "etc/" an:

       # vi /var/named/chroot/etc/rndc.conf
       
       --------------- /var/named/chroot/etc/rndc.conf ---------------
       
       #
       # /var/named/chroot/etc/rndc.conf
       #
       
       options {
       
               default-server  127.0.0.1;
               default-key     "rndckey_comcept";
       };
       
       server 127.0.0.1 {
       
               key     "rndckey_comcept";
       };
       
       key "rndckey_comcept" {
       
               algorithm       "hmac-md5";
               secret          "guXeDVSSU6bL/TGDu7oG0znF+x2Ii374kyaJYMRp2a0=";
       };
       
       --------------- /var/named/chroot/etc/rndc.conf ---------------
       
       # chown root:named /var/named/chroot/etc/rndc.conf 
       # chmod 640 /var/named/chroot/etc/rndc.conf 

Nachdem der "Key" im File "rndc.conf" unter "secret key here" angegeben wurde koennen die generierten Key's "*.privat" und "*.key* geloescht werden:

       # rm /var/named/chroot/Krndc.*

Das System liest autom. das per standard bestehende File "/etc/rndc.key" aus dh. damit dieses vom "chroot" benutzt wird werden wir einen Softlink erstellen:

       # mv /etc/rndc.key /etc/rndc.key.orig
       # ln -s /var/named/chroot/etc/rndc.conf /etc/rndc.conf

Die Informatione des "rndc" Keys muss auch in "namde.conf" konfiguriert werden. Die Konfiguration MUSS zu beginn des Files eingefügt werden ansonsten wird die Konfig nicht akzeptiert. Wir fügen nun auch einige weitere Optionen ins File "named.conf" wie Log's, Log Level etc. Das bestehende "named.conf" das wir erstellt haben war nur für Test Zwecke dh. bestehende Positionen werden nun abgeändert etc. :

       # vi /var/named/chroot/etc/named.conf
       
       --------------- /var/named/chroot/etc/named.conf ---------------
       
       // *************************************************************** 
       //
       // Set up our ACLs for dns1
       //
       // In BIND 8, ACL names with quotes were treated as different from 
       // the same name without quotes. In BIND 9, both are treated as 
       // the same.
       //
       // The ordering of our views is very important. The named daemon
       // accepts the first match. It means first match wins!
       //
       // *************************************************************** 
       
       controls {
       
               inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey_comcept.ch; };
       
               inet 10.150.0.185 allow {       127.0.0.1;              // localhost
                                               10.150.0.0/24;          // Local Network
       
               } keys { rndckey_comcept.ch; };
       };
       
       
       
       key "rndckey_comcept.ch" {
       
               algorithm "hmac-md5";
               secret "guXeDVSSU6bL/TGDu7oG0znF+x2Ii374kyaJYMRp2a0=";
       };
       
       
       logging { 
       
               channel "default_syslog" { 
               syslog local2; 
               severity debug; 
       
               }; 
       
                      channel audit_log { 
               file "/var/named/chroot/var/log/named.log" versions 10 size 5m; 
               severity debug;
               print-time yes;
               print-category yes;
               print-severity yes;
       
               }; 
       
               category default { default_syslog; }; 
               category general { default_syslog; }; 
               category security { audit_log; default_syslog; }; 
               category config { default_syslog; }; 
               category resolver { audit_log; }; 
               category xfer-in { audit_log; }; 
               category xfer-out { audit_log; }; 
               category notify { audit_log; }; 
               category client { audit_log; }; 
               category network { audit_log; }; 
               category update { audit_log; }; 
               category queries { audit_log; }; 
               category lame-servers { audit_log; }; 
               category edns-disabled { null; }; 
       
       }; 
       
       statistics-channels {
       
               inet 10.150.0.185 port 8053 allow {       127.0.0.1;              // localhost
                                                         10.150.0.0/24;          // Local Sysop
               };
       };
       
       
       
       
       options {
       
               listen-on-v6 { none; };
       
               directory           "/var/named";
               pid-file            "/var/named/chroot/var/run/named.pid";
               dump-file           "/var/named/data/cache_dump.db";
               statistics-file     "/var/named/data/named_stats.txt";
               memstatistics-file  "/var/named/data/named_mem_stats.txt";
       
               zone-statistics yes;
       
               query-source address * port 53;
       
               notify no;                              // Applies to slave zones only
       
               transfer-format many-answers;           // Controls global zone transfer
       
               max-transfer-time-in 60;                // Limit duration of inbound zone transfer
       
               interface-interval 0;                   // Disable scanning for new interfaces
       
               dnssec-enable no;
               dnssec-validation no;
       
               version         "[secured]";            // Hide our "real" version number
       };
       
       
       view "external" {
               allow-query-cache { 127.0.0.1;           // Localhost
                                   10.150.0.0/24;       // Local Network
       
                       };
       
               allow-recursion   { 127.0.0.1;           // mx record smtpmx
                                   10.150.0.0/24;       // external device brutus
       
                       };
       
               match-clients { any; }; 
       
       
               zone "." {
                                                       // The root nameservers
                       type   hint;
                       file   "named.ca";
       };
       
       
               zone    "localhost" {
                                                       // localhost - forward zone
                       type    master;
                       file   "named.localhost";
                       allow-transfer { any; };
       };
       
       
               zone    "loopback" {
                                                       // localhost - inverse zone
                       type   master;
                       file   "named.loopback";
                       allow-transfer { any; };
        };
       
       };
       
       --------------- /var/named/chroot/etc/named.conf ---------------


NOTE
Die Funktion "statistics-channels" steht im Zusammenhang mit der "libxml2" Library dh. wird dies konfiguriert muss die Source mit "--with-libxml2=yes" kompiliert werden sowie diese Library muss zur Verfuegung stehen. Die Position "inet 192.168.100.194 allow { 127.0.0.1; " im File "named.conf" veranlasst den Bind Server ausschliesslich auf das "localhost" Interface zu hoeren und ist deshalb eine zusaetzliche Security Funktion!

Damit der Start von Bind erfolgreich ist müssen das Verzeichnis der Logs sowie des PID Files angepasst werden:

       # chmod 770 /var/named/
       # chmod 770 /var/named/chroot/var/log
       # chmod 770 /var/named/chroot/var/run

Nun starten wir den Deamon neu:

       # /etc/init.d/named stop
       # /etc/init.d/named start
       Kontrolliere den Status des Servers:
       # /usr/sbin/rndc status
       
       --------------- output rndc status ---------------
       
       version: 9.6.1-P3-RedHat-9.6.1-15.P3 ([secured])
       CPUs found: 4
       worker threads: 4
       number of zones: 2
       debug level: 0
       xfers running: 0
       xfers deferred: 0
       soa queries in progress: 0
       query logging is ON
       recursive clients: 0/0/1000
       tcp clients: 0/100
       server is up and running
       
       --------------- output rndc status ---------------

Damit Bind auch automatisch gestartet wird beim Systemstart erstellen wir im nötigen Runlevel einen Softlink auf das Startscript:

       # cd /etc/rc3.d/
       # ln -s ../init.d/named /etc/rc3.d/S99named
       # cd /etc/rc0.d/
       # ln -s ../init.d/named /etc/rc3.d/K22named

DNS Zone Erfassen

Wir werden nun im nächsten Schritt eine Zone erfassen (eine Domaine hinzufügen). Als Ausgangslage sind beide Server dh. DNS1 und DNS2 exakt genau gleiche wie hier dokumentiert konfiguriert. Als Beispiel nehmen wir die Domaine comcept.ch zur Hand. Um die Konfiguration manuell durchzuführen erstelle folgendes File:

       Für den Primary DNS1 Server:
       
       # vi /var/named/chroot/var/named/master/comcept.ch.hosts
       
       -------------- /var/named/chroot/var/named/master/comcept.ch.hosts -------------- 
       
       $TTL 86400
       ; Information for the "forward" domain comcept.ch.
       @       IN SOA ns1.comcept.ch.         netadmin.comcept.ch. (
                                       2010020101      ; Serial number
                                       43200           ; Refresh timer - 12 hours
                                       3600            ; Retry timer - 1 hour
                                       604800          ; Expire timer - 1 week
                                       86400           ; Minimum timer - 1 day
                                       )
                                       IN      NS      ns1.comcept.ch.        ; primary
                                       IN      NS      ns2.comcept.ch.        ; secondary
       
           gw.comcept.ch.              IN      A       195.225.45.254
           www.comcept.ch.             IN      A       62.192.27.145
       
           comcept.ch.                 IN      MX 10   smtp.comcept.ch.
       
           ftp.comcept.ch.             IN      CNAME   www
       
           localhost                   IN      A       127.0.0.1
       
       -------------- /var/named/chroot/var/named/master/comcept.ch.hosts -------------- 

Das Master Zone File für die Domaine comcept.ch ist erstellt. Dieses Domaine benutzt den IP Range "195.225.45.0/24". Um nun für die entsprechenden Hosts ein Reverse Lookup zu erstellen muss folgendes File erstellt werden:

       # vi /var/named/chroot/var/named/master/195.225.45.rev
       
       -------------- /var/named/chroot/var/named/master/195.225.45.rev -------------- 
       
       $TTL 86400
       ; Information for the loopback domain 45.225.195.in-addr.arpa.
       @       IN SOA ns1.comcept.ch.         netadmin.comcept.ch. (
                                       2004072203      ; Serial number
                                       43200           ; Refresh timer - 12 hours
                                       3600            ; Retry timer - 1 hour
                                       604800          ; Expire timer - 1 week
                                       86400           ; Minimum timer - 1 day
                                       )
                                       IN      NS      ns1.comcept.ch.        ; primary
                                       IN      NS      ns2.comcept.ch.        ; secondary
       
       161                             IN      PTR     ns1.comcept.ch.
       162                             IN      PTR     ns2.comcept.ch.
       254                             IN      PTR     gw.comcept.ch.
       163                             IN      PTR     smtp.comcept.ch.
       
       -------------- /var/named/chroot/var/named/master/195.225.45.rev -------------- 

Damit nun die Zone comcept.ch sowie der Reverse Lookup für 195.225.45.0/24 berücksichtigt werden müssen die in "named.conf" konfiguriert werden:

NOTE
In unserem Beispiel hat DNS1 die IP 10.150.0.185 sowie DNS2 10.150.0.189 dh. damit der Zone Transfer funktioniert muss der DNS2 für Zone Transfer konfiguriert werden innerhalb der Zone!

       Für den Primary DNS1 Server:
       # vi /var/named/chroot/etc/named.conf
       
       --------------- /var/named/chroot/etc/named.conf ---------------
       
       // *************************************************************** 
       //
       // Set up our ACLs for dns1
       //
       // In BIND 8, ACL names with quotes were treated as different from 
       // the same name without quotes. In BIND 9, both are treated as 
       // the same.
       //
       // The ordering of our views is very important. The named daemon
       // accepts the first match. It means first match wins!
       //
       // *************************************************************** 
       
       controls {
       
               inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey_comcept.ch; };
       
               inet 10.150.0.185 allow {       127.0.0.1;              // localhost
                                               10.150.0.0/24;          // Local Network
       
               } keys { rndckey_comcept.ch; };
       };
       
       
       
       key "rndckey_comcept.ch" {
       
               algorithm "hmac-md5";
               secret "guXeDVSSU6bL/TGDu7oG0znF+x2Ii374kyaJYMRp2a0=";
       };
       
       
       logging { 
       
               channel "default_syslog" { 
               syslog local2; 
               severity debug; 
       
               }; 
       
                      channel audit_log { 
               file "/var/named/chroot/var/log/named.log" versions 10 size 5m; 
               severity debug;
               print-time yes;
               print-category yes;
               print-severity yes;
       
               }; 
       
               category default { default_syslog; }; 
               category general { default_syslog; }; 
               category security { audit_log; default_syslog; }; 
               category config { default_syslog; }; 
               category resolver { audit_log; }; 
               category xfer-in { audit_log; }; 
               category xfer-out { audit_log; }; 
               category notify { audit_log; }; 
               category client { audit_log; }; 
               category network { audit_log; }; 
               category update { audit_log; }; 
               category queries { audit_log; }; 
               category lame-servers { audit_log; }; 
               category edns-disabled { null; }; 
       
       }; 
       
       statistics-channels {
       
               inet 10.150.0.185 port 8053 allow {       127.0.0.1;              // localhost
                                                         10.150.0.0/24;          // Local Sysop
               };
       };
       
       
       
       
       options {
       
               listen-on-v6 { none; };
       
               directory           "/var/named";
               pid-file            "/var/named/chroot/var/run/named.pid";
               dump-file           "/var/named/data/cache_dump.db";
               statistics-file     "/var/named/data/named_stats.txt";
               memstatistics-file  "/var/named/data/named_mem_stats.txt";
       
               zone-statistics yes;
       
               query-source address * port 53;
       
               notify no;                              // Applies to slave zones only
       
               transfer-format many-answers;           // Controls global zone transfer
       
               max-transfer-time-in 60;                // Limit duration of inbound zone transfer
       
               interface-interval 0;                   // Disable scanning for new interfaces
       
               dnssec-enable no;
               dnssec-validation no;
       
               version         "[secured]";            // Hide our "real" version number
       };
       
       
       view "external" {
               allow-query-cache { 127.0.0.1;           // Localhost
                                   10.150.0.0/24;       // Local Network
       
                       };
       
               allow-recursion   { 127.0.0.1;           // mx record smtpmx
                                   10.150.0.0/24;       // external device brutus
       
                       };
       
               match-clients { any; }; 
       
       
               zone "." {
                                                       // The root nameservers
                       type   hint;
                       file   "named.ca";
       };
       
       
               zone    "localhost" {
                                                       // localhost - forward zone
                       type    master;
                       file   "named.localhost";
                       allow-transfer { any; };
       };
       
       
               zone    "loopback" {
                                                       // localhost - inverse zone
                       type   master;
                       file   "named.loopback";
                       allow-transfer { any; };
       
       };
               
       
               zone "45.225.195.in-addr.arpa" {
       
                       type master;
                       file "/var/named/chroot/var/named/masters/195.225.45.rev";
                       allow-transfer { 10.150.0.189;};
                       notify yes;
       
       };
       
       
                zone "comcept.ch" {
                       type master;
                       file "/var/named/chroot/var/named/masters/comcept.ch.hosts";
                       allow-transfer { 10.150.0.189;};
                       notify yes;
       
        };
       
       };
       
       --------------- /var/named/chroot/etc/named.conf ---------------

Das war die Konfiguration für den Primary. Nun muss damit der Slave seine Aufgabe erfüllen kann das "named.conf" des Slaves konfiguriert werden:

       Für den Secondary DNS2 Server:
       # vi /var/named/chroot/etc/named.conf
       
       --------------- /var/named/chroot/etc/named.conf ---------------
       
       // *************************************************************** 
       //
       // Set up our ACLs for dns2
       //
       // In BIND 8, ACL names with quotes were treated as different from 
       // the same name without quotes. In BIND 9, both are treated as 
       // the same.
       //
       // The ordering of our views is very important. The named daemon
       // accepts the first match. It means first match wins!
       //
       // *************************************************************** 
       
       controls {
       
               inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey_comcept.ch; };
       
               inet 10.150.0.189 allow {       127.0.0.1;              // localhost
                                               10.150.0.0/24;          // Local Network
       
               } keys { rndckey_comcept.ch; };
       };
       
       
       
       key "rndckey_comcept.ch" {
       
               algorithm "hmac-md5";
               secret "guXeDVSSU6bL/TGDu7oG0znF+x2Ii374kyaJYMRp2a0=";
       };
       
       
       logging { 
       
               channel "default_syslog" { 
               syslog local2; 
               severity debug; 
       
               }; 
       
                      channel audit_log { 
               file "/var/named/chroot/var/log/named.log" versions 10 size 5m; 
               severity debug;
               print-time yes;
               print-category yes;
               print-severity yes;
       
               }; 
       
               category default { default_syslog; }; 
               category general { default_syslog; }; 
               category security { audit_log; default_syslog; }; 
               category config { default_syslog; }; 
               category resolver { audit_log; }; 
               category xfer-in { audit_log; }; 
               category xfer-out { audit_log; }; 
               category notify { audit_log; }; 
               category client { audit_log; }; 
               category network { audit_log; }; 
               category update { audit_log; }; 
               category queries { audit_log; }; 
               category lame-servers { audit_log; }; 
               category edns-disabled { null; }; 
       
       }; 
       
       statistics-channels {
       
               inet 10.150.0.189 port 8053 allow {       127.0.0.1;              // localhost
                                                         10.150.0.0/24;          // Local Sysop
               };
       };
       
       
       
       
       options {
       
               listen-on-v6 { none; };
       
               directory           "/var/named";
               pid-file            "/var/named/chroot/var/run/named.pid";
               dump-file           "/var/named/data/cache_dump.db";
               statistics-file     "/var/named/data/named_stats.txt";
               memstatistics-file  "/var/named/data/named_mem_stats.txt";
       
               zone-statistics yes;
       
               query-source address * port 53;
       
               notify no;                              // Applies to slave zones only
       
               transfer-format many-answers;           // Controls global zone transfer
       
               max-transfer-time-in 60;                // Limit duration of inbound zone transfer
       
               interface-interval 0;                   // Disable scanning for new interfaces
       
               dnssec-enable no;
               dnssec-validation no;
       
               version         "[secured]";            // Hide our "real" version number
       };
       
       
       view "external" {
               allow-query-cache { 127.0.0.1;           // Localhost
                                   10.150.0.0/24;       // Local Network
       
                       };
       
               allow-recursion   { 127.0.0.1;           // mx record smtpmx
                                   10.150.0.0/24;       // external device brutus
       
                       };
       
               match-clients { any; }; 
       
       
               zone "." {
                                                       // The root nameservers
                       type   hint;
                       file   "named.ca";
       };
       
       
               zone    "localhost" {
                                                       // localhost - forward zone
                       type    master;
                       file   "named.localhost";
                       allow-transfer { any; };
       };
       
       
               zone    "loopback" {
                                                       // localhost - inverse zone
                       type   master;
                       file   "named.loopback";
                       allow-transfer { any; };
       
       };
               
       
               zone "45.225.195.in-addr.arpa" {
                       type slave;
                       masters { 10.150.0.185;};
               //        transfer-source 10.150.0.185;
                       file "/var/named/chroot/var/named/slave/195.225.45.rev";
                       allow-transfer { none; };
       };
       
       
       
               zone "comcept.ch" {
       
                       type slave;
                       masters { 10.150.0.185;};
               //        transfer-source 10.150.0.185;
                       file "/var/named/chroot/var/named/slave/comcept.ch.hosts";
                       allow-transfer { none; };
       
        };
       
       };
       
       --------------- /var/named/chroot/etc/named.conf ---------------

Die Konfiguration für diese Domaine comcept.ch sowie mit dem IP Range 195.225.45.0/24 der für den Reverse Lookup verwendet wird ist abgeschlossen. Starte nun den Bind DNS Server 1 und 2 neu:

       # /etc/init.d/named restart

Um die vorherige Konfiguration betreffend comcept.ch sowie 195.225.45.0/24 durchzuführen kann auch Webmin benutzt werden dh. gehe folgendermassen vor:

       BIND DNS-Server > Neue Master-Zone anlegen

Danach erscheint eine neue Seite anhand dieser kann die neue Zone erfasst werden. In unserem Fall comcept.ch

       Datei:Webmin-11.jpg

Das File das generiert wurde kann auch angeschaut werden dh. wähle:

       Datei:Webmin-12.jpg
       Datei:Webmin-13.jpg

Die Zone Parameter können unter "Bearbeite Zonenparameter" manipuliert werden:

       Datei:Webmin-14.jpg
       Datei:Webmin-15.jpg

Um das Zonen File nun zu vervollständingen kann über "Bearbeite Datensatzdatei" die entpsrechenden Einträge per copy/paste hinzugefügt werden oder man benutzt die verschieenen "Type" Positionen:

       Datei:Webmin-16.jpg

Der Eintrag für "/var/named/chroot/etc/named.conf" muss nicht hinzugefügt werden denn Webmin übernimmt diese Arbeit:

               zone "beispiel.ch" {
                       type master;
                       file "/var/named/chroot/var/named/masters/beispiel.ch.external.hosts";
                       };
       };

Wie man sieht ist der allgemeine Eintrag erstellt worden jedoch fehlt zur Vervollständigung "allow-transfer" sowie die "notify" Anweisung. Oeffne über die Hauptseite von Webmin das "named.conf" über "Bearbeiten":

       Datei:Webmin-17.jpg

Erweitere nun den entsprechenden Eintrag:

               zone "beispiel.ch" {
                       type master;
                       file "/var/named/chroot/var/named/masters/beispiel.ch.external.hosts";
                       allow-transfer { 10.150.0.189;};
                       notify yes;
                       };
       };

Bestätige die Konfig mit dem Button "Speichern". Gehe für den IP Range gleichermassen vor inkl. "named.conf" für den Secondary DNS2 Server. Die Erweiterung betreffend RC192 etc. Netzwerke können ebenfalls über Webmin zu "named.conf" anhand der Position "Bearbeiten hinzugefügt werden.

NOTE
Webmin kontrolliert bei jedem Speichervorgang die Konfig im Hintergrund jedoch ist es empfohlen speziell bei der Manipulation von "named.conf" die Konfig von Webmin überprüfen zu lassen (Check BIND Config)

Weitere Informationen/Dokumentation betreffend dem Modul Bind findet man auf folgenden Link:

       http://doxfer.com/Webmin/BINDDNSServer

Bind Zusätzliche Konfiguration

Um den DNS1 und DNS2 Server zu optimieren dh. damit er bestimmte Anfragen nicht mehr beantwortet kann die Konfiguration erweitert werden. Die zusätzliche Konfiguration die wir durchführen hat zum Ziel das IPv6 IP Ranges sowie bestimmte Netzwerke nach RFC nicht mehr berücksichtigt werden dh. Anfragen werden von diesen Netzwerken nicht mehr beantwortet. Zur Vorbereitung erstelle folgende Files:

       # vi /var/named/named.empty 
       
       --------------- named.empty ---------------
       
       $TTL 3H
       @       IN SOA  @ rname.invalid. (
                                               0       ; serial
                                               1D      ; refresh
                                               1H      ; retry
                                               1W      ; expire
                                               3H )    ; minimum
               NS      @
       
       --------------- named.empty ---------------
       # vi /var/named/named.localhost-reverse
       
       --------------- /var/named/named.localhost-reverse ---------------
       
       $TTL 3h
       @ SOA localhost. nobody.localhost. 42 1d 12h 1w 3h
               ; Serial, Refresh, Retry, Expire, Neg. cache TTL
       
               NS      localhost.
       
       1.0.0   PTR     localhost.
       
       1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 PTR localhost.
       
       --------------- /var/named/named.localhost-reverse ---------------
       # chown root:named /var/named/named.*
       # chmod 640 /var/named/named.*

Danach füge zum Primary DNS Server folgendes zur Konfig hinzu:

       Für den Primary DNS1 Server:
       # vi /var/named/chroot/etc/named.conf
       
       --------------- /var/named/chroot/etc/named.conf ---------------
       
       // *************************************************************** 
       //
       // Set up our ACLs for dns1
       //
       // In BIND 8, ACL names with quotes were treated as different from 
       // the same name without quotes. In BIND 9, both are treated as 
       // the same.
       //
       // The ordering of our views is very important. The named daemon
       // accepts the first match. It means first match wins!
       //
       // *************************************************************** 
       
       controls {
       
               inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey_comcept.ch; };
       
               inet 10.150.0.185 allow {       127.0.0.1;              // localhost
                                               10.150.0.0/24;          // Local Network
       
               } keys { rndckey_comcept.ch; };
       };
       
       
       
       key "rndckey_comcept.ch" {
       
               algorithm "hmac-md5";
               secret "guXeDVSSU6bL/TGDu7oG0znF+x2Ii374kyaJYMRp2a0=";
       };
       
       
       logging { 
       
               channel "default_syslog" { 
               syslog local2; 
               severity debug; 
       
               }; 
       
                      channel audit_log { 
               file "/var/named/chroot/var/log/named.log" versions 10 size 5m; 
               severity debug;
               print-time yes;
               print-category yes;
               print-severity yes;
       
               }; 
       
               category default { default_syslog; }; 
               category general { default_syslog; }; 
               category security { audit_log; default_syslog; }; 
               category config { default_syslog; }; 
               category resolver { audit_log; }; 
               category xfer-in { audit_log; }; 
               category xfer-out { audit_log; }; 
               category notify { audit_log; }; 
               category client { audit_log; }; 
               category network { audit_log; }; 
               category update { audit_log; }; 
               category queries { audit_log; }; 
               category lame-servers { audit_log; }; 
               category edns-disabled { null; }; 
       
       }; 
       
       statistics-channels {
       
               inet 10.150.0.185 port 8053 allow {       127.0.0.1;              // localhost
                                                         10.150.0.0/24;          // Local Sysop
               };
       };
       
       
       
       
       options {
       
               listen-on-v6 { none; };
       
               directory           "/var/named";
               pid-file            "/var/named/chroot/var/run/named.pid";
               dump-file           "/var/named/data/cache_dump.db";
               statistics-file     "/var/named/data/named_stats.txt";
               memstatistics-file  "/var/named/data/named_mem_stats.txt";
       
               zone-statistics yes;
       
               query-source address * port 53;
       
               notify no;                              // Applies to slave zones only
       
               transfer-format many-answers;           // Controls global zone transfer
       
               max-transfer-time-in 60;                // Limit duration of inbound zone transfer
       
               interface-interval 0;                   // Disable scanning for new interfaces
       
               dnssec-enable no;
               dnssec-validation no;
       
               version         "[secured]";            // Hide our "real" version number
       };
       
       
       view "external" {
               allow-query-cache { 127.0.0.1;           // Localhost
                                   10.150.0.0/24;       // Local Network
       
                       };
       
               allow-recursion   { 127.0.0.1;           // mx record smtpmx
                                   10.150.0.0/24;       // external device brutus
       
                       };
       
               match-clients { any; }; 
       
       
               zone "." {
                                                       // The root nameservers
                       type   hint;
                       file   "named.ca";
       };
       
       
               zone    "localhost" {
                                                       // localhost - forward zone
                       type    master;
                       file   "named.localhost";
                       allow-transfer { any; };
       };
       
       
       zone    "loopback" {
                                               // localhost - inverse zone
               type   master;
               file   "named.loopback";
               allow-transfer { any; };
       
       };
       
               // Serving the following zones locally will prevent any queries for these zones
               // leaving your network and going to the root name servers.  This has two significant
               // advantages:
       
               // 1. Faster local resolution for your users
               // 2. No spurious traffic will be sent from your network to the roots
       
               // RFC 1912
               zone "127.in-addr.arpa"         { type master; file "named.localhost-reverse"; };
               zone "255.in-addr.arpa"         { type master; file "named.empty"; };
       
               // RFC 1912-style zone for IPv6 localhost address
               zone "0.ip6.arpa"               { type master; file "named.localhost-reverse"; };
       
               // "This" Network (RFCs 1912 and 3330)
               zone "0.in-addr.arpa"           { type master; file "named.empty"; };
       
               // Private Use Networks (RFC 1918)
               zone "10.in-addr.arpa"          { type master; file "named.empty"; };
               zone "16.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "17.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "18.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "19.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "20.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "21.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "22.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "23.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "24.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "25.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "26.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "27.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "28.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "29.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "30.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "31.172.in-addr.arpa"      { type master; file "named.empty"; };
               zone "168.192.in-addr.arpa"     { type master; file "named.empty"; };
       
               // Link-local/APIPA (RFCs 3330 and 3927)
               zone "254.169.in-addr.arpa"     { type master; file "named.empty"; };
       
               // TEST-NET for Documentation (RFC 3330)
               zone "2.0.192.in-addr.arpa"     { type master; file "named.empty"; };
       
               // Router Benchmark Testing (RFC 3330)
               zone "18.198.in-addr.arpa"      { type master; file "named.empty"; };
               zone "19.198.in-addr.arpa"      { type master; file "named.empty"; };
       
               // IANA Reserved - Old Class E Space
               zone "240.in-addr.arpa"         { type master; file "named.empty"; };
               zone "241.in-addr.arpa"         { type master; file "named.empty"; };
               zone "242.in-addr.arpa"         { type master; file "named.empty"; };
               zone "243.in-addr.arpa"         { type master; file "named.empty"; };
               zone "244.in-addr.arpa"         { type master; file "named.empty"; };
               zone "245.in-addr.arpa"         { type master; file "named.empty"; };
               zone "246.in-addr.arpa"         { type master; file "named.empty"; };
               zone "247.in-addr.arpa"         { type master; file "named.empty"; };
               zone "248.in-addr.arpa"         { type master; file "named.empty"; };
               zone "249.in-addr.arpa"         { type master; file "named.empty"; };
               zone "250.in-addr.arpa"         { type master; file "named.empty"; };
               zone "251.in-addr.arpa"         { type master; file "named.empty"; };
               zone "252.in-addr.arpa"         { type master; file "named.empty"; };
               zone "253.in-addr.arpa"         { type master; file "named.empty"; };
               zone "254.in-addr.arpa"         { type master; file "named.empty"; };
       
               // IPv6 Unassigned Addresses (RFC 4291)
               zone "1.ip6.arpa"               { type master; file "named.empty"; };
               zone "3.ip6.arpa"               { type master; file "named.empty"; };
               zone "4.ip6.arpa"               { type master; file "named.empty"; };
               zone "5.ip6.arpa"               { type master; file "named.empty"; };
               zone "6.ip6.arpa"               { type master; file "named.empty"; };
               zone "7.ip6.arpa"               { type master; file "named.empty"; };
               zone "8.ip6.arpa"               { type master; file "named.empty"; };
               zone "9.ip6.arpa"               { type master; file "named.empty"; };
               zone "a.ip6.arpa"               { type master; file "named.empty"; };
               zone "b.ip6.arpa"               { type master; file "named.empty"; };
               zone "c.ip6.arpa"               { type master; file "named.empty"; };
               zone "d.ip6.arpa"               { type master; file "named.empty"; };
               zone "e.ip6.arpa"               { type master; file "named.empty"; };
               zone "0.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "1.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "2.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "3.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "4.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "5.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "6.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "7.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "8.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "9.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "a.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "b.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "0.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "1.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "2.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "3.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "4.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "5.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "6.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "7.e.f.ip6.arpa"           { type master; file "named.empty"; };
       
               // IPv6 ULA (RFC 4193)
               zone "c.f.ip6.arpa"             { type master; file "named.empty"; };
               zone "d.f.ip6.arpa"             { type master; file "named.empty"; };
       
               // IPv6 Link Local (RFC 4291)
               zone "8.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "9.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "a.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "b.e.f.ip6.arpa"           { type master; file "named.empty"; };
       
               // IPv6 Deprecated Site-Local Addresses (RFC 3879)
               zone "c.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "d.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "e.e.f.ip6.arpa"           { type master; file "named.empty"; };
               zone "f.e.f.ip6.arpa"           { type master; file "named.empty"; };
       
               // IP6.INT is Deprecated (RFC 4159)
               zone "ip6.int"                  { type master; file "named.empty"; };
               
       
       };
       
       
               zone "45.225.195.in-addr.arpa" {
       
                       type master;
                       file "/var/named/chroot/var/named/masters/195.225.45.rev";
                       allow-transfer { 10.150.0.189;};
                       notify yes;
       
       };
       
       
                zone "comcept.ch" {
                       type master;
                       file "/var/named/chroot/var/named/masters/comcept.ch.hosts";
                       allow-transfer { 10.150.0.189;};
                       notify yes;
       
        };
       
       };
       
       --------------- /var/named/chroot/etc/named.conf ---------------

NOTE
Nachdem diese Konfiguration durchgeführt wurde können die Zonen innerhalb Webmin nicht mehr angzeigt werden da das max. der Zonen überschritten wurde. Aendere die max. anzuzeigender Zonen in Webmin indem du folgendes wählst:

       BIND DNS-Server > Modulkonfiguration 
       
       Datei:Webmin-10.jpg

Nun muss nur noch das Konfig File des DNS2 konfiguriert werden:

       Für den Secondary DNS2 Server:
       # vi /var/named/chroot/etc/named.conf
       
       --------------- /var/named/chroot/etc/named.conf ---------------
       
       // *************************************************************** 
       //
       // Set up our ACLs for dns2
       //
       // In BIND 8, ACL names with quotes were treated as different from 
       // the same name without quotes. In BIND 9, both are treated as 
       // the same.
       //
       // The ordering of our views is very important. The named daemon
       // accepts the first match. It means first match wins!
       //
       // *************************************************************** 
       
       controls {
       
               inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey_comcept.ch; };
       
               inet 10.150.0.189 allow {       127.0.0.1;              // localhost
                                               10.150.0.0/24;          // Local Network
       
               } keys { rndckey_comcept.ch; };
       };
       
       
       
       key "rndckey_comcept.ch" {
       
               algorithm "hmac-md5";
               secret "guXeDVSSU6bL/TGDu7oG0znF+x2Ii374kyaJYMRp2a0=";
       };
       
       
       logging { 
       
               channel "default_syslog" { 
               syslog local2; 
               severity debug; 
       
               }; 
       
                      channel audit_log { 
               file "/var/named/chroot/var/log/named.log" versions 10 size 5m; 
               severity debug;
               print-time yes;
               print-category yes;
               print-severity yes;
       
               }; 
       
               category default { default_syslog; }; 
               category general { default_syslog; }; 
               category security { audit_log; default_syslog; }; 
               category config { default_syslog; }; 
               category resolver { audit_log; }; 
               category xfer-in { audit_log; }; 
               category xfer-out { audit_log; }; 
               category notify { audit_log; }; 
               category client { audit_log; }; 
               category network { audit_log; }; 
               category update { audit_log; }; 
               category queries { audit_log; }; 
               category lame-servers { audit_log; }; 
               category edns-disabled { null; }; 
       
       }; 
       
       statistics-channels {
       
               inet 10.150.0.189 port 8053 allow {       127.0.0.1;              // localhost
                                                         10.150.0.0/24;          // Local Sysop
               };
       };
       
       
       
       
       options {
       
               listen-on-v6 { none; };
       
               directory           "/var/named";
               pid-file            "/var/named/chroot/var/run/named.pid";
               dump-file           "/var/named/data/cache_dump.db";
               statistics-file     "/var/named/data/named_stats.txt";
               memstatistics-file  "/var/named/data/named_mem_stats.txt";
       
               zone-statistics yes;
       
               query-source address * port 53;
       
               notify no;                              // Applies to slave zones only
       
               transfer-format many-answers;           // Controls global zone transfer
       
               max-transfer-time-in 60;                // Limit duration of inbound zone transfer
       
               interface-interval 0;                   // Disable scanning for new interfaces
       
               dnssec-enable no;
               dnssec-validation no;
       
               version         "[secured]";            // Hide our "real" version number
       };
       
       
       view "external" {
               allow-query-cache { 127.0.0.1;           // Localhost
                                   10.150.0.0/24;       // Local Network
       
                       };
       
               allow-recursion   { 127.0.0.1;           // mx record smtpmx
                                   10.150.0.0/24;       // external device brutus
       
                       };
       
               match-clients { any; }; 
       
       
               zone "." {
                                                       // The root nameservers
                       type   hint;
                       file   "named.ca";
       };
       
       
               zone    "localhost" {
                                                       // localhost - forward zone
                       type    master;
                       file   "named.localhost";
                       allow-transfer { any; };
       };
       
       
               zone    "loopback" {
                                                       // localhost - inverse zone
                       type   master;
                       file   "named.loopback";
                       allow-transfer { any; };
       
       };
       
       
               // Serving the following zones locally will prevent any queries for these zones 
               // leaving your network and going to the root name servers.  This has two significant
               // advantages:
       
               // 1. Faster local resolution for your users
               // 2. No spurious traffic will be sent from your network to the roots
       
               // RFC 1912
               zone "127.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.localhost-reverse"; };
               zone "255.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // RFC 1912-style zone for IPv6 localhost address
               zone "0.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.localhost-reverse"; };
       
               // "This" Network (RFCs 1912 and 3330)
               zone "0.in-addr.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // Private Use Networks (RFC 1918)
               zone "10.in-addr.arpa"          { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "16.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "17.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "18.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "19.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "20.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "21.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "22.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "23.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "24.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "25.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "26.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "27.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "28.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "29.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "30.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "31.172.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "168.192.in-addr.arpa"     { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // Link-local/APIPA (RFCs 3330 and 3927)
               zone "254.169.in-addr.arpa"     { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // TEST-NET for Documentation (RFC 3330)
               zone "2.0.192.in-addr.arpa"     { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // Router Benchmark Testing (RFC 3330)
               zone "18.198.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "19.198.in-addr.arpa"      { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // IANA Reserved - Old Class E Space
               zone "240.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "241.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "242.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "243.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "244.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "245.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "246.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "247.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "248.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "249.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "250.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "251.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "252.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "253.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "254.in-addr.arpa"         { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // IPv6 Unassigned Addresses (RFC 4291)
               zone "1.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "3.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "4.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "5.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "6.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "7.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "8.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "9.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "a.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "b.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "c.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "d.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "e.ip6.arpa"               { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "0.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "1.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "2.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "3.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "4.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "5.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "6.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "7.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "8.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "9.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "a.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "b.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "0.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "1.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "2.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "3.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "4.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "5.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "6.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "7.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // IPv6 ULA (RFC 4193)
               zone "c.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "d.f.ip6.arpa"             { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // IPv6 Link Local (RFC 4291)
               zone "8.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "9.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "a.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "b.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // IPv6 Deprecated Site-Local Addresses (RFC 3879)
               zone "c.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "d.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "e.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               zone "f.e.f.ip6.arpa"           { type slave; masters { 10.150.0.185;}; file "named.empty"; };
       
               // IP6.INT is Deprecated (RFC 4159)
               zone "ip6.int"                  { type slave; masters { 10.150.0.185;}; file "named.empty"; };
               
       
               zone "45.225.195.in-addr.arpa" {
                       type slave;
                       masters { 10.150.0.185;};
               //        transfer-source 10.150.0.185;
                       file "/var/named/chroot/var/named/slave/195.225.45.rev";
                       allow-transfer { none; };
       };
       
       
       
               zone "comcept.ch" {
       
                       type slave;
                       masters { 10.150.0.185;};
               //        transfer-source 10.150.0.185;
                       file "/var/named/chroot/var/named/slave/comcept.ch.hosts";
                       allow-transfer { none; };
       
        };
       
       };
       
       --------------- /var/named/chroot/etc/named.conf ---------------

Bind XML Statistik

Zusätzlich zum Webmin und Bind selber läuft im Hintergrund eine Statistik. Diese wird per XML aufbereitet und steht per http auf diesem Port zur Verfügung der definiert wurde im "named.conf" im Container "statistics-channels". Somit um die Statistik Seite anzugehen benutze:

       http://10.150.0.185:8053