Browse Source

'README.md' ändern

yuno admin 4 months ago
parent
commit
d93e0e19b5
1 changed files with 253 additions and 2 deletions
  1. 253 2
      README.md

+ 253 - 2
README.md

@@ -1,3 +1,254 @@
-# tora_join-domain-linux
+<!doctype html>
+<html lang="de">
+<head>
+  <meta charset="utf-8" />
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+  <title>README – Linux Domain Join (Synology AD / .local)</title>
+  <style>
+    :root{
+      --bg:#0b0f14; --card:#111827; --text:#e5e7eb; --muted:#9ca3af;
+      --accent:#22c55e; --accent2:#60a5fa; --warn:#f59e0b; --danger:#ef4444;
+      --code:#0f172a; --border:#1f2937;
+    }
+    body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;background:var(--bg);color:var(--text);line-height:1.55}
+    .wrap{max-width:980px;margin:0 auto;padding:28px 18px 56px}
+    .hero{background:linear-gradient(135deg, rgba(34,197,94,.18), rgba(96,165,250,.12));border:1px solid var(--border);border-radius:18px;padding:22px 18px;margin-bottom:18px}
+    h1{margin:0 0 6px;font-size:28px}
+    .sub{color:var(--muted);margin:0}
+    .badge{display:inline-block;background:rgba(34,197,94,.15);border:1px solid rgba(34,197,94,.35);color:#bbf7d0;padding:4px 10px;border-radius:999px;font-size:12px;margin-top:10px}
+    h2{margin:26px 0 10px;font-size:20px}
+    h3{margin:18px 0 8px;font-size:16px;color:#d1d5db}
+    .card{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:16px 16px;margin:12px 0}
+    .note{border-left:4px solid var(--accent2);padding:10px 12px;background:rgba(96,165,250,.08);border-radius:10px}
+    .warn{border-left:4px solid var(--warn);padding:10px 12px;background:rgba(245,158,11,.08);border-radius:10px}
+    .danger{border-left:4px solid var(--danger);padding:10px 12px;background:rgba(239,68,68,.08);border-radius:10px}
+    code, pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}
+    pre{background:var(--code);border:1px solid var(--border);border-radius:14px;padding:12px 12px;overflow:auto}
+    .grid{display:grid;grid-template-columns:1fr;gap:12px}
+    @media (min-width:900px){.grid{grid-template-columns:1fr 1fr}}
+    ul{margin:8px 0 0 18px}
+    a{color:#93c5fd}
+    .k{color:#a7f3d0}
+    .m{color:var(--muted)}
+    .hr{height:1px;background:var(--border);margin:18px 0}
+    .pill{display:inline-block;border:1px solid var(--border);background:rgba(255,255,255,.03);padding:2px 8px;border-radius:999px;font-size:12px;color:var(--muted)}
+  </style>
+</head>
+<body>
+  <div class="wrap">
+    <section class="hero">
+      <h1>tora_join-domain-linux <span class="pill">README (HTML)</span></h1>
+      <p class="sub">Linux automatisiert an <b>Synology Directory Server / Active Directory</b> joinen – inkl. Fixes für <code>.local</code> (mDNS/Avahi) &amp; Kerberos-Stabilität.</p>
+      <div class="badge">✅ 1× Copy &amp; Paste · ✅ Preflight Checks · ✅ SSSD + realmd + adcli</div>
+    </section>
 
-joining script linux - .local szenario
+    <div class="card note">
+      <b>Wichtig:</b> Diese README nutzt ausschließlich <u>fiktive</u> Beispielwerte:
+      <ul>
+        <li><code>companydomain.local</code></li>
+        <li>AD/DNS-IP: <code>192.0.2.10</code> (RFC 5737 Dokumentationsnetz)</li>
+        <li>Admin-User: <code>Administrator@COMPANYDOMAIN.LOCAL</code></li>
+      </ul>
+      <div class="m">➡️ Bitte passe die Werte im Script vor der Nutzung an.</div>
+    </div>
+
+    <h2>✅ Was das Script macht</h2>
+    <div class="card">
+      <ul>
+        <li>Installiert benötigte Pakete (<code>realmd</code>, <code>sssd</code>, <code>adcli</code>, <code>krb5-user</code>, …)</li>
+        <li>Setzt DNS zuverlässig auf den AD/DNS-Server (wichtig für Kerberos)</li>
+        <li>Entschärft <code>.local</code>-Probleme durch mDNS/Avahi/NSS-Anpassung (optional/empfohlen)</li>
+        <li>Stabilisiert Kerberos durch <code>rdns = false</code> (optional/empfohlen)</li>
+        <li>Führt Domain Join aus (<code>realm join</code>)</li>
+        <li>Startet <code>sssd</code> neu und optional <code>mkhomedir</code></li>
+      </ul>
+    </div>
+
+    <h2>⚠️ Vorher: Domain-Daten im Script anpassen</h2>
+    <div class="card warn">
+      <p><b>Öffne</b> <code>join_unix_ad_local.sh</code> und passe im <b>CONFIG</b>-Block mindestens an:</p>
+      <ul>
+        <li><code>DOMAIN</code> → <code>companydomain.local</code></li>
+        <li><code>REALM</code> → <code>COMPANYDOMAIN.LOCAL</code> (GROSS)</li>
+        <li><code>AD_DNS_IP</code> → z. B. <code>192.0.2.10</code></li>
+        <li><code>ADMIN_USER</code> → <code>Administrator@COMPANYDOMAIN.LOCAL</code></li>
+        <li>optional: <code>DC_HOST</code>, <code>TEST_USER</code>, <code>COMPUTER_OU</code></li>
+      </ul>
+      <p class="m">💡 Bei <code>.local</code> Domains ist es sehr empfehlenswert, mDNS/Avahi zu deaktivieren bzw. <code>hosts: files dns</code> zu erzwingen.</p>
+    </div>
+
+    <h2>⚡ Quickstart (voll automatisch – Copy &amp; Paste)</h2>
+
+    <div class="grid">
+      <div class="card">
+        <h3>Variante A: Repo klonen &amp; Script starten</h3>
+        <pre><code>sudo apt update -y &amp;&amp; sudo apt install -y git
+
+# Repo klonen
+git clone https://git.example.com/company/tora_join-domain-linux.git
+cd tora_join-domain-linux
+
+# Script ausführbar machen &amp; starten
+chmod +x join_unix_ad_local.sh
+sudo ./join_unix_ad_local.sh</code></pre>
+        <div class="m">✅ Empfohlen, weil du dann Änderungen am Script direkt im Repo pflegen kannst.</div>
+      </div>
+
+      <div class="card">
+        <h3>Variante B: Nur das Script holen (ohne Clone)</h3>
+        <pre><code># Script herunterladen (Beispiel-URL – an deinen Git-Server anpassen)
+curl -L -o join_unix_ad_local.sh \
+  "https://git.example.com/company/tora_join-domain-linux/raw/branch/master/join_unix_ad_local.sh"
+
+chmod +x join_unix_ad_local.sh
+sudo ./join_unix_ad_local.sh</code></pre>
+        <div class="m">💡 Funktioniert nur, wenn dein Git-Server eine Raw-URL anbietet.</div>
+      </div>
+    </div>
+
+    <h2>🔐 Login nach erfolgreichem Join</h2>
+    <div class="card">
+      <p>Typischerweise ist das Login-Format:</p>
+      <pre><code>user@companydomain.local</code></pre>
+
+      <p>Beispieltests:</p>
+      <pre><code>realm list
+id someuser@companydomain.local
+getent passwd someuser@companydomain.local
+su - someuser@companydomain.local</code></pre>
+      <div class="note">
+        <b>Merke:</b> Wenn <code>id</code> &amp; <code>getent</code> funktionieren, ist <code>sssd</code> korrekt angebunden.
+      </div>
+    </div>
+
+    <h2>🧪 Diagnose-Kommandos (wenn etwas hängt)</h2>
+    <div class="grid">
+      <div class="card">
+        <h3>1) DNS prüfen</h3>
+        <pre><code>resolvectl status | sed -n '/DNS Servers/,+3p' || true
+cat /etc/resolv.conf
+dig +short _ldap._tcp.companydomain.local SRV
+dig +short _kerberos._udp.companydomain.local SRV</code></pre>
+        <div class="m">DNS muss auf den AD/DNS zeigen – Router/Google-DNS parallel ist oft der Killer.</div>
+      </div>
+
+      <div class="card">
+        <h3>2) Zeit prüfen (Kerberos ist zeitkritisch)</h3>
+        <pre><code>timedatectl</code></pre>
+        <div class="m">Schon wenige Minuten Drift können Kerberos brechen.</div>
+      </div>
+
+      <div class="card">
+        <h3>3) Kerberos Ticket testen</h3>
+        <pre><code># Wenn kinit nicht geht, geht realm join nie.
+kinit Administrator@COMPANYDOMAIN.LOCAL
+klist</code></pre>
+        <div class="m">Wenn hier Fehler kommen: erst DNS/Zeit fixen, dann erneut versuchen.</div>
+      </div>
+
+      <div class="card">
+        <h3>4) Realm prüfen</h3>
+        <pre><code>realm discover companydomain.local
+realm list</code></pre>
+      </div>
+    </div>
+
+    <h2>🧠 Typische Stolperfallen &amp; Lösungen</h2>
+    <div class="card">
+      <h3>Problem: <code>.local</code> wird von Linux als mDNS behandelt</h3>
+      <p class="m">Symptome: Domain wird entdeckt, aber Join/Kerberos scheitert oder verhält sich inkonsistent.</p>
+      <div class="warn">
+        <b>Fix:</b> Avahi/mDNS deaktivieren oder in <code>/etc/nsswitch.conf</code> erzwingen:
+        <pre><code>hosts: files dns</code></pre>
+        <div class="m">Das Script kann das automatisch erledigen (empfohlen bei <code>.local</code>).</div>
+      </div>
+
+      <div class="hr"></div>
+
+      <h3>Problem: <code>KDC reply did not match expectations</code></h3>
+      <p class="m">Ursachen: DNS nicht exklusiv AD/DNS, Reverse-DNS/PTR inkonsistent, Kerberos stolpert über rdns.</p>
+      <div class="danger">
+        <b>Fix:</b>
+        <ul>
+          <li>DNS ausschließlich auf den AD/DNS setzen</li>
+          <li>in <code>/etc/krb5.conf</code>: <code>rdns = false</code></li>
+          <li>PTR prüfen (Beispiel-IP):</li>
+        </ul>
+        <pre><code>dig -x 192.0.2.10</code></pre>
+      </div>
+    </div>
+
+    <h2>🗺️ Ablauf (als “Bild”)</h2>
+    <div class="card">
+      <pre><code>┌───────────────┐
+│   Script Start │
+└───────┬───────┘
+        │
+        v
+┌───────────────────────────┐
+│ Pakete installieren        │
+│ realmd/sssd/adcli/krb5...  │
+└─────────┬─────────────────┘
+          │
+          v
+┌───────────────────────────┐
+│ DNS auf AD/DNS pinnen      │
+└─────────┬─────────────────┘
+          │
+          v
+┌───────────────────────────┐
+│ .local Fix (mDNS/Avahi)    │
+│ + NSS: hosts: files dns    │
+└─────────┬─────────────────┘
+          │
+          v
+┌───────────────────────────┐
+│ Kerberos: rdns=false       │
+│ + kinit Preflight          │
+└─────────┬─────────────────┘
+          │
+          v
+┌───────────────────────────┐
+│ realm join + sssd restart  │
+│ + mkhomedir (optional)     │
+└─────────┬─────────────────┘
+          │
+          v
+┌───────────────────────────┐
+│ Tests: realm list / id     │
+└───────────────────────────┘</code></pre>
+    </div>
+
+    <h2>🧹 Domain verlassen (Unjoin)</h2>
+    <div class="card">
+      <pre><code>sudo realm leave companydomain.local
+sudo systemctl restart sssd || true</code></pre>
+      <div class="m">Optional (nur wenn du komplett „aufräumen“ willst):</div>
+      <pre><code>sudo rm -f /etc/sssd/sssd.conf
+sudo rm -f /etc/krb5.keytab
+sudo systemctl restart sssd || true</code></pre>
+    </div>
+
+    <h2>✅ Unterstützte Systeme</h2>
+    <div class="card">
+      <ul>
+        <li>Debian / Ubuntu (APT-basiert)</li>
+        <li>systemd</li>
+        <li>realmd/sssd stack</li>
+      </ul>
+      <div class="m">Für RHEL/Rocky/Alma (dnf/yum) muss die Paketinstallation angepasst werden.</div>
+    </div>
+
+    <h2>📎 Logs für Support</h2>
+    <div class="card">
+      <pre><code>sudo journalctl -u sssd --no-pager -n 200
+sudo journalctl -u realmd --no-pager -n 200</code></pre>
+    </div>
+
+    <div class="card note">
+      <b>Hinweis zu Beispiel-Daten:</b> Alle Namen, IPs und URLs in dieser README sind fiktiv
+      und dienen nur als Vorlage. Bitte setze deine echten Werte ausschließlich im Script oder in deiner privaten Dokumentation.
+    </div>
+  </div>
+</body>
+</html>