Windows-DC durch Samba ablösen
| Kurs | Lab | Rechner | Domäne |
|---|---|---|---|
| Linux - Samba | Linux - Samba Lab | dc1 · 10.2XX.1.12, win-dc · 10.2XX.1.11 | ad.it2XX.int |
Einfach erklärt
- Ziel: Die Domäne ad.it2XX.int bleibt, mit allen Benutzern, Gruppen und Rechnern. Nur der Domänencontroller wechselt von Windows zu Samba.
- Dazu tritt Samba der Domäne als zweiter DC bei. Beide DCs gleichen sich ab (Replikation).
- Danach übernimmt Samba die FSMO-Rollen, und der Windows-DC wird herabgestuft. Clients merken davon fast nichts.
- Mitgezogen werden müssen alles, was der Windows-DC nebenbei gemacht hat: sysvol mit den Gruppenrichtlinien, DHCP, die Zeit.
Das Wichtigste
- Nie provision auf dc1. Ein DC für eine bestehende Domäne entsteht nur mit samba-tool domain join.
- Windows Server 2022 legt Domänen mit Functional Level 2016 an. Samba 4.22 kann beitreten, aber nur mit ad dc functional level = 2016 in der smb.conf.
- Samba repliziert sysvol nicht mit Windows (kein DFS-R). Gruppenrichtlinien einmal von Hand kopieren.
- Erst prüfen, ob die Domäne gesund ist. Ein kaputter Windows-DC wird durch den Beitritt nicht besser.
- Vorher einen Snapshot von win-dc und dc1 machen.
Ablauf
- win-dc prüfen
- dc1 vorbereiten
- dc1 als DC beitreten
- Replikation prüfen
- sysvol kopieren
- FSMO-Rollen übernehmen
- Zeit und DHCP auf dc1 umziehen
- Clients auf dc1 als DNS-Server umstellen
- win-dc herabstufen
- Aufräumen und prüfen
1. win-dc prüfen
- PowerShell auf win-dc:
dcdiag /q repadmin /replsummary Get-ADDomain | Format-List DomainMode Get-ADForest | Format-List ForestMode netdom query fsmo
- dcdiag /q darf keine Fehler melden.
2. dc1 vorbereiten
- Wie bei der Domäne von Grund auf, aber mit dem Namen der bestehenden Domäne:
- /etc/hosts
127.0.0.1 localhost 10.201.1.12 dc1.ad.it201.int dc1
- /etc/resolv.conf: noch auf win-dc, bis der Beitritt geklappt hat
nameserver 10.201.1.11 search ad.it201.int
- Pakete wie beim DC, Einzeldienste abschalten, smb.conf zur Seite legen:
apt install samba-ad-dc krb5-user winbind libnss-winbind libpam-winbind smbclient chrony dnsutils ldb-tools acl attr systemctl disable --now smbd nmbd winbind systemctl mask smbd nmbd winbind mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
- /etc/krb5.conf
[libdefaults]
default_realm = AD.IT201.INT
dns_lookup_realm = false
dns_lookup_kdc = true
- Zeit vorläufig von win-dc: in /etc/chrony/conf.d/ad.conf server 10.201.1.11 iburst, dann systemctl restart chrony
- Test: kinit administrator, klist
3. Beitreten
samba-tool domain join ad.it201.int DC -k yes \ --option="ad dc functional level = 2016" \ --option="dns forwarder = 10.201.1.1"
- -k yes benutzt das Ticket von kinit.
- Am Ende steht: Joined domain AD (SID S-1-5-21-…) as a DC
- Danach:
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf systemctl unmask samba-ad-dc systemctl enable --now samba-ad-dc
- /etc/resolv.conf: dc1 fragt jetzt sich selbst, win-dc als zweiten
nameserver 10.201.1.12 nameserver 10.201.1.11 search ad.it201.int
4. Replikation prüfen
- Bis alle Verbindungen stehen, können bis zu 15 Minuten vergehen.
samba-tool drs showrepl host -t A ad.it201.int host -t SRV _ldap._tcp.ad.it201.int
- In showrepl muss bei jedem Eintrag Last attempt … was successful stehen, auch für DomainDnsZones und ForestDnsZones.
- Auf win-dc:
repadmin /showrepl Get-ADDomainController -Filter * | Format-Table Name, IPv4Address, IsGlobalCatalog
- Gegenprobe: Auf win-dc einen Benutzer anlegen, auf dc1 mit samba-tool user list nachsehen. Und umgekehrt.
5. sysvol kopieren
- Auf dc1 die Freigabe von win-dc einhängen und kopieren:
apt install cifs-utils rsync mkdir /mnt/winsysvol mount -t cifs //win-dc.ad.it201.int/sysvol /mnt/winsysvol -o sec=krb5,cruid=root rsync -av /mnt/winsysvol/ad.it201.int/ /var/lib/samba/sysvol/ad.it201.int/ umount /mnt/winsysvol samba-tool ntacl sysvolreset samba-tool ntacl sysvolcheck
- sysvolreset setzt die Rechte auf sysvol so, wie Windows sie erwartet.
- Danach gilt: Gruppenrichtlinien nur noch an einem DC bearbeiten, bis win-dc weg ist.
6. FSMO-Rollen übernehmen
samba-tool fsmo show samba-tool fsmo transfer --role=all -U administrator samba-tool fsmo show
- Alle sieben Rollen müssen jetzt bei dc1 liegen, auch DomainDnsZonesMasterRole und ForestDnsZonesMasterRole.
- Auf win-dc: netdom query fsmo
7. Zeit und DHCP
Zeit
- dc1 ist jetzt PDC-Emulator und damit Zeitquelle der Domäne. chrony wie beim DC von Grund auf: Upstream die Firewall, ntpsigndsocket, allow für SERVER und LAN.
DHCP
- Der DHCP-Server auf win-dc verschwindet mit dem Herabstufen. Ersatz auf dc1 mit Kea:
apt install kea-dhcp4-server
- /etc/kea/kea-dhcp4.conf, der Teil für das LAN:
"subnet4": [ {
"id": 1,
"subnet": "172.26.201.0/24",
"pools": [ { "pool": "172.26.201.150 - 172.26.201.199" } ],
"option-data": [
{ "name": "routers", "data": "172.26.201.1" },
{ "name": "domain-name-servers", "data": "10.201.1.12" },
{ "name": "domain-name", "data": "ad.it201.int" }
]
} ]
- Kea muss auf der Karte im SERVER-Netz lauschen: "interfaces-config": { "interfaces": [ "enp0s3" ] }
- Umschalten: DHCP auf win-dc stoppen (Stop-Service DHCPServer), Kea starten, im Relay der Firewall 10.2XX.1.12 eintragen.
- Mehr zu Kea: Animation Kea und DDNS
8. Clients umstellen
- Neue DHCP-Leases bekommen dc1 als DNS-Server. Feste Adressen von Hand ändern, z.B. fs, www, proxy: /etc/resolv.conf auf 10.2XX.1.12.
- Windows-Clients: ipconfig /renew, dann nltest /dsgetdc:ad.it2XX.int
9. win-dc herabstufen
- PowerShell auf win-dc:
Uninstall-ADDSDomainController -LocalAdministratorPassword (Read-Host -AsSecureString "neues lokales Admin-Passwort")
- Der Server meldet sich aus der Domäne ab, entfernt seine Einträge und startet als normaler Mitgliedsserver neu.
- Hängt das Herabstufen, z.B. weil win-dc dc1 nicht erreicht: nicht erzwingen, sondern erst die Replikation reparieren.
10. Aufräumen und prüfen
samba-tool drs showrepl samba-tool dbcheck --cross-ncs host -t SRV _ldap._tcp.ad.it201.int host -t SRV _kerberos._udp.ad.it201.int samba-tool dns query dc1 ad.it201.int @ ALL -U administrator
- In den SRV-Einträgen darf nur noch dc1 stehen.
- Stehen noch Einträge oder Objekte von win-dc herum, z.B. weil win-dc nicht sauber herabgestuft wurde:
samba-tool domain demote --remove-other-dead-server=win-dc -U administrator
- Danach als zweiten DC wieder einen Samba-DC aufnehmen, siehe Zweiter Samba-DC. Eine Domäne mit nur einem DC hat keine Ausfallsicherheit.
Stolperfallen
- Join scheitert wegen des Functional Level: ad dc functional level = 2016 fehlt.
- resolv.conf zu früh auf dc1 umgestellt: Der Beitritt findet die Domäne nicht.
- sysvol vergessen: Gruppenrichtlinien fehlen auf dc1, Clients melden Fehler beim Abruf.
- DHCP vergessen: Nach dem Herabstufen bekommen Clients keine Adressen mehr.
- Zeit: dc1 ist PDC-Emulator, aber chrony holt die Zeit noch von win-dc. Nach dem Herabstufen läuft die Uhr frei.
- Rollen gewaltsam übernommen (seize), solange win-dc noch läuft: zwei DCs halten sich für Rolleninhaber. Nur transfer, seize nur, wenn der alte DC nie wiederkommt.
Übungen
Grundübungen
- Prüfen Sie win-dc mit dcdiag und repadmin. Welchen Functional Level hat die Domäne?
- Bereiten Sie dc1 vor und treten Sie der Domäne als DC bei.
- Prüfen Sie die Replikation in beide Richtungen mit einem Testbenutzer.
- Kopieren Sie sysvol und prüfen Sie es mit sysvolcheck.
- Übernehmen Sie alle FSMO-Rollen.
- Ziehen Sie DHCP auf dc1 um und lassen Sie win11 eine neue Adresse holen.
- Stufen Sie win-dc herab und prüfen Sie danach alle SRV-Einträge.
Vertiefung
- Lassen Sie sich mit samba-tool drs showrepl --json die Replikation als JSON ausgeben.
- Legen Sie auf win-dc eine Gruppenrichtlinie an, bevor Sie sysvol kopieren, und prüfen Sie danach, ob win11 sie von dc1 bekommt.
- Vergleichen Sie die Verzeichnisse beider DCs mit samba-tool ldapcmp ldap://dc1 ldap://win-dc -U administrator
Fehlersuche
- 1. samba-tool domain join bricht ab, die Meldung nennt den Functional Level oder das Schema
Die Windows-Domäne hat Level 2016. Beim Beitritt fehlt --option="ad dc functional level = 2016".
- 2. drs showrepl zeigt für DomainDnsZones einen Fehler
Die DNS-Partitionen werden noch nicht repliziert, meist weil die Zeit noch nicht reicht oder ein DNS-Eintrag für dc1 fehlt. 15 Minuten warten, dann samba_dnsupdate --verbose auf dc1.
- 3. Nach dem Herabstufen von win-dc meldet win11
- Domäne nicht verfügbar
win11 hat noch win-dc als DNS-Server, aus einer alten DHCP-Lease oder fest eingetragen. ipconfig /all, ipconfig /renew
- 4. Clients bekommen nach dem Umzug keine Adresse
Das Relay der Firewall zeigt noch auf win-dc, oder Kea lauscht auf der falschen Karte. journalctl -u kea-dhcp4-server
Vertiefung
- Samba-tool fsmo · Samba-tool drs · Samba-tool ntacl
- https://wiki.samba.org/index.php/Joining_a_Samba_DC_to_an_Existing_Active_Directory
- https://wiki.samba.org/index.php/Transferring_and_Seizing_FSMO_Roles