Debian in ein Active Directory integrieren

Quelle

Diese Dokumentation ist zu großen Teilen dem Artikel Debian Linux in eine Active Directory Domäne integrieren auf www.administrator.de entnommen. Eine sehr gute Anleitung, die ich hier nur für mich spezialisiert und erweitert habe.

Vorraussetzungen

Zeitsynchronisation (NTP)

Da das Kerberos Protokoll, das der Debian Server nutzen soll um mit dem Active Directory zu kommunizieren, stark von einer exakten Systemzeit abhängt, muss der Debian Server als NTP Client und der Windows Server als NTP Client als auch NTP Server konfiguriert sein, damit die Zeitsynchronität gewährleistet werden kann. Der Windows Server bezieht in unserem Szenario die Systemzeit von einem externen NTP Server, während der Debian Server als NTP Client die Systemzeit vom Windows Server bezieht.

DNS Namensauflösung (Forward Lookup und Reverse Lookup)

Ermitteln der verschiedenen Namen die der Domaincontroller trägt (Netbios, Workgroup, Domänen-Name, Kerberos-Realm) Man kann die NETBIOS- und Workgroup Namen auf dem Server2003 mit dem Befehl

nbtstat –n

ermitteln. Der Debian Server muss einen Reverse DNS Lookup auf den Domaincontroller machen können, also die IP Adresse in den DNS Namen auflösen können. Testen mit:

host 192.168.178.140
140.178.168.192.in-addr.arpa domain name pointer dc.firma.de

In aller Regel gilt z. B. bei einem Domaincontroller namens DC.FIRMA.DE

  • der NETBIOS Name ist „DC“
  • der Workgroup Name ist „FIRMA“
  • der DNS Name ist „DC.FIRMA.DE“
  • der Kerberos Realm ist „FIRMA.DE“
  • der Domänen-Name ist „FIRMA.DE“

Damit die AD-Integration des Linux Servers einwandfrei funktioniert ist es wichtig dass..

  • beide Server (Debian und DC) den Namen des anderen auflösen können
  • Forward-Lookup (nslookup debian.firma.de bzw. nslookup dc.firma.de) als auch
  • Reverse-Lookup (nslookup 192.168.178.140 bzw. nslookup 192.168.178.150)

einwandfrei auf beiden Servern funktionieren!

Debian IP Konfiguration

IP-Konfiguration: /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
     address 192.168.178.150
     netmask 255.255.255.0
     network 192.168.178.0
     broadcast 192.168.178.255
     gateway 192.168.178.1

DNS Konfiguration: /etc/resolv.conf

# search firma.de 
nameserver 192.168.178.140

Interface resetten (nur bei Konsolenverbindung machen!!!)

# ifdown eth0 
# ifup eth0

Berechtigungen im Active Directory

Man benötigt für die AD-Integration ein AD-Benutzerkonto mit entsprechenden Berechtigungen. Dies kann ein Domänenadministrator sein. Es kann jedoch auch ein spezielles Benutzerkonto erstellt werden das die Berechtigung bekommt Objekte im AD anzulegen. Das ist notwendig da der Debian Server selbst ein Computerkonto im Active Directory anlegen muss und auch Berechtigungen braucht um Anfragen an das AD stellen zu können.

Debian Server Konfiguration

Installation Samba, Winbind, NTP, ntpdate, Kerberos und SSH

Installation für Windows Server 2003 Domänen

# aptitude install libkrb53 krb5-{user,config} samba smbclient winbind ntpdate ntp ssh

Unter Ubuntu (10.04 LTS) heißt das Paket libkrb53

libkrb5-3

Installation für Windows Server 2008 Domänen

Für die Integration des Servers in einen W2k8 Domäne ist zum aktuellen Zeitpunkt (20.05.2010) die Samba-Version des aktuell stabilen Debian Lenny zu alt, da ab Windows Server 2008 nur noch Kerberos und nicht mehr NTLM als Authentifizierung genutzt werden kann. Diese wird aber in der Samba-Version (3.2.5) noch nicht unterstützt. Deswegen müssen für eine Integration in W2k8-Domänen die Pakete aus dem Backport Repository installiert werden.

Dazu die folgende Zeile in die Datei /etc/apt/sources.list einfügen:

deb http:// www.backports.org/debian lenny-backports main contrib non-free

Danach ein …

# aptitude update

… und mann kann mit dem angepassten Install-Befehl die neueren Versionen installieren:

# aptitude -t lenny-backports install libkrb53 krb5-{user,config} samba smbclient winbind ntpdate ntp ssh telnet

Die Konfiguration ist die gleiche, wie in 2003-Domänen.

Dienste beenden

/etc/init.d/samba stop
/etc/init.d/winbind stop
/etc/init.d/ntp stop

Unter Ubuntu (10.04 LTS) heißt der Samba-Dienst anders:

/etc/init.d/smbd stop

Die Warnmeldung bzgl. upstart kann ignoriert werden.

Backup der Linux Config Dateien

Es ist ratsam zunächst alle Config Dateien auf dem Debian System zu sichern bevor man anfängt sie zu editieren. Wenn man beispielsweise bei der PAM Konfiguration die Config zerschießt ist u. U. keine Anmeldung am System mehr möglich.

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
cp /etc/nsswitch.conf /etc/nsswitch.conf.bak
cp /etc/krb5.conf /etc/krb5.conf.bak
tar -czf /etc/pam.d.targ.gz /etc/pam.d
tar -czf /var/lib/samba.tar.gz /var/lib/samba

Konfiguration der Dienste

Kerberos

Hier eine detailierte Beschreibung möglicher Parameter der krb5.conf

Datei: /etc/krb5.conf

[libdefaults]
    Default_realm = FIRMA.DE
     #The following krb5.conf variables are only for MIT Kerberos.
    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true
[realms]
     FIRMA.DE = {
        kdc = dc.firma.de
        admin_server = dc.firma.de
    }
[domain_realm]
     .firma.de = FIRMA.DE
[login]
    krb4_convert = true
    krb4_get_tickets = false

NTP

In der Datei /etc/ntp.conf den Domänencontroller als Zeitserver eintragen:

server 192.168.178.140

ntpdate

ntpdate dc.firma.de

NTP Dienst starten

/etc/init.d/ntp start

Zeitsynchronisation testen

ntpq -p
dat

Bei Bedarf Zeitzone ändern

Ich verwende Europe/Berlin.

dpkg-reconfigure tzdata

Winbind

Datei: /etc/samba/smb.conf

Hier eine detailliertere Beschreibung des winbind Dienstes

[global]
     workgroup = FIRMA (Arbeitsgruppen Name; in aller Regel Domänen-Name ohne Suffix)
      realm = FIRMA.DE (Domänen-Name)
      netbios name = DEBIAN (NETBIOS-Name des Debian Servers; max. 15 Zeichen lang!)
      security = ADS (Active Directory soll die Authentisierung stellen)
      idmap uid = 10000-20000 (Range der UIDs für das Mapping von AD-RIDs auf UIDs)
      idmap gid = 10000-20000 (Range der GIDs für das Mapping von AD-RIDs auf GIDs)
      template shell = /bin/bash (Shell die der Benutzer nach der Anmeldung bekommt)
      winbind use default domain = yes (User muss kein Prefix bei der Anmeldung angeben)

Hintergrundwissen „idmap“:

Das Linux System hat auch eine lokale Benutzerverwaltung (/etc/passwd). Jeder Benutzer und jede Gruppe benötigt eine eindeutige Kennung.

Im Active Directory sind dies die „SIDs“. Die SID besteht aus dem Domänen-Identifikator und einer RID (Relative Identifier). Jedes Benutzerkonto und jede Gruppe hat eine SID, eine eindeutige Sicherheitskennung.

Da Active Directory und Linux verschiedene Techniken für die Zuordnung von User- und Gruppennamen zu SIDs bzw. UID/GIDs benutzen, ist eine der Aufgaben von winbind, ein Mapping von Active Directory SIDs zu Linux UIDs/GIDs durchzuführen. Diese Zuordnung (welche SID ist zu welcher UID/GID zugeordnet) wird auf dem Linux Server in einer lokalen Datenbank unter /var/lib/samba/winbindd_idmap.tib gespeichert.

Durch den Eintrag „idmap uid = 10000-20000“ wird definiert, dass der Bereich von UID 10000 bis 20000 nicht von der internen Benutzerverwaltung verwendet wird, also für das Mapping von Active Directory SIDs zu Linux UIDs bzw. GIDs verwendet werden soll.

Testen der winbind Config mit

testparm

NSSWITCH

Datei: /etc/nsswitch.conf

Hier eine detailliertere Beschreibung der nsswitch Funktionalität

# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd:        compat winbind
group:         compat winbind
shadow:        compat
hosts:         files dns
networks:      files
protocols:     db files
services:      db files
ethers:        db files
rpc:           db files
netgroup:      nis

PAM

Datei: /etc/pam.d/common-auth

Hier eine detailliertere Beschreibung der pam.d Konfigurationsdateien

# /etc/pam.d/common-auth - authentication settings common to all services
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass

Datei: /etc/pam.d/common-session

Damit bei der ersten Anmeldung am Rechner ein lokales Home-Verzeichnis angelegt wird, kann als erster Eintrag die Zeile

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

eingetragen werden.

Direkt dahinter sollte noch

session sufficient pam_winbind.so

stehen, damit der gdm bereits beim ersten Anmeldeversuch beim AD nachfragt.

Die vollständige Datei sieht dann bei mir so aus:

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session sufficient pam_winbind.so
session required pam_unix.so

Debian Server in die Domäne integrieren

Checkliste

  • host 192.168.178.140 (Funktioniert der Reverse Lookup?)
  • nslookup dc.firma.de (Funktioniert die DNS Namensauflösung?)
  • ping dc.firma.de (Ist der Domaincontroller erreichbar?)
  • telnet dc.firma.de 445 (Port TCP445 erreichbar?)
  • telnet dc.firma.de 139 (Port TCP139 erreichbar?)
  • ntpq –p (Läuft die Zeitsynchronisation?)
  • dpkg-reconfigure tzdata (Stimmt die Zeitzone?)
  • ps –ef | grep mbd (Testen ob der Dienst läuft – wenn ja, stoppen!)
  • ps –ef | grep winbind (Testen ob der Dienst läuft – wenn ja, stoppen!)
  • /etc/init.d/winbind stop (winbindd stoppen!)
  • /etc/init.d/samba stop (smbd / nmbd stoppen!)
  • rm –rf /var/lib/samba/* (eventuell vorhandene winbind cache DB löschen!)

net join

net ads join –U Administrator (Das ist der Domänen-Administrator oder ein Benutzerkonto das berechtigt ist Objekte im AD anzulegen)

Dienste starten

/etc/init.d/samba start 
/etc/init.d/winbind start

Unter Ubuntu (10.04 LTS) heißt der Samba-Dienst anders:

/etc/init.d/smbd start

Die Warnmeldung bzgl. upstart kann ignoriert werden.

Kontrollieren ob SMBD, NMBD und WINBIND Dienste gestartet sind:

ps –ef | grep mbd 
ps –ef | grep winbind

Funktionalität testen

wbinfo –t (zeigt an ob das RPC trust secret passt)
wbinfo -a Administrator%Passwort (zeigt an ob sich AD-User Administrator über winbind authentisieren kann)
wbinfo –u (zeigt die Active Directory Benutzer an)
wbinfo –g (zeigt die Active Directory Gruppen an)
ssh Administrator@localhost (testen ob man sich lokal per SSH als Administrator (oder andere AD-Benutzer) anmelden kann) 
init 6 (Debian Server neu starten und schaun ob die Dienste beim Neustart sauber starten)
update-rc.d samba defaults (Dienste, die eventuell nicht automatisch starten, zu den Autostart Services hinzufügen)
update-rc.d ntp defaults
update-rc.d winbind defaults

Fehlersuche

Was tun wenn es nicht funktioniert, oder wenn es „in der Regel“ funktioniert und plötzlich nicht mehr funktioniert?

Es wird dann Zeit für das wofür man eigentlich bezahlt wird – Fehlersuche und Fehlerbeseitigung.

Teste die grundsätzliche Erreichbarkeit auf Netz- und Portebene

  • ping IP-Adresse (beidseitig)
  • telnet 192.168.178.140 445
  • telnet 192.168.178.140 139

Teste die DNS Namensauflösung auf beiden Servern

Debian Server:
  • host 192.168.178.140 (funktioniert Reverse-Lookup?)
  • host dc.firma.de (funktioniert Forward-Lookup?)
  • ping dc.firma.de (funktioniert Layer3 Konnektivität?)
Windows Server:
  • nslookup 192.168.178.150
  • nslookup debian.firma.de
  • ping debian.firma.de

Logfiles checken

Debian Server:
  • /var/log/samba/log.winbindd
  • /var/log/messages
Windows Server:
  • Ereignisanzeige

Active Directory checken

  • Ist das Computerkonto des Debian Servers deaktiviert? Wenn ja – aktivieren.
  • Ist das Computerkonto des Debian Servers gelöscht? Wenn ja – neu anlegen mit „net ads join -U Administrator“ auf dem Debian-Server. Computerkonto nicht manuell auf dem DC anlegen!

Wiederherstellung der Funktionalität

Siehe oben in der Anleitung ab Backup der Linux Config Dateien.

Informationen aus dem AD anzeigen

Benutzerinformationen zu einem Benutzer

wbinfo -i <benutzername>

AD-Gruppen eines Benutzers abfragen

for GID in $(wbinfo -r <benutzername>); do echo Windows-Gruppe: $(wbinfo -s $(wbinfo -G $GID)), Unix-GID: $GID ; done

Namensauflösung

Bei mir ist es bei mehreren Installationen (einmal Debian Lenny und einmal Ubuntu 10.04) aufgetreten, dass ich bestimmte Hosts aus internen Netzwerken nicht per Ping oder http erreichen konnte. Die Namensauflösung per nslookup oder dig war aber in Ordnung.

Durch einen Interneteintrag kam ich auf die Lösung. In der Konfigurationsdatei für den „Name Service Switch“ /etc/nsswitch.conf war die Auflösung per DNS für Hostnamen erst nach einer Abbruchbedingung angegeben:

Server:~# cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
 
passwd: compat
group: compat
shadow: compat
 
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
networks: files
 
protocols: db files
services: db files
ethers: db files
rpc: db files
 
netgroup: nis

Kaum hatte ich die entsprechende Zeile abgeändert, funktionierte es tadellos.

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Netzwerkkarte(n) konfigurieren

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
 
# The secondary network interface
auto eth1
iface eth1 inet static
    address 192.168.0.10
    netmask 255.255.255.0
    gateway 192.168.0.254
    broadcast 192.168.0.255
    network 192.168.0.0

apt-get / aptitude

Steuerung über die APT-Konfiguration

Wie der lokale Paket-Manager funktioniert kann man nicht nur per Script und Cronjobs sondern auch über die umfangreiche APT-Konfigurations-Syntax steuern. Die wichtigsten Parameter sind direkt im standardmäßig angelegten Cronjob „/etc/cron.daily/apt“ beschrieben.

Konfiguration eines Apt-Proxys

Dazu einfach unter

/etc/apt/apt.conf.d/

eine Konfigurations-Datei anlegen:

vi /etc/apt/apt.conf.d/01proxy

und in diese den folgenden Inhalt schreiben:

Acquire::http::Proxy "http://[[user][:pass]@]host[:port]/";

Hier z.B. die Konfiguration wenn lokal der apt-cacher installiert wurde:

Acquire::http::Proxy "http://localhost:3128/";

Automatische Installation von Sicherheits-Updates

Dafür ist erst einmal das zusätzliche Paket „unattended-upgrades“ notwendig.

aptitude install unattended-upgrades

Mit der Installation wird die notwendige Konfigurationsdatei „/etc/apt/apt.conf.d/50unattended-upgrades“ (beschrieben für Debian)

// Automatically upgrade packages from these (origin, archive) pairs
Unattended-Upgrade::Allowed-Origins {
 "${distro_id} stable";
 "${distro_id} ${distro_codename}-security";
// "${distro_id} ${distro_codename}-updates";
// "${distro_id} ${distro_codename}-proposed-updates";
};

// List of packages to not update
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
 "^linux-image.*";
};

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. The package 'mailx'
// must be installed or anything that provides /usr/bin/mail.
//Unattended-Upgrade::Mail "root@localhost";

// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
//Unattended-Upgrade::Remove-Unused-Dependencies "false";

// Automatically reboot *WITHOUT CONFIRMATION* if a
// the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";

// Use apt bandwidth limit feature, this example limits the download
// speed to 70kb/sec
//Acquire::http::Dl-Limit "70";

installiert. Hier wird bestimmt, welche Pakete automatisch installiert bzw. von der automatischen Installation ausgenommen werden. Man kann sich auch per Email bei Fehlern benachrichtigen lassen.

Damit sind die automatischen Updates aber noch nicht aktiv!

Dafür müssen erst die folgenden drei Zeilen

APT::Periodic::Enable "1";
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

in die Datei „/etc/apt/apt.conf.d/10periodic“ geschrieben/angehängt werden. Durch diese zwei Zeilen werden die Paket-Listen einmal täglich aktualisiert und die Pakete, die in „/etc/apt/apt.conf.d/50unattended-upgrades“ konfiguriert sind, installiert.

Für die Benamung der Datei habe ich bisher noch keine Beschreibung gefunden. Da diese für die Funktion aber ohne Bedeutung ist, habe ich mich nach dem Eintrag im Ubuntu-Wiki gerichtet, in dem ich diese Konfiguration auch gefunden habe.

Die Ausführung erfolgt dann durch das vorhandene APT-Script „/etc/cron.daily/apt“, das täglich ausgeführt wird.

Update-Download

Wer möchte kann sich die anstehenden Updates ja bereits downloaden. Dann braucht es bei der Installation nicht so lange. Dazu muss man einfach eine Zeile der umfangreichen APT-Konfiguration aktivieren, in dem man sie in eine Datei unterhalb von „/etc/apt/apt.conf.d/“ schreibt.

Hat man es z.B. wie oben bei den automatischen Updates eingerichtet, kann man die folgende Zeile in die Datei „/etc/apt/apt.conf.d/10periodic“ eintragen:

APT::Periodic::Download-Upgradeable-Packages "1";

Damit werden die anstehenden Update-Dateien einmal täglich heruntergeladen, aber nicht installiert.

Cache aufräumen

Damit das standardmäßig vorhandene Script „/etc/cron.daily/apt“ auch das Aufräumen übernimmt, braucht man nur eine Zeile aktivieren.

APT::Periodic::AutocleanInterval "7";

Damit wird „apt-get autoclean“ alle 7 Tage ausgeführt.

Logs rotieren

Ich richte immer noch eine erweiterte Konfiguration für logrotate ein.

Fehlerbehebung

Wer seine anstehenden Linux-Updates per Nagios/Icinga überwacht, kann nach dem manuellen Neuanlegen der o.g. Dateien auf folgenden Fehler treffen:

'/usr/bin/apt-get -o 'Debug::NoLocking=true' -s -qq upgrade' exited with non-zero status.
APT WARNING: 0 packages available for upgrade (0 critical updates). warnings detected, errors detected. run with -v for information

Beim Testen des angezeigten Befehls treten wie immer keine Fehler auf. Man ist ja root. Also sollte der Befehl als der Benutzer ausgeführt werden, unter dem die Monitoring-Software läuft:

su <monitoringbenutzer> -s /bin/bash

Der Parameter -s für die Shell ist optional, aber bei Systembenutzern ohne Shell notwendig. Danach sieht man dann erst den eigentlichen Fehler:

/usr/bin/apt-get -o 'Debug::NoLocking=true' -s -qq upgrade
E: Konfigurationsdatei /etc/apt/apt.conf.d/10periodic wird geöffnet - ifstream::ifstream (13: Keine Berechtigung)

Einfach Leseberechtigungen für „Others“ auf die gemeldete Datei setzen und schon klappt’s mit dem Nachbarn ;-). Bei mir war die Ursache die restriktiv gesetzte UMASK im Profil.

Universalwerkzeug sed

Einfaches Ersetzen in Dateien

Manchmal will einfach nur einen Wert an allen Stellen in einer Datei ersetzen:

sed -i 's/Alter Wert/Neuer Wert/g' /PfadZurDatei/Dateiname

Ersetzen von Text an gefundenen Stellen.

Manchmal muss es aber etwas aufwändiger sein. Wenn man z.B. einen String in einem Text sucht und in der gefundenen Zeile einen zweiten String ersetzen will. Hier am Beispiel einer NTP-Konfiguraton:

sed -i '/^server\ [0-3]\.debian\.pool\.ntp\.org/ s/server/#server/g' /etc/ntp.conf

Hier wird in der NTP-Konfiguration nach den Server-Einträgen gesucht (0.debian.pool.ntp.org, 1.debian.pool.ntp.org,2.debian.pool.ntp.org und 3.debian.pool.ntp.org). Diese Zeilen werden auskommentiert, um z.B. eigene NTP-Server für die Kerberos-Authentifizierung zu konfigurieren.

Wer öfter mit vim arbeitet, dem wird die Suchen-/Ersetzen-Formation bekannt vorkommen. Weitere Such-Ersetz-Möglichkeiten kann man hier nachlesen.

Sed – Manipulation von Textdateien

Sed ist ein Streaming Editor. Wer genaueres dazu wissen will, kann das auf Wikipedia nachlesen. Ich schreibe mir hier Zusammenstellungen auf, die mir merkenswert erscheinen.

Ersetzen in Dateien

Manchmal will einfach nur einen Wert an allen Stellen in einer Datei ersetzen:

sed -i 's/Alter Wert/Neuer Wert/g' /PfadZurDatei/Dateiname

Wer öfter mit vim arbeitet, dem wird die Suchen-/Ersetzen-Formation bekannt vorkommen. Weite Such-Ersetz-Möglichkeiten kann man hier nachlesen.

Will man z.B. etwas Anderes ersetzen, als das was man sucht, kann man das auch aufteilen:

sed '/Suchbegriff/ s/Alter Wert/Neuer Wert/' /PfadZurDatei/Dateiname

So werden in dem folgenden Beispiel alle Zeilen der NTP-Konfiguration auskommentiert, die auf den Debian NTP-Pool verweisen:

sed -i '/^server [0-3].debian.pool.ntp.org/ s/server/#server/g' /etc/ntp.conf

DNS-Forwarder pro Zone einrichten

bind9 ist ja nach der Standard-Installation ein Proxy-DNS, der sich sein Weiterleitungsserver aus der/etc/resolv.conf lädt. Setzt man bind aber auf einem Gateway ein, so kann es ja vorkommen, dass verschiedene Zonen von verschiedenen Servern abgefragt werden sollen. Nichts leichter als das.

Zuerst muss eine Zonenkonfiguration angelegt werden. Je nach Anzahl der Zonen kann man diese in eine Datei schreiben oder ein Zone pro Datei. Da der Rahmen bei mir meist überschaubar ist, schreibe ich eine Datei pro Zone und kann diese dann bei Bedarf einzeln aktivieren und deaktivieren.

// Weiterleitung fuer domain1.tld
zone "domain1.tld" in {
type forward;
forwarders { 192.168.178.1; };
};
// Weiterleitung fuer domain2.tld
zone "domain2.tld" in {
type forward;
forwarders { 10.50.100.1; 10.50.100.2; 10.70.70.3; };
};

 

Wie zu sehen ist, kann man auch mehrere Weiterleitungsserver eintragen. Alle durch ein Semikolon getrennt.

Bis jetzt verschwenden die Dateien nur Platz auf der Festplatte, weil bind sie nicht kennt. Sie müssen also in der Hauptkonfiguration eingetragen werden. Da bei der Installation bereits eine lokale Version der named.conf angelegt wurde, sollte diese dafür genutzt werden.

Datei: /etc/bind/named.conf.local

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
include "/etc/bind/zones.domain1.tld";
include "/etc/bind/zones.domain2.tld";

// Vertrauenswürde Clients (Eigenes LAN)
...

Zum Schluss noch den bind neu starten, damit die Konfigurationen eingelesen werden.

Ab jetzt werden die DNS-Einträge für die explizit konfigurierten Domains bei den expliziten DNS-Servern abgefragt. Alle anderen werden wie bisher bei den Servern aus der /etc/resolv.conf abgefragt.

infoJetzt kann man den eigenen Server (127.0.0.1) in der /etc/resolv.conf an die erste Stelle schreiben, damit die expliziten Konfigurationen mit benutzt werden.

warnungWenn, wie oben angedeutet Acess Listen für den Zugriff definiert sind, muss man prüfen, ob der localhost hier bisher mit bedacht worden ist.