Externer LDAP/AD Mirror lmn 7.x

,

Nein, noch nicht. Jetzt kommt erstmal 7.1.
Aber das samba replikat sollte trotzdem funktionieren, nur vielleicht nicht als readonly.

VG, Dorian

1 „Gefällt mir“

Hi Jochen,

da das zugrundeliegende System noch garnicht da ist, kann ich da keine gute Angabe abgeben.

Da wir aber mit dem Linbo 4 (Thomas sei dank) nun auch auf modernerer Basis sind, sollten die Abhängigkeiten nahezu aufgelöst sein. Daher wird Releasewechsel einfacher.

Es werden aber sicher in den SoFe 22 Pilotschulen bereits auf 22.04 umgestellt werden.

LG, Maurice

Hi Maurice, hi Dorian,

danke Euch. Dann schiebe ich das Projekt Backup-AD noch etwas nach hinten.

Liebe Grüße,
Jochen

Hallihallohallöchen :slight_smile:

gibt es eigentlich in dieser Sache neue Erkenntnisse?
LG Jesko

Ich meine, dass das frühestens mit 7.2 und nem neuen Ubuntu gehen wird!? Steht auch sehr hoch auf meiner Haben-will-Liste!

Viele Grüße,
Jochen

1 „Gefällt mir“

Der limitierende Faktor ist die SAMBA Version der Lösung. Erst wenn man von 4.7.6 auf höhere Releases geht. Ursprünglich geplant war der Wechsel für 7.2.
Ob jemand was in der Entwicklerversion bereits getestet hat?

Viele Grüße
Thomas

Ich habe es in einem Ubuntu 18.04 Docker zum Laufen bekommen. Das ist aber sehr gebastelt und nicht wirklich dokumentierbar.

Aber hier meine Konfiguration:
/opt/samba-dc/docker-compose.yml

services:
  app:
    dns: 10.0.0.1
    image: instantlinux/samba-dc:latest
    restart: always
    hostname: server-extern.linuxmuster.lan
    environment:
      DOMAIN_ACTION: "join"
      BIND_INTERFACES_ONLY: "no"
      INTERFACES: "lo mlm 10.1.1.11"
      REALM: "LINUXMUSTER.LAN"
      TZ: "Europe/Berlin"
      WORKGROUP: "LINUXMUSTER.LAN"
      BIND_INTERFACES_ONLY: "yes"
    volumes:
      - ./config/etc:/etc/samba
      - ./config/lib:/var/lib/samba
      - ./entrypoint.sh:/usr/local/bin/entrypoint.sh
    secrets:
      - samba-admin-password

    ports:
      - 389:389

    networks:
      traefik:
        ipv4_address: 172.25.0.101

secrets:
  samba-admin-password:
    file: ./samba-admin-password

networks:
  traefik:
     external: true

/opt/samba-dc/entrypoint.sh

#!/bin/sh -e

if [ -z "$NETBIOS_NAME" ]; then
  NETBIOS_NAME=$(hostname -s | tr [a-z] [A-Z])
else
  NETBIOS_NAME=$(echo $NETBIOS_NAME | tr [a-z] [A-Z])
fi
REALM=$(echo "$REALM" | tr [a-z] [A-Z])

if [ ! -f /etc/timezone ] && [ ! -z "$TZ" ]; then
  echo 'Set timezone'
  cp /usr/share/zoneinfo/$TZ /etc/localtime
  echo $TZ >/etc/timezone
fi

if [ ! -f /var/lib/samba/registry.tdb ]; then
  ADMIN_PASSWORD=$(cat /run/secrets/$ADMIN_PASSWORD_SECRET)
  if [ "$BIND_INTERFACES_ONLY" == yes ]; then
    INTERFACE_OPTS="--option=\"bind interfaces only=yes\" \
      --option=\"interfaces=$INTERFACES\""
  fi
  if [ $DOMAIN_ACTION == join ]; then
    PROVISION_OPTS="$REALM DC -UAdministrator --password='$ADMIN_PASSWORD'"
  else
    echo 'Only join actions are supported.'
    exit 1
  fi

  rm -f /etc/samba/smb.conf /etc/krb5.conf

  # This step is required for INTERFACE_OPTS to work as expected
  echo "samba-tool domain $DOMAIN_ACTION $PROVISION_OPTS $INTERFACE_OPTS \
     --dns-backend=SAMBA_INTERNAL" | sh

  #mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
  echo 'root = administrator' > /etc/samba/smbusers
fi
mkdir -p -m 700 /etc/samba/conf.d

#for file in /etc/samba/smb.conf /etc/samba/conf.d/netlogon.conf \
#      /etc/samba/conf.d/sysvol.conf; do
#  sed -e "s:{{ ALLOW_DNS_UPDATES }}:$ALLOW_DNS_UPDATES:" \
#      -e "s:{{ BIND_INTERFACES_ONLY }}:$BIND_INTERFACES_ONLY:" \
#      -e "s:{{ DOMAIN_LOGONS }}:$DOMAIN_LOGONS:" \
#      -e "s:{{ DOMAIN_MASTER }}:$DOMAIN_MASTER:" \
#      -e "s+{{ INTERFACES }}+$INTERFACES+" \
#      -e "s:{{ LOG_LEVEL }}:$LOG_LEVEL:" \
#      -e "s:{{ NETBIOS_NAME }}:$NETBIOS_NAME:" \
#      -e "s:{{ REALM }}:$REALM:" \
#      -e "s:{{ SERVER_STRING }}:$SERVER_STRING:" \
#      -e "s:{{ WINBIND_USE_DEFAULT_DOMAIN }}:$WINBIND_USE_DEFAULT_DOMAIN:" \
#      -e "s:{{ WORKGROUP }}:$WORKGROUP:" \
#      /root/$(basename $file).j2 > $file
#done
#for file in $(ls -A /etc/samba/conf.d/*.conf); do
#  echo "include = $file" >> /etc/samba/smb.conf
#done
#ln -fns /var/lib/samba/private/krb5.conf /etc/
cp /var/lib/samba/private/krb5.conf /etc/

exec samba --model=$MODEL -i </dev/null

Ob da noch was fehlt und wie man es initial einrichtet, weiß ich nich mehr. Ich hab im Moment auch keine Zeit, mich genauer damit zu beschäftigen, aber vielleicht hilft es ja als Ansatz.
Wir haben das so seit ein paar Monaten im Einsatz.

VG,
Dorian

1 „Gefällt mir“

Hallo zusammen :slight_smile:

jetzt hab ich mal nach einem Ausfall den Mut gefasst, einfach auf 7.2 upzudaten und anschließend die Anregungen von @dorian verwendet, um einen externen dc zu erstellen.
Super! Klappt auf den ersten Blick…
ich kann den LDAP abfragen, in moodle und der nextcloud nutzen.

Problem:
der externe LDAP funktioniert nur, solange der interne erreichbar ist :slight_smile: So hatte ich mir das aber nicht vorgestellt.
Sobald ich den Schulinternen DC runterfahre, kommt in den Logs des externen die Meldung, dass die Verbindung gekappt ist und dann antwortet er auch nicht mehr auf anfragen…

Mein Setting:
Exxterner Server mit Wireguard-Tunnel zur Schule.
Dorians Skripte oben mit einer Anpassung: Letsencrypt-Zertifikate mit reinkopiert…

Was beachte ich hier nicht? @tjordan hast du mir nen Tipp?
LG Jesko

1 „Gefällt mir“

Ich antworte mir selbst…
… meine Beobachtung war falsch. Der externe LDAP möchte sich beim Start synchronisieren. Wenn man in dieser Zeit die Verbindung kappt, DANN bleibt er stehen… Wenn das erledigt ist, kann jeder der Server ausfallen, ohne dass die Dienste das merken.

Ich hab jetzt bei moodle und nextcloud beide LDAPs eingetragen und es funktioniert wie gewünscht. SUPER!
Danke für den Input!

noch zu tun: die Zertifikate an die richtige Stelle kopieren, wenn sie sich ändern.

Leider gelingt es mir nicht, das Letsencrypt-Verzeichnis in den Container zu mounten.
Die Links werden dann nicht verfolgt, sondern sind nicht lesbar.

LG Jesko

2 „Gefällt mir“

Ich hab das jetzt mal (leider immer noch nicht perfekt) dokumentiert.
Im Prinzip ist es das von @dorian mit kleinen Änderungen an wichtigen Stellen (z.B. den User im Entrypoint-Skript.

Das funktioniert ganz gut, außer dass man im DNS nach dem Domain-Join nochmal die korrekte Adresse nachpflegen muss, weil sonst die Docker-interne sinnfreie Adresse drin steht…
… vielleicht host-netz verwenden statt bridge…

jedenfalls läuft das jetzt bei mir und wird alle 5 Minuten nach außen repliziert.
Rückwärts nicht. Ob das so gewollt ist (also ich will das so) oder ob das eigentlich in beide Richtungen synct und nur aus irgendeinem Grund noch fehlschlägt, weiß ich nicht.
Falls da jemand besser bescheid weiß… bitte melden :slight_smile:

Und falls (was sehr wahrscheinlich ist) da Optimierungspotential ist,… bitte einfach issues öffnen oder pull requests… oder wie auch immer.

hier: Jesko Anschütz / linuxmuster-samba-replikation · GitLab
LG Jesko

3 „Gefällt mir“

Wenn ich das richtig sehe, machst du an der Stelle aber keinen ReadOnly DC sondern einen RW Dc. Der sollte tatsächlich in beide Richtungen syncen.

Hmm. Irgendwas stimmt da auch noch nicht.
Nach meinen Tests war der Sync zwar nur in eine Richtung, aber ich hab mittlerweile diverse Fehlermeldungen entdeckt! NT_irgendwas denied…
Was müsste ich denn Ändern, damit es OneWay ist?

https://wiki.samba.org/index.php/Join_a_domain_as_a_RODC

1 „Gefällt mir“

Ok, das muss ich mir bei Gelegenheit nochmal anschauen. Weil eigentlich war das ja das, was ich wollte… :slight_smile:

Ich möchte aber noch eine Warnung loslassen… ich hatte plötzlich scheinbar vollkommen random Probleme. Mal bei der Anmeldung, mal schon beim Hochfahren der Rechner.

Irgendwann kam mir der Verdacht, dass der neue Domaincontroller das Problem ist und tatsächlich ist er der Auslöser, wenn auch nicht das Problem:

Offensichtlich möchten manche Clients schon beim Booten eine Verbindung zu dem Backup-DC herstellen, was nicht klappt, wenn es vom Client zu diesem keine Route gibt.
In meinem Fall wussten die Clients nicht, wie sie durch das VPN rückwärts rauskommen können.
Mir ist auch nicht klar, warum das zu diesen Effekten führt, eigentlich würde ich annehmen, dass sie mit dem Haupt-DC zufrieden sind, wenn der online ist.

Wie dem auch sei. Ich hab jetzt eine Route eingerichtet, so dass alle Clients bei Bedarf den externen DC erreichen können und jetzt flutscht es. (Die Fehler oben kommen immer noch auf dem BackupDC aber sie scheinen bisher nur die Rück-Synchronisierung zu stören, die ich ja ohnehin nicht haben möchte.)

… LG Jesko

Hallo,

in der Microsoft-Welt gibt es sowas wie Haupt- und Backup-DC nicht. Alle DC sind gleichberechtigt und alle werden standardmäßig im Teilbaum des DNS für Service-Lookups hinterlegt. Über „Standorte“ kann man festlegen, welche Clients (IP-Netze) welche DC bevorzugen. Es könnte in dem Fall helfen einen weiteren „Standort“ („Site“) anzulegen und diesem das IP-Netz der VPN-Clients sowie den RODC zuzuordnen, aber auch dann würde für Schreibzugriffe und im Fallback-Fall auf einen beschreibbaren DC der Default-Site zurückgegriffen.

MfG Buster

1 „Gefällt mir“

Danke, @Buster für diese Aufklärung :slight_smile: Das erklärt auf jeden Fall das Verhalten :slight_smile:
Wenn ich in den Sommerferien mal irgendwann Luft hab, les ich mich da mal ein :slight_smile:

Viele Grüße Jesko

Also, ich mache jetzt mal eine Rolle Rückwärts:
Grundsätzlich klappt das. Aber es gab Probleme, wie z.B. dass mir (und allen anderen) in unregelmäßigen Abständen die Nextcloud zig Meldungen schickt, dass „ein Administrator …sie aus der Gruppe p_xyz …entfernt“ und im selben Augenblick umgekehrt, wieder hinzugefügt hat….
das stresst mich :slight_smile: grad etwas.

Ich hab also mit samba-tool domain demote den DC wieder degradiert und heruntergefahren.

Jetzt ist noch ein Überbleibsel im AD, was ich hätte sowieso noch korrigieren müssen:

Im DNS ist auf oberster Ebene ein A-Record mit der internen Docker-IP des ersten Containers, den ich hochgefahren habe. Das ist sowieso falsch und jetzt erst recht.

Wie werde ich diesen Eintrag wieder los? (Siehe Screenshot)
Ich wurde den Eintrag los mit
❯ samba-tool dns query localhost meine.domain @.meine.domain A 192.168.128.6 -U global-admin

LG Jesko

Hi Jesko,

argh, das ist doof mit der NC.
Meinst Du, das ist ein lösbares Problem?

Viele Grüße,
Jochen

Ich hatte jetzt einfach nicht genügend Zeit, das in Ruhe zu untersuchen.
Es kann sein, dass es keine Probleme gibt, wenn alles genau richtig eingerichtet ist.
Aber weil ich jetzt meinen Usern das im Produktivbetrieb nicht zumuten wollte (mehrfach am Tag 2*Gruppenzugehörigkeit Nachrichten) musste ich die Notbremse ziehen.
Vielleicht setz ich in den Sommerferien mal ne Testinstanz von NC auf, mit der ich das dann nochmal prüfen kann

1 „Gefällt mir“

Ah… und eins muss ich noch hinterherschieben… ob das Problem, was ich gerade mit den Gruppen habe URSÄCHLICH mit dem externen LDAP zu tun hat, oder nur zufällig korelliert… das werde ich (zumindest mit einiger Sicherheit) in zwei drei Tagen sagen können…

:wink:
LG

1 „Gefällt mir“