Archiv/Howto/Samba4-Server als Active-Directory Domain-Controller

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Achtung!

Die Verwendung dieses Howto geschieht wie üblich auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.

Hinweis:

Diese Howto-Anleitung wurde zuletzt von luftpumpe am 28.03.2015 unter Xubuntu 14.04 erfolgreich getestet.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Starten von Programmen

  3. Ein Terminal öffnen

  4. Root-Rechte

  5. Samba (Übersichtsartikel)

  6. Samba Server

  7. Kerberos

  8. Dnsmasq

Inhaltsverzeichnis
  1. Grundlagen
  2. Voraussetzungen
    1. Daten des Testkonfiguration
  3. Administrationstools
    1. samba-tool
    2. RSAT für Windows-Client
  4. Installation des 1. DCs
    1. Feste IP-Adresse einstellen
    2. NTP-Dienst einrichten
    3. Anpassung in der fstab
    4. Samba-Version überprüfen
    5. Samba installieren
    6. DNS-Service konfigurieren
    7. Samba-Server provisionieren
    8. Kerberos installieren
  5. Funktionstests des Servers
    1. Netzwerkports überprüfen
    2. Samba-Konfiguration überprüfen
    3. Alle Shares auflisten
    4. Authentifizierung testen
    5. DNS testen
    6. Kerberos testen
  6. Installation des 2. DCs
    1. Vorarbeiten und Tests
    2. Samba-Server provisionieren
    3. Test der Samba-Konfiguration
    4. Anpassen der DNS-Einstellung
    5. DNS-Einträge überprüfen
    6. Directory Replikation überprüfen
    7. manuelle Replikationstests
    8. SYSVOL-Replikation

Grundlagen

Samba_Server/samba-logo.png

Ab Samba Version 4.x kann man Samba im Microsoft-kompatiblen Modus "Active-Directory Domain-Controller" (kurz AD DC) laufen lassen. Dieser Artikel beschreibt die Grundinstallation von zwei Samba-Servern als DC für eine Windows Domäne. Zwei Server, um die Ausfallsicherheit der Domäne zu verbessern, und weil die Installation des zweiten (und weiterer) DCs anders verläuft als beim ersten DC. Natürlich funktioniert der Betrieb auch nur mit einem DC.

Die Installation basiert auf einem frisch installierten Xubuntu 14.04.02 LTS, benutzt nur offizielle Pakete aus dem Ubuntu-Repo und orientiert sich weitgehend am Artikel im offiziellen Samba-Wiki. Sie berücksichtigt aber die Besonderheiten bei Ubuntu.

Offizielles Samba-HowTo - https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO 🇬🇧

Sämtliche Eingaben setzen voraus, dass man derzeit im root-Modus ist. ("sudo -s")

Hinweis:

WICHTIGER HINWEIS: Dieser Artikel ist nur für den erfahrenen Ubuntu-Benutzer geeignet, der weiß was ein Domaincontroller ist.

Voraussetzungen

Daten des Testkonfiguration

technische Parameter auf die in dieser Beispielinstallation Bezug genommen wird:

Name der Domäne: test.dom
NETBIOS-Name der Domäne: TEST
Hostname: dc1
IP-Adresse: 192.168.1.199
Gateway: 192.168.1.1 (ist auch gleichzeitig DNS-Server fürs Internet)
Name des ersten Domain-Controllers: DC1
Samba-Admin: administrator

Hostname: dc2
IP-Adresse: 192.168.1.198
Gateway: 192.168.1.1 (ist auch gleichzeitig DNS-Server fürs Internet)
Name des ersten Domain-Controllers: DC2
Samba-Admin: administrator

Administrationstools

samba-tool

Endlich gibt´s ein zentrales Boardmittel auf Kommandozeile um alle Funktionen eines Samba-Servers im Active-Directory-Modus zu administrieren.

Es wird bei der Installation von Samba mit installiert.

samba-tool --help

RSAT für Windows-Client

(falls vorhanden, und wenn von dort administriert werden soll)

Installiere RSAT (Remote Server Administration Tool) auf einem Windows-Client, siehe https://wiki.samba.org/index.php/Installing_RSAT_on_Windows_for_AD_Management

Für die Administration sollte der Windows-Client in die spätere Samba-Domäne als Mitglied aufgenommen werden, und auch deren DNS-Server benutzen. HINWEIS: Dieser Artikel erklärt nicht die Administration von einem Windows-Client aus.

Installation des 1. DCs

Samba kann direkt aus den Quellen installiert werden. Es müssen keine fremden Quellen angezapft werden, es muss nichts compiliert werden.

Feste IP-Adresse einstellen

Es gibt wenig Sinn einen Domain-Controller mit einer dynamischen IP-Adresse zu betreiben. Deswegen muss man der Maschine erst eine feste manuelle Netzwerkkonfiguration geben. Dies kann über die graphische Oberfläche in den Netzwerkverbindungen angepasst werden. In unserem Beispiel sind es folgende Angaben:

Methode: manuell
IPV4-Adresse: 192.168.1.199 
Netzmaske: 255.255.255.0
Gateway: 192.168.1.1
DNS-Server: 192.168.1.1  (ist nur temporär, wird später noch geändert)
Suchdomänen: bleibt erst mal leer

NTP-Dienst einrichten

Damit eine Domäne korrekt funktioniert, speziell Kerberos, wird auf allen Servern und Clients die gleiche "Zeit" benötigt. Deswegen wird mit der Installation eines NTP-Server auf dem späteren Domaincontroller begonnen.

siehe auch ntpd - https://wiki.samba.org/index.php/Time_Synchronisation

Installation von ntpd:

apt-get install ntp

(er wird dann auch automatisch gestartet)

ntp-Daemon testen: (jetzt muss der UDP-Port 123 offen sein; dies kann per "netstat -tulpn" gecheckt werden. Dort müssen Zeilen mit dem Text ":123" auftauchen.)

Eingabe zum überprüfen der ntp-Funktion:

ntpdate -q 127.0.0.1

korrekte Beispiel-Ausgabe:

server 127.0.0.1, stratum 3, offset 2.154217, delay 0.03343

Falls Probleme auftauchen, dann zur ersten Analyse folgendes mit einem öffentlichen NTP-Server testen:

ntpdate -u de.pool.ntp.org
ntpdate -u 0.ubuntu.pool.ntp.org

Anpassung in der fstab

Parameter für die Root-Partition in der Datei /etc/fstab anpassen damit ACLs funktionieren:

nano /etc/fstab

hier eine Beispiel für die erforderlichen Parameter, Text hinter "ext4":

UUID=951801e7-c4bc-464b-9071-6f5b6d065c92   /  ext4    user_xattr,acl,errors=remount-ro,barrier=1     0       1

Samba-Version überprüfen

Falls Samba schon installiert ist, kann mit folgenden Befehlen die Version überprüft werden:

samba -V
smbclient -V

Samba installieren

(falls es noch fehlt)

apt-get install samba smbclient

Hinweis: Der Samba Server wird direkt nach der Installation direkt im Standalone-Modus gestartet. Deswegen den Samba Server erst mal wieder beenden mit folgenden Befehlen:

service smbd stop
service nmbd stop
service samba status

Und dann die vorhandene smb.conf sichern oder löschen:

mv /etc/samba/smb.conf /etc/samba/smb.conf.vorher

HINWEIS: Wenn man das nicht macht, scheitert später die korrekte Einrichtung des Domain-Controllers.

DNS-Service konfigurieren

Überprüfen ob Port 53 (DNS) schon belegt ist, und bei frei räumen.

netstat -tlpn

Unter anderem taucht dort folgende Zeile auf:

tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1241/dnsmasq

Daran sieht man, dass TCP-Port 53 durch die Anwendung "dnsmasq" belegt ist. Dies verhindert, dass der später intallierte Samba-Server korrekt starten kann, weil er auch den Port 53 belegen will.

Lösung: Ubuntu nutzt den "network-manager" für seine Netzwerkverbindungen. Dieser nutzt wiederrum "dnsmasq" (welcher Port 53 belegt) für die DNS-Namensauflösung des Computers.

dnsmasq kann man in der Datei "/etc/NetworkManager/NetworkManager.conf" deaktivieren:

nano /etc/NetworkManager/NetworkManager.conf

deswegen in der Datei folgende Zeile auskommentieren:

# dns=dnsmasq 

Und danach den network manager neu starten und den alten dnsmasq killen, oder komplettes System neu booten:

/etc/init.d/networking restart
killall dnsmasq

HINWEIS: Wenn man diesen Arbeitsschritt vergisst, dann kommt beim Start von Sambe folgender Fehlertext. (gut zu sehen wenn man Samba im interaktiven Modus gestartet hat "samba -i")

Failed to bind to 0.0.0.0:53 - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED

WICHTIG: Sobald man dnsmasq deaktiviert hat, kann der PC keine DNS-Namen mehr auflösen, wenn man vergessen hat in den Netzwerkeinstellungen manuell einen DNS-Server (z.b. die IP seines Routers) einzurichten.

Samba-Server provisionieren

Jetzt kann mit der sogenannten Provisionierung des Domaincontrollers begonnen werden. Dies ist die Erstellung der Active-Directory Domäne. Bei Windows-Servern bekannt als "dcpromo".

samba-tool domain provision --use-rfc2307 --interactive --use-ntvfs

Hinweise:

Folgende Parameter werden dann im interaktiven Dialog abgefragt:

Erfolgreiche Beispiel-Ausgabe:

Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=test,DC=dom
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=test,DC=dom
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              VM1
NetBIOS Domain:        TEST
DNS Domain:            test.dom
DOMAIN SID:            S-1-5-21-4250222487-2521097371-810615148

Tipp: Wenn irgendwas schief geht, dann kann man die /etc/samba/smb.conf löschen, und neu versuchen:

rm /etc/samba/smb.conf

Samba-Server versuchen interaktiv zu starten: (kann man mit Strg-c abbrechen)

samba -i

Dies sollte mit keiner besonderen Fehlermeldung abbrechen. Wenn die Routine nicht abbricht, ist dies ein gutes Zeichen. Dann manuell abbrechen.

Kerberos installieren

dazu fehlt noch ein Instalations-Paket, nachinstallieren:

apt-get install krb5-user

Erforderliche Parameter-Eingaben:

Kerberos-Realm: TEST.DOM
Kerberos-Server für Ihren Realm: localhost
Administrations-Server für IhrenKerberos-Realm: localhost

HINWEIS: Jetzt ist ein guter Zeitpunkt um den Server neu zu booten!

Funktionstests des Servers

Netzwerkports überprüfen

Wenn Samba korrekt läuft, sollten etliche zusätzliche Netzwerkports belegt sein. "netstat -tlpen" sollte folgende Ausgabe bringen (im Beispiel ist IPV6 deaktiviert):

root@DC1:~# netstat -tlpen
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 0.0.0.0:3268            0.0.0.0:*               LISTEN      0          28962       5394/samba      
tcp        0      0 0.0.0.0:3269            0.0.0.0:*               LISTEN      0          28963       5394/samba      
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      0          28960       5394/samba      
tcp        0      0 0.0.0.0:135             0.0.0.0:*               LISTEN      0          28932       5391/samba      
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      0          28936       5403/samba      
tcp        0      0 0.0.0.0:464             0.0.0.0:*               LISTEN      0          28919       5396/samba      
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      0          28947       5402/samba      
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      0          8369        463/cupsd       
tcp        0      0 0.0.0.0:88              0.0.0.0:*               LISTEN      0          28917       5396/samba      
tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      0          28961       5394/samba      
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      0          28935       5403/samba      
tcp        0      0 0.0.0.0:1024            0.0.0.0:*               LISTEN      0          28926       5391/samba      

Aufgaben der Netzwerk-Ports, siehe auch https://wiki.samba.org/index.php/Samba_port_usage

Samba-Konfiguration überprüfen

Ausgabe dieses Befehls überprüfen (ersetzt das klassische "testparm", bitte dieses nicht mehr benutzen)

samba-tool testparm

Beispielausgabe:

Press enter to see a dump of your service definitions  (Return drücken)

# Global parameters
[global]
	workgroup = TEST
	realm = TEST.DOM
	netbios name = DC1
	server role = active directory domain controller
	dns forwarder = 192.168.1.1
	server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, dns, smb
	dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvc
	idmap_ldb:use rfc2307 = yes

[netlogon]
	path = /var/lib/samba/sysvol/test.dom/scripts
	read only = No

[sysvol]
	path = /var/lib/samba/sysvol
	read only = No

WICHTIG: Die Zeile "dns forwarder" muss vorhanden sein, sonst scheitert die Namensauflösung für Internet-Domains, und man kann keine Pakete mehr installieren!

Alle Shares auflisten

smbclient -L localhost -U%

Jetzt sollten die drei Shares netlogon, sysvol und IPC$ angezeigt werden.

Authentifizierung testen

smbclient //localhost/netlogon -UAdministrator -c 'ls'

Hier muss man das Passwort des Domänen-Administrators eingeben. Die Ausgabe sollte keine Fehlermeldung enthalten.

DNS testen

Dazu muss man jetzt zuvor die DNS-Einstellung des Network-Managers in der graphischen Oberfläche des Rechners geändert werden. Passende Netzwerkschnittstelle auswählen. Dort IPv4-Einstellungen, Feld DNS-Server, und folgendes eintragen:

nameserver 127.0.0.1

Wenn der DNS-Server richtig eingestellt ist, muss ein Ping auf den REALM funktionieren:

ping test.dom

Eingabe:

host -t SRV _ldap._tcp.test.dom

Ausgabe:

_ldap._tcp.test.dom has SRV record 0 100 389 dc1.test.dom.

Eingabe:

host -t SRV _kerberos._udp.test.dom

Ausgabe:

_kerberos._udp.test.dom has SRV record 0 100 88 dc1.test.dom.

Eingabe:

host -t A test.dom

Ausgabe:

test.dom has address 192.168.1.199

Eingabe:

host -t A dc1.test.dom

Ausgabe:

dc1.test.dom has address 192.168.1.199

Falls hier Fehler kommen, dann bitte das systemlog überprüfen.

Kerberos testen

Eingabe:

kinit administrator

erfolgreiche Ausgabe:

Password for administrator@TEST.DOM: 
Warning: Your password will expire in 41 days on Fr 24 Apr 2015 20:31:30 CEST

Eingabe um eigene Kerberos-Tickets zu überprüfen:

klist

erfolgreiche Ausgabe:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TEST.DOM

Valid starting       Expires              Service principal
14.03.2015 09:23:12  14.03.2015 19:23:12  krbtgt/TEST.DOM@TEST.DOM
	renew until 15.03.2015 09:23:08

Wenn all diese Tests erfolgreich ausgegangen sind, dann läuft der erste Domaincontroller korrekt.

Installation des 2. DCs

Die Installation des zweiten DCs geht genauso wie beim ersten DC. Bis zum Punkt der Provisionierung des Samba-Servers - ab da wird anders, dies beschreibt dieser Abschnitt.

Vorarbeiten und Tests

WICHTIG: Für diesen Schritt muss der erste Domaincontroller laufen und netzwerktechnisch erreichbar sein.

DNS-Server anpassen:

Der zweite DC muss die Domäne namenstechnisch auflösen können. Deswegen muss zuerst der DNS-Server über die graphische Oberfläche via Network-Manager angepasst werden. Passende Netzwerkschnittstelle auswählen. Dort IPv4-Einstellungen, Feld DNS-Server, und folgendes eintragen: Man muss im Feld DNS-Server die DNS-IP-Adresse des ersten Samba-Servers eintragen. In unserem Beispiel:

192.168.1.199

DNS-Auflösung testen:

Die folgenden zwei Befehle dürfen keine Fehler ausgeben:

ping test.dom
ping dc1.test.dom
nslookup test.dom <ipadresse des ersten servers>

Samba-Server provisionieren

siehe auch https://wiki.samba.org/index.php/Samba4/HOWTO/Join_a_domain_as_a_DC

samba-tool domain join test.dom DC --username=administrator --use-ntvfs

Beispiel-Ausgabe:

Finding a writeable DC for domain 'test.dom'
Found DC dc1.test.dom
Password for [TEST\administrator]:   (Bemerkung: hier muss Passwort vom ersten DC eingetragen werden)
workgroup is TEST
realm is test.dom
checking sAMAccountName
Adding CN=DC2,OU=Domain Controllers,DC=test,DC=dom
Adding CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=dom
Adding CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=dom
Adding SPNs to CN=DC2,OU=Domain Controllers,DC=test,DC=dom
Setting account password for DC2$
Enabling account
Calling bare provision
No IPv6 address will be assigned
Provision OK for domain DN DC=test,DC=dom
Starting replication
Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[402/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[804/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[1206/1550] linked_values[0/0]
Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[1550/1550] linked_values[0/0]
Analyze and apply schema objects
Partition[CN=Configuration,DC=test,DC=dom] objects[402/1620] linked_values[0/0]
Partition[CN=Configuration,DC=test,DC=dom] objects[804/1620] linked_values[0/0]
Partition[CN=Configuration,DC=test,DC=dom] objects[1206/1620] linked_values[0/0]
Partition[CN=Configuration,DC=test,DC=dom] objects[1608/1620] linked_values[0/0]
Partition[CN=Configuration,DC=test,DC=dom] objects[1620/1620] linked_values[28/0]
Replicating critical objects from the base DN of the domain
Partition[DC=test,DC=dom] objects[97/97] linked_values[23/0]
Partition[DC=test,DC=dom] objects[365/268] linked_values[23/0]
Done with always replicated NC (base, config, schema)
Replicating DC=DomainDnsZones,DC=test,DC=dom
Partition[DC=DomainDnsZones,DC=test,DC=dom] objects[41/41] linked_values[0/0]
Replicating DC=ForestDnsZones,DC=test,DC=dom
Partition[DC=ForestDnsZones,DC=test,DC=dom] objects[18/18] linked_values[0/0]
Partition[DC=ForestDnsZones,DC=test,DC=dom] objects[36/18] linked_values[0/0]
Committing SAM database
Sending DsReplicateUpdateRefs for all the replicated partitions
Setting isSynchronized and dsServiceName
Setting up secrets database
Joined domain TEST (SID S-1-5-21-2617678509-903244012-2886946009) as a DC

Damit ist dann der zweite DC grundsätzlich der Domäne beigetreten.

Test der Samba-Konfiguration

Wenn die Provisionierung korrekt verlaufen ist, sollte man die Konfig testen. Im Prinzip stehen in der "/etc/samba/smb.conf" die gleichen Inhalte wie im ersten DC drin, bis auf die Zeile "netbios name" des Servers.

Eingabe zum überprüfen:

samba-tool testparm

WICHTIG: Vergleiche die Ausgabe beider DCs, oder vergleiche die Inhalte der jeweiligen "/etc/samba/smb.conf". Wenn hier was fehlt, dann läuft der zweite DC nicht korrekt!!!

Anpassen der DNS-Einstellung

Die beiden Domaincontroller sollten sich gegenseitig als primären DNS-Server eingetragen haben, und als sekundären Server sich selbst. Dazu muss man jetzt die DNS-Einstellung des Network-Managers in der graphischen Oberfläche beider Server ändern. Passende Netzwerkschnittstelle auswählen. Dort IPv4-Einstellungen, Feld DNS-Server, und folgendes eintragen:

Desweiteren gibt es Sinn die Suchdomäne auf "test.dom" anzupassen. Denn damit muss man dann zur Erreichbarkeit anderer Maschinen in der Domäne nicht immer den vollqualifizierten Namen (Beispiel: client23.test.dom) angeben, sondern es langt der Hostname (Beispiel: client23) zur Namensauflösung. Dies sollte über die graphische Oberfläche beider DCs angepasst werden. Nach Reboot beider Server sollten in der "resolv.conf" folgende Inhalte drin stehen:

passende Einstellung für DC2:

nameserver 192.168.1.199      # Bemerkung: IP des ersten DCs
nameserver 127.0.0.1
search test.dom

passende Einstellung für DC1:

 
nameserver 192.168.1.198      # Bemerkung: IP des zweiten DCs
nameserver 127.0.0.1
search test.dom

DNS-Einträge überprüfen

Die IP und DNS-Konfiguration jedes DNS-Severs ist mit folgendem Befehl anzeigbar:

nm-tool

Beispielausgabe:

NetworkManager Tool

State: connected (global)

- Device: eth0  [Kabelnetzwerkverbindung 1] ------------------------------------
  Type:              Wired
  Driver:            r8169
  State:             connected
  Default:           yes
  HW Address:        70:81:AC:AD:53:00

  Capabilities:
    Carrier Detect:  yes
    Speed:           1000 Mb/s

  Wired Properties
    Carrier:         on

  IPv4 Settings:
    Address:         192.168.1.199
    Prefix:          24 (255.255.255.0)
    Gateway:         192.168.1.1

    DNS:             192.168.1.198, 127.0.0.1

Die einzelnen DC-Einträge kann man für die DNS-Server getrennt so überprüfen:

dig dc1 @192.168.1.199
dig dc1 @192.168.1.198
dig dc1.test.dom @192.168.1.199
dig dc1.test.dom @192.168.1.198

In der Beispielausgabe müssen unter anderem folgende Zeilen erscheinen, und auf jeden Fall hinter dem "A" die richtige IP-Adresse stehen:

;; ANSWER SECTION:
dc1.                    9       IN      A       192.168.1.199
oder
dc1.test.dom            900     IN      A       192.168.1.199

Das gleiche muss man auch für den "DC2"-Eintrag testen:

dig dc2 @192.168.1.199
dig dc2 @192.168.1.198
dig dc2.test.dom @192.168.1.199
dig dc2.test.dom @192.168.1.198

Auch dort sollten in den Ausgaben alle 4 Tests folgende Zeilen beinhalten, auf jeden Fall muss hinter dem "A" die richtige IP-Adresse stehen:

;; ANSWER SECTION:
dc2.                    9       IN      A       192.168.1.198
oder
dc2.test.dom            900     IN      A       192.168.1.198

Wenn die Namen nicht korrekt aufgelöst werden, kann es ein Fehler in der DNS-Config sein, oder es kann dieser Bug hier sein:

https://wiki.samba.org/index.php/Check_and_fix_DNS_entries_on_DC_joins 🇬🇧

Dann müssen die DNS-Einträge manuell im DNS angelegt werden.

Directory Replikation überprüfen

Die Directory-Replikation synchronisiert ständig alle Inhalte des Active Directory (User, Gruppen, Computerobjekte, sowie Passwortänderungen) zwischen den Domain-Controllern. Siehe auch https://wiki.samba.org/index.php/Samba4/HOWTO/Join_a_domain_as_a_DC#Directory_replication

Wenige Minuten nach Start des zweiten DCs beginnt die Directory Replikation automatisch. Geduldig sein!

Befehl zum Überrüfen der Replikation:

samba-tool drs showrepl

Hinweis zur Warnung: "Warning: No NC replicated for Connection!“ in der letzten Zeile. Diese Meldung kann ignoriert werden.

Ansonsten sollte kein Fehler ersichtlich sein.

Falls die Replikation auch nach Minuten noch nicht beginnt, so kann man sie auch manuell anwerfen:

samba-tool drs replicate DC1 DC2 dc=test,dc=dom

Ausgabe:

Replicate from DC2 to DC1 was successful.

Bemerkung:

Wenn die Replikation nicht klappt, ist es sehr wahrscheinlich ein DNS-Problem.

Dann kommt vermutlich dieser Fehler: "DsReplicaSync failed" (8440, 'WERR_DS_DRA_BAD_NC')

manuelle Replikationstests

Einfach ein User-Objekt auf dem einen DC anlegen, und danach schauen, ob es weniges Sekunden später auf dem anderen DC angekommen ist. Entweder mit dem samba-tool, oder mit der Windows Active-Directory User & Gruppen-Verwaltung (RSAT)

Beispieleingabe am ersten DC: (Passwort für User muss 3 aus 4 Komponenten enthalten)

samba-tool user add testuser555

Ausgabe:

User 'testuser555' created successfully

Überprüfen nach wenigen Sekunden am zweiten DC:

samba-tool user list

In der Ausgabe muss dann unter anderem der neue Useraccount angezeigt werden.

SYSVOL-Replikation

Dies geschieht derzeit noch nicht automatisch!

Wenn man eine Änderung in den Logonscripten oder den GPOs vorgenommen hat, so muss man SYSVOL manuell synchronisieren. Oder man muss sich eine rsync-Routine bauen, welche die Replikation ab nimmt.

Details hier: https://wiki.samba.org/index.php/SysVol_Replication 🇬🇧