Windows-DC durch Samba ablösen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
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

  1. win-dc prüfen
  2. dc1 vorbereiten
  3. dc1 als DC beitreten
  4. Replikation prüfen
  5. sysvol kopieren
  6. FSMO-Rollen übernehmen
  7. Zeit und DHCP auf dc1 umziehen
  8. Clients auf dc1 als DNS-Server umstellen
  9. win-dc herabstufen
  10. 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

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

  1. Prüfen Sie win-dc mit dcdiag und repadmin. Welchen Functional Level hat die Domäne?
  2. Bereiten Sie dc1 vor und treten Sie der Domäne als DC bei.
  3. Prüfen Sie die Replikation in beide Richtungen mit einem Testbenutzer.
  4. Kopieren Sie sysvol und prüfen Sie es mit sysvolcheck.
  5. Übernehmen Sie alle FSMO-Rollen.
  6. Ziehen Sie DHCP auf dc1 um und lassen Sie win11 eine neue Adresse holen.
  7. Stufen Sie win-dc herab und prüfen Sie danach alle SRV-Einträge.

Vertiefung

  1. Lassen Sie sich mit samba-tool drs showrepl --json die Replikation als JSON ausgeben.
  2. Legen Sie auf win-dc eine Gruppenrichtlinie an, bevor Sie sysvol kopieren, und prüfen Sie danach, ob win11 sie von dc1 bekommt.
  3. 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

Weiter