• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

dns mit ldap-zone-lookup unter suse 9.3

dialsc

Newbie
guten morgen aller seits,

ich habe mir vor wenigen tagen die version 9.3 der suse distribution installiert und bin dabei ueber die tatsache gestolpert, dass die bind9-version, welche in suse enthalten ist, den sdbPatch zur abfrage von zonenDaten unter ldap bereits einthalten ist. nun versuche ich seit zwei tagen, dies auch zum laufen zu bringen, woran ich bis dato leider gescheitert bin und weswege ich mich heute an euch wende.

hier meine config:

/etc/named.con
Code:
zone "domain.com" {
       type master;
       database "ldap ldap://ldap.mydom.local/dc=domain,dc=com,o=DNS,dc=domian,dc=no????!bindname=cn=admin%2cdc=domain%2cdc=no,!x-bindpw=secret 172800";
};

selbstredent habe ich alle teile der ldapUrl an meine umgebung angepasst.

leider erhalte ich beim starten des namedServers einen fehler, welcher besagt, dass der bindVersuch fehlgeschlagen ist und die zonen somit nich erstellt werden konnte.

interessanter weise verhaelt es sich aber auch so, dass obwohl ich den loglevel des ladpServers auf das maximum gestellt habe und da wird echt ne menge ausgegeben, ich keinerlei anstallten in der logDatei erkennen kann, dass von meinem server, welcher den derart konfigurierten bind ausfuehrt, ueberhaupt ein connect versucht wird.

hat vielleicht schon jemand erfolgreich versucht, bind9 das auslesen der entsprechend konfigurierten zonen aus einem ldapFaehigen verzeichnisdienst bezubringen und kann mir sagen, was es dabei noch zu beachten gibt?

natuerlich habe ich auch entsprechende eintraege im konfigurierten tree des verzeichnisses eingefuegt, bei deren erstellung ich mich streng an die howtos gehalten habe, welche auf anhieb im netz gefunden werden koennen.

fuer jede hilfe bin ich euch sehr dankbar.

gruesse...

dialsc
 
Wir rufen mal alle laut:
.local

Schau mal hier:
http://www.linux-club.de/viewtopic.php?t=6067
Insbesondere der Tipp am Ende von Seite 2

Grüße
 
OP
D

dialsc

Newbie
hallo zusammen,

zunaechst einmal meinen dank an carsten, dass er sich meines problemes angenommen hat, merci.

ich kann es mir natuerlich nicht verkneifen, auf carsten's statement bezueglich der tld .local zurueck zu kommen.

k, lieber carsten, natuerlich ist mein netz nicht nur auf eine ".local"-dns-zone beschraenkt. aber selbstredend huete ich mich natuerlich davor, hier preis zu geben, wo man mich findet... ;-)

gut, genug gelaber...

also, mein problem war es, wie ich mittler weile herausgefunden habe, dass der bind natuerlich ueberhaupt nicht in der lage ist, einen dnsNamen aufzuloesen, waerend er gerade dabei ist, grundlegende startUpRoutinen durch zu fuehren, wie eben das auslesen der zonenDaten, fuer welche er selbst authoritativer weise zustaendig ist. mit anderen worten, soll bind zonenDaten aus einem ldapVerzeichnis auslesen, so muss diese zone unter der verwendung der ipAdresse konfiguriert werden, laeuft der verzeichnisdienst nicht auf der lokalen maschine. man kann natuerlich auch den dnsNamen verwenden, muss diesen dann aber zusammen mit der zugehoerigen ipAdresse in der hostsDatei des servers ablegen, auf welchem der bind betrieben wird.

hth

gruesse

dialsc
 

stka

Guru
Hallo dialsc,

die Sachen mit bind zusammen mit Ldap interessiert mich, kannst du vielleicht mal eine gutes howto empfehlen oder in ein paar kurzen Schritten das ganze erklären? Vielleicht interessiert das ja noch mehr Leute.

Danke

Stefan [/code]
 
OP
D

dialsc

Newbie
hallo stka,

ich werde, aller wahrscheinlichkeit nach morgen, ein kleines howto aufsetzen, wie man bind das nachschlagen der zonenDaten in einem verzeichnisdienstTree beibringt.

heute komme ich leider nicht mehr dazu, aber ich denke, dass es morgen auch noch reicht, oder?! ;-)

schoenen abend euch allen...

dialsc
 

stka

Guru
Hallo dialsc,
vielen Dank für das howto, ich werde das ganze diese Woche wohl noch testen und dir dann mitteilen wie es geklappt hat. Ich werde das ganze erst mal unter suse 9.0 mit bind Version 9.2x versuchen.
Gruß
Stefan
 
OP
D

dialsc

Newbie
hallo stefan,

mach das, ja. wuerde mich echt interessieren, ob man damit wirklich einen funktionierenden bind mit ldap-lookup fuer zonenDaten konfigurieren kann. ist immer hin mein erstes howto... ;-)

viel spass dabei...!

gruesse

dirk
 

stka

Guru
Hallo dialsc,
einen kleinen Fehler habe ich schon gefunden:
dn: relativeDomainName=1,ou=100.168.192.in-addr.arpa,ou=zone.master,ou=dns,dc=mydomain,dc=local
da fehlt eine Instanz, nämlich "ou=reverse" vielleicht änderst du das noch mal im howto.
Gruß
Stefan
 
OP
D

dialsc

Newbie
hi stefan,

merci fuer den hinweis. waren sogar noch zwei drei stellen mehr, welche ebenfalls diesen fehler beinhalteten.

habe sie nun berichtigt.

bye bye

dirk
 

na-cx

Hacker
Habe mir erlaubt, das HowTo einzeln ins Forum zu stellen.

Damit das nicht gleich wieder versabbelt wird habe ich es auch noch gesperrt.

@dialsc: wenn da noch was zukommen soll / geändert werden soll, bitte PN an mich senden, ich füge das dann ein.
 

stka

Guru
Hallo Dirk,

der LDAP-Baum steht nun bei mir. Das Howto bis zu dem Punkt klappt auch. Die Einträge in der named.conf kann ich aber noch nicht testen, da auf meinem Server Suse 9.0 läuft und da das Patch noch nicht eingebunden ist. Der Versuch Bind in der Version 9.3.1 neu zu compilieren schlug fehl. Mit Fehlern beim make:
Code:
ldapdb.o(.text+0x258): In function `ldapdb_getconn':
/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:138: undefined reference to `ldap_unbind'
ldapdb.o(.text+0x2c6): In function `ldapdb_bind':
/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:200: undefined reference to `ldap_open'
ldapdb.o(.text+0x2e5):/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:199: undefined reference to`ldap_unbind'
ldapdb.o(.text+0x2f7):/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:200: undefined reference to`ldap_open'
ldapdb.o(.text+0x30f):/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:205: undefined reference to`ldap_set_option'
ldapdb.o(.text+0x322):/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:214: undefined reference to`ldap_simple_bind_s'
ldapdb.o(.text+0x334):/root/bind-neu/bind-9.3.1/bin/named/ldapdb.c:215: undefined reference to`ldap_unbind'
Mein Problem ist wahrscheinlich die Änderung an der Datei "Makefile.in" Die Einträge für die ldapdb.o und ldapdb.h sind kein Problem. Auch die "include-Anweisungen" habe ich alle. Was ich nicht verstehe ist der folgende Teil:
You also need to add something like
-I/usr/local/include to DBDRIVER_INCLUDES and
-L/usr/local/lib -lldap -llber -lresolv to DBDRIVER_LIBS
depending on what LDAP library you have and where you installed it.
Vielleicht kannst du mir ja dabei helfen? Ein versuch den bind von suse 9.3 zu übernehmen schlug wie erwartet auf Grund der vielen Abhängigkeiten fehl.
Gruß

Stefan
 
OP
D

dialsc

Newbie
hallo stefan,

sorry fuer die spaete antwort, bin gegenwaertig sehr beschaeftigt.

ich muss dir leider mitteilen, dass ich dir diesbezueglich nicht weiter helfen kann. ich selbst habe diese konfiguration unter suse linux 9.3 angewendet und wie bereits im howto beschrieben, besteht hier die notwendigkeit zum patchen des bind nicht. daher bin ich auch nicht damit in kontakt getreten.

wenn du die loesung aber gefunden hast, dann bitte ich dich, dieses hier mitzuteilen. ich werde na-cx kontaktieren und ihn bitten, den entsprechenden hinweis an entsprechender stelle einzufuegen.

sorry noch mal.

ich hoffe, du kannst das problem loesen und dokumentierst dein vorgehen so gut, dass wir es dann, wie bereits gesagt, in das howto einfuegen koenne.

schoenen tag und gruesse

dirk
 

stka

Guru
Hallo Dirk,
das Problem mit dem compilieren ist gelöst, danke noch mal an oc2pus, dazu aber später mehr, versprochen. Jetzt will ich das ganze erst zum laufen bringen und dann die Beschreibung wie ich's gemacht habe.
Wenn ich jetzt den named starte, erhalte ich die folgenden Meldungen in der /var/log/messages:
Jun 16 17:42:54 fs1 named[3762]: starting BIND 9.3.1
Jun 16 17:42:54 fs1 named[3762]: loading configuration from '/etc/named.conf'
Jun 16 17:42:54 fs1 named[3762]: listening on IPv6 interfaces, port 53
Jun 16 17:42:54 fs1 named[3762]: listening on IPv4 interface lo, 127.0.0.1#53
Jun 16 17:42:54 fs1 named[3762]: listening on IPv4 interface eth0, 192.168.123.100#53
Jun 16 17:42:54 fs1 named[3762]: command channel listening on 127.0.0.1#953
Jun 16 17:42:54 fs1 named[3762]: command channel listening on ::1#953
Jun 16 17:42:54 fs1 named[3762]: zone 0.0.127.in-addr.arpa/IN: loaded serial 42
Jun 16 17:42:54 fs1 named[3762]: zone 123.168.192.in-addr.arpa/IN: could not find NS and/or SOA records
Jun 16 17:42:54 fs1 named[3762]: zone 123.168.192.in-addr.arpa/IN: has 0 SOA records
Jun 16 17:42:54 fs1 named[3762]: zone 123.168.192.in-addr.arpa/IN: has no NS records
Jun 16 17:42:54 fs1 named[3762]: zone kania-lokal.de/IN: could not find NS and/or SOA records
Jun 16 17:42:54 fs1 named[3762]: zone kania-lokal.de/IN: has 0 SOA records
Jun 16 17:42:54 fs1 named[3762]: zone kania-lokal.de/IN: has no NS records
Jun 16 17:42:54 fs1 named[3762]: running
hier mal die die Ausgabe von "cfg_test":
~/bind-neu/bind-9.3.1/bin/tests # ./cfg_test --named /etc/named.conf
read config: success
options {
directory "/var/lib/named";
dump-file "/var/log/named_dump.db";
listen-on-v6 {
"any";
};
statistics-file "/var/log/named.stats";
notify no;
forwarders {
145.253.2.11;
145.253.2.75;
};
};
zone "kania-lokal.de" in {
type master;
database "ldap ldap://192.168.123.100/ou=kania-lokal.de,ou=forward,ou=zone.master,ou=dns,dc=kania-lokal,dc=de 172800";
};
zone "123.168.192.in-addr.arpa" in {
type master;
database "ldap ldap://192.168.123.100/ou=123.168.192.in-addr.arpa,ou=reverse,ou=zone.master,ou=dns,dc=kania-lokal,dc=de 172800";
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "db.127.0.0";
};
zone "." in {
type hint;
file "db.root";
};
Und damit es dir beim lesen nicht zu langweilig wird ;-) hier noch die Einträge aus meinem LDAP-Baum im ldif Format:
# Eintrag 7: relativeDomainName=@,ou=kania-lokal.de,ou=forward,ou=zone.ma...
dn:relativeDomainName=@,ou=kania-lokal.de,ou=forward,ou=zone.master,ou=dns,d
c=kania-lokal,dc=de
dNSClass: IN
dNSTTL: 3600
mXRecord: 10 com2.kania-lokal.de.
nSRecord: fs1.kania-lokal.de.
nSRecord: com2.kania-lokal.de.
objectClass: dNSZone
objectClass: top
relativeDomainName: @
sOARecord: fs1.kania-lokal.de. root.fs1.kania-lokal.de. 2005061300 3600 1800
604800 86400
zoneName: kania-lokal.de
# Eintrag 18: relativeDomainName=2,ou=123.168.192.in-addr.arpa,ou=reverse...
dn:relativeDomainName=2,ou=123.168.192.in-addr.arpa,ou=reverse,ou=zone.maste
r,ou=dns,dc=kania-lokal,dc=de
dNSClass: IN
dNSTTL: 86400
objectClass: dNSZone
objectClass: top
pTRRecord: stefan.kania-lokal.de.
relativeDomainName: 2
zoneName: 123.168.192.in-addr.arpa
Ich habe alles so eingetrage wie in deinem howto.
Ich werde jetzt noch mal eine Beschreibung anfertigen für das Einbinden eines selbst compilierten Bind und das dazugehörige init-skript. Das ganze dann wenn alles läuft hier posten, so dass die Sache dann unter allen Versionen läuft ;-)
Gruß
Stefan
 

stka

Guru
Hallo Dirk,

große Freude es läuft. Der Fehler saß mal wieder vor dem Rechner. Ich habe meine Rechte auf den LDAP-Baum eingeschränkt, so dass nur bestimmte Bereiche für alle sichtbar sind. Nun hatte ich aber vergessen den Zweig ou=dns zum lesen freizuschalten, dann geht natürlich nix mehr. Nachdem ich die Rechte richtig gesetzt hatte klappte natürlich alles.
So, Morgen werde ich mal alles aufschreiben und dann posten.

Gruß

Stefan
 
OP
D

dialsc

Newbie
hallo stefan,

freut mich, dass es jetzt geklappt hat, sauber... ist ne interessante sache, gelle.

zum thema.
ich habe mir letztens ein kleines wiki installiert. wenn du magst, dann kann ich meinen teil da rein stellen und du addest dann deinen einfach dazu. so koennten wir ein richtig gutes howto zu dem thema erstellen. was haellst du davon?

ich schick dir gleich mal noch ne pn.

gruesse

dirk
 

stka

Guru
Hier nun die Vorgehensweise um eine Suse Version ohne integrierte LDAP-Unterstützung im bind so zu verändern, dass bind LDAP nutzt. Ich gehe davon aus, dass auf dem System bereits ein bind installiert ist, denn ich habe die Skript von der standard Installation abgeändert. Bei mir auf dem Server Läuft suse 9.0 die Installation mir mittels apt auf dem aktuellen Stand gehalten.
Die aktuelle Version von bind, ich habe 9.3.1 verwendet wird unter http://www.isc.org/index.pl?/sw/bind/ bereit gestellt. Hier noch mal der Link zum Patch: http://www.venaas.no/ldap/bind-sdb/
Als erstes müssen bestimmte Dateien gesichert werden, da diese sonst bei der Deinstallation der RPM-Pakete von bind mit gelöscht werden. Die geänderten Skripte und den Makefile.in für das Patch werde ich aber am Ende vollständig anhängen.
Folgende Dateien müssen gesichert werden:
/etc/named.conf --> Hier sind die derzeitigen Zone definiert die geändert werden müssen.
/etc/openldap/schema/dnszone.schema --> wird sonst bei der Deinstallation gelöscht
/etc/init.d/named --> das Startskript, das wird aber geändert und von den suse spezifischen Teilen befreit.
Wenn diese Dateien gesichert wurden, können nun die folgenden, bind spezifischen RPM's gelöscht werden:
bind
bind-chrootenv
bind-libs
bind-utils
Nun gehen machen wir uns an die Installation des aktuellen bind.
Die beiden tar.gz Dateien (für den bind und das patch) entpacken. Im Verzeichnis des Patch befindet sich eine Datei INSTALL, die das patchen erklärt.
1.
Die Datei ldapdb.c nach /verzeichnis-von-bind9/bin/named und die Datei ldapdb.h nach /vverzeichnis-von-bin9/bin/named/include kopieren.
2.
Als nächster muss die Datei /verzeichnis-von-bind9/bin/named/Makefile.in geändert werden. Der Eintrag ldapdb.@O@ zu DBDRIVER_OBJS und
ldapdb.c zu DBDRIVER_SRCS muss ergänzt werden.
Die Variable DBDRIVERS_LIBS muss um die Parameter -lldap -llber -lresolv ergänzt werden. Die Pfade, wie im INSTALL beschrieben müssen nicht hinzugefügt werde, da bei suse die Includes und Libs im Pfad liegen. Kann man aber machen ;-)
3.
Zum Schluss muss noch die Datei /verzeichnis-von-bind9/bin/named/main.c editiert werden. Unterhalb der Zeile
"#include "xxdb.h"", muss die Zeile "#include <ldapdb.h>" eingefügt werden. Unterhalb der Zeile "xxdb_init();" muss die Zeile "ldapdb_init();" eingefügt werden.
Zum Schluß noch unterhalb der Zeile "xxdb_clear();", die Zeile "ldapdb_clear();" hinzufügen.
Das war's.
Hier der von mir geänderte Makefile.in:
Code:
# Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1998-2002  Internet Software Consortium.
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.

# $Id: Makefile.in,v 1.74.12.11 2004/09/06 21:47:25 marka Exp $

srcdir =        @srcdir@
VPATH =         @srcdir@
top_srcdir =    @top_srcdir@

@BIND9_VERSION@

@BIND9_MAKE_INCLUDES@

#
# Add database drivers here.
#
DBDRIVER_OBJS =
DBDRIVER_SRCS =
DBDRIVER_INCLUDES = -I /usr/include
DBDRIVER_LIBS = -L/usr/lib -lldap -llber -lresolv

CINCLUDES =     -I${srcdir}/include -I${srcdir}/unix/include \
                ${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
                ${ISCCFG_INCLUDES} ${ISCCC_INCLUDES} ${ISC_INCLUDES} \
                ${DBDRIVER_INCLUDES}

CDEFINES =
CWARNINGS =

DNSLIBS =       ../../lib/dns/libdns.@A@ @DNS_CRYPTO_LIBS@
ISCCFGLIBS =    ../../lib/isccfg/libisccfg.@A@
ISCCCLIBS =     ../../lib/isccc/libisccc.@A@
ISCLIBS =       ../../lib/isc/libisc.@A@
LWRESLIBS =     ../../lib/lwres/liblwres.@A@
BIND9LIBS =     ../../lib/bind9/libbind9.@A@

DNSDEPLIBS =    ../../lib/dns/libdns.@A@
ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
ISCCCDEPLIBS =  ../../lib/isccc/libisccc.@A@
ISCDEPLIBS =    ../../lib/isc/libisc.@A@
LWRESDEPLIBS =  ../../lib/lwres/liblwres.@A@
BIND9DEPLIBS =  ../../lib/bind9/libbind9.@A@

DEPLIBS =       ${LWRESDEPLIBS} ${DNSDEPLIBS} ${BIND9DEPLIBS} \
                ${ISCCFGDEPLIBS} ${ISCCCDEPLIBS} ${ISCDEPLIBS}

LIBS =          ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} \
                ${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} ${DBDRIVER_LIBS} @LIBS@

SUBDIRS =       unix

TARGETS =       named@EXEEXT@ lwresd@EXEEXT@

OBJS =          aclconf.@O@ builtin.@O@ client.@O@ config.@O@ control.@O@ \
                controlconf.@O@ interfacemgr.@O@ \
                listenlist.@O@ log.@O@ logconf.@O@ main.@O@ notify.@O@ \
                query.@O@ server.@O@ sortlist.@O@ \
                tkeyconf.@O@ tsigconf.@O@ update.@O@ xfrout.@O@ \
                zoneconf.@O@ \
                lwaddr.@O@ lwresd.@O@ lwdclient.@O@ lwderror.@O@ lwdgabn.@O@ \
                lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@ ldapdb.@O@\
                $(DBDRIVER_OBJS)

UOBJS =         unix/os.@O@

SRCS =          aclconf.c builtin.c client.c config.c control.c \
                controlconf.c interfacemgr.c \
                listenlist.c log.c logconf.c main.c notify.c \
                query.c server.c sortlist.c \
                tkeyconf.c tsigconf.c update.c xfrout.c \
                zoneconf.c \
                lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \
                lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c ldapdb.c \
                $(DBDRIVER_SRCS)

MANPAGES =      named.8 lwresd.8 named.conf.5

HTMLPAGES =     named.html lwresd.html named.conf.html

MANOBJS =       ${MANPAGES} ${HTMLPAGES}

@BIND9_MAKE_RULES@

main.@O@: main.c
        ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
                -DVERSION=\"${VERSION}\" \
                -DNS_LOCALSTATEDIR=\"${localstatedir}\" \
                -DNS_SYSCONFDIR=\"${sysconfdir}\" -c ${srcdir}/main.c

config.@O@: config.c
        ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \
                -DVERSION=\"${VERSION}\" \
                -DNS_LOCALSTATEDIR=\"${localstatedir}\" \
                -c ${srcdir}/config.c

named@EXEEXT@: ${OBJS} ${UOBJS} ${DEPLIBS}
        ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
        ${OBJS} ${UOBJS} ${LIBS}

lwresd@EXEEXT@: named@EXEEXT@
        rm -f lwresd@EXEEXT@
        @LN@ named@EXEEXT@ lwresd@EXEEXT@

doc man:: ${MANOBJS}

docclean manclean maintainer-clean::
        rm -f ${MANOBJS}

clean distclean maintainer-clean::
        rm -f ${TARGETS} ${OBJS}

installdirs:
        $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${sbindir}
        $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man5
        $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man8

install:: named@EXEEXT@ lwresd@EXEEXT@ installdirs
        ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} named@EXEEXT@ ${DESTDIR}${sbindir}
        (cd ${DESTDIR}${sbindir}; rm -f lwresd@EXEEXT@; @LN@ named@EXEEXT@ lwresd@EXEEXT@)
        ${INSTALL_DATA} ${srcdir}/named.8 ${DESTDIR}${mandir}/man8
        ${INSTALL_DATA} ${srcdir}/lwresd.8 ${DESTDIR}${mandir}/man8
        ${INSTALL_DATA} ${srcdir}/named.conf.5 ${DESTDIR}${mandir}/man5



Jetzt noch eine Anmerkung. Bei "make install" wird alles nach /usr/local installiert, wer das nicht will muss beim nachfolgenden Aufruf von "./configure" den Parameter --prefix /pfad/fuer/bind angeben.
Nun wird in das Verzeichnis von bind 9 gewechselt und "./configure" aufgerufen. Wenn alles ohne Fehler läuft kann anschließend "make" und "make install" aufgerufen werden. Im Verzeichnis /verzeichnis-von-bind9/bin, gibt es nun verschieden Unterverzeichnisse, aus den Verzeichnissen check, dnssec, named sollten alle ausführbaren Dateinen nach /usr/sbin kopieren und aus den Verzeichnissen nsupdate, rndc, tests, dig alls ausführbaren Dateien nach /usr/bin kopieren werden.
Nach dem Linux Dreikampf kommt nun die Konfiguration.
Jetzt, die am Anfang gesicherten, original Dateien wieder an ihren ursprünglichen Platz kopieren. Jetzt muss nur noch das runlevel-Skript verändert werden. Hier das von mir veränderte Skript:
Code:
#! /bin/sh
# Copyright (c) 1995-2004 SUSE Linux AG, Nuernberg, Germany
# All rights reserved.
#
# Author: Lars Mueller <lmuelle@suse.de>
#
# /etc/init.d/named
#   and its symbolic link
# /usr/sbin/rcnamed
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
### BEGIN INIT INFO
# Provides:          named
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $network $remote_fs $syslog
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Domain Name System (DNS) server, named
# Description:       Berkeley Internet Name Domain (BIND) implementation of the
#       Domain Name System (DNS) server named.
### END INIT INFO

. /etc/rc.status
rc_reset

PATH="/sbin:/usr/sbin:/bin:/usr/bin"
NAMED_CONF="/etc/named.conf"
NAMED_BIN="/usr/sbin/named"
NAMED_CHECKCONF_BIN="/usr/sbin/named-checkconf"
NAMED_PID="/var/lib/named/named.pid"
RNDC_BIN="/usr/sbin/rndc"

if [ ! -x ${NAMED_BIN} ] ; then
        echo -n "Name server, ${NAMED_BIN} not installed! "
        # Tell the user this has skipped
        rc_status -s
        exit 5
fi



# Check the syntax of our 'named' configuration.
function namedCheckConf
{
        test "${namedConfChecked}" = "yes" && return
        if ! ${NAMED_CHECKCONF_BIN} ${NAMED_CHECKCONF_ARGS} >/dev/null; then
                checkAndCopyConfigFiles
                if ! ${NAMED_CHECKCONF_BIN} ${NAMED_CHECKCONF_ARGS}; then
                        rc_status -s
                        rc_failed 6
                        rc_exit
                fi
        fi
        export namedConfChecked="yes"
}

case "$1" in
    start)
        echo -n "Starting name server BIND "
        checkproc -p ${NAMED_PID} ${NAMED_BIN}
        case $? in
                0) echo -n "- Warning: named already running! " ;;
                1) echo -n "- Warning: ${NAMED_PID} exists! " ;;
        esac
        namedCheckConf
        startproc -p ${NAMED_PID} ${NAMED_BIN} ${NAMED_ARGS} -u named
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down name server BIND "
        checkproc -p ${NAMED_PID} ${NAMED_BIN} || echo -n "- Warning: named not running! "
        if ${RNDC_BIN} status &>/dev/null; then
                ${RNDC_BIN} stop
        else
                killproc -p ${NAMED_PID} -TERM ${NAMED_BIN}
        fi
        rc=$?

        # let's wait, because
        # 1) trying to start named before it has terminated can leave
        #    us without a running named...
        # 2) making sure that pending updates are written to zone files is good
        #    before trying to modify them externally
        first=0; timeout=30; startDate=$( date +%s)
        while checkproc -p ${NAMED_PID} ${NAMED_BIN}; do
                rc=$?
                if [ ${first} -eq 0 ]; then
                        echo -n >&2 " waiting for named to shut down "
                        rc_timer_on ${timeout} 63
                        first=1
                fi
                if [ $(( $( date +%s) - ${startDate} )) -gt $timeout ]; then
                        echo -en >&2 "\nNamed still appears to be running after $timeout seconds, sending SIGTERM"
                        killproc -p ${NAMED_PID} -TERM ${NAMED_BIN}
                        rc=$?
                        break
                fi
                sleep 2
        done
        test ${first} -ne 0 && rc_timer_off

        rc_failed ${rc}
        rc_status -v
        ;;
    try-restart)
        namedCheckConf
        $0 status >/dev/null && $0 restart
        rc_status
        ;;
    restart)
        namedCheckConf
        # Some of the scripts need a running named.
        $0 status >/dev/null
        $0 stop
        $0 start
        rc_status
        ;;
    force-reload|reload)
        echo -n "Reloading name server BIND "
        checkproc -p ${NAMED_PID} ${NAMED_BIN} || echo "- Warning: named not running! "
        rc=$?
        if [ ${rc} -ne 0 ]; then
                echo "- Warning: named not running! "
        else
                checkAndCopyConfigFiles
                namedCheckConf
                initializeNamed
                ${RNDC_BIN} status &>/dev/null
                if [ $? -ne 0 ]; then
                        killproc -p ${NAMED_PID} -HUP ${NAMED_BIN}
                else
                        ${RNDC_BIN} reload
                fi
                rc=$?
        fi
        ( exit ${rc} )
        rc_status -v
        ;;
    status)
        echo -n "Checking for nameserver BIND "
        ${RNDC_BIN} status &>/dev/null
        if [ $? -ne 0 ]; then
                checkproc -p ${NAMED_PID} ${NAMED_BIN}
        else
                echo ""
                ${RNDC_BIN} status && echo -en "${esc}[1A"
        fi
        rc_status -v
        ;;
    probe)
        rc=0
        for configfile in ${NAMED_CONF} /etc/{localtime,rndc.key} "${NAMED_CONF_META_INCLUDE_FILE}" ${NAMED_CONF_INCLUDE_FILES}; do
                if [ "${configfile}" -nt ${NAMED_PID} ]; then
                        rc=1
                        break
                fi
        done
        test ${rc} -ne 0 && echo reload
        ;;
    *)
        echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
        exit 1
        ;;
esac
rc_exit
jetzt noch die Links setzen:
ln -s /etc/init.d/named /usr/sbin/rcnamed
und im runlevel z.B. /etc/init.d/rc3.d
ln -s ../named S12named

Jetzt kann der erste Test durchgeführt werden, einfach mit "rcnamed start" den named starten. Ein Blick in die /var/log/messages sollte das laden der zonen zeigen. Wenn das so weit funktioniert, kann mit der Einrichtung des named für LDAP begonnen werden.
Viel Spaß damit.

Stefan
 
Oben