Journal Changer un nom de domaine Windows sur Samba 3.X

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
16
22
mar.
2024

Sommaire

Bonjour à tous,

Parfois on croisent des antiquités et dernièrement j'ai eu droit à un bon vieux Samba 3.5 en mode NT4. L'idée était de préparer une migration vers la branche 4 et en profiter pour changer le nom de domaine car de mauvais choix avaient été fait lors de la mise en prod.

Pour le changement de nom de domaine il est bien plus simple de le faire dans la branche 3, donc se sera la 1ere étape et l'objet de ce journal.

Contexte

Nom de domaine : dom.corp
Nouveau nom de domaine : 205marue
Serveur de prod : svprod01
Service disponible sur svprod01 :
- Samba
- LDAP
- DHCP
- DNS

Préparation

Par chance l'infra est basé sur des VM donc j'ai pu cloner la VM de svprod01 pour faire mes essai hors réseau. C'est un détail important car si vous avez deux Samba lancé sur le réseau avec le même niveau de priorité ils vont passer leurs temps à déclencher des élections pour obtenir le statut de contrôleur de domaine et du coups vos machines Windows vont perdre les pédales.

Prérequis

  • serveur wapt (pas obligatoire mais pratique pour gérer la sortie/entrée des machines dans le domaine sans devoir intervenir physiquement sur les pc);
  • installer sur tout les pc powershell (uniquement si vous avez choisi l'option wapt et/ou script)

- faire un snapshot de la vm svprod01

Feux, partez !

** /!\ Je le répète : faite un snapshot de la vm svprod01 /!\ **

La 1ere étape est de sortir toutes les machines du domaine. J'ai utilisé se script :

$computer = $env:computername 
$username = "dom.corp\administrateur" 
$securepass = ConvertTo-SecureString "PASSWORD" -AsPlainText -Force 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $securepass 

Remove-computer –credential $cred ` 
-Passthru –Verbose –Restart ` 
–Workgroupname "mig" -Computername $computer ` 
-force 

Adapté la valeur PASSWORD avec le mot de passe administrateur du domaine. Attendre que toutes les machines ai redémarré.

Rappel : Est-ce que je vous ai déjà dit de faire un snapshot de la vm svprod01 ?!

Connecté en ssh sur svprod01

--- Réseau ---

Modifier /etc/resolv.conf --> remplacer dom.corp par 205marue
Modifier /etc/hosts --> remplacer dom.corp par 205marue
Rebooter

--- DHCP ---

Arrêter dhcp --> service dhcpd stop
Modifier fichier /etc/dhcpd.conf

Remplacer dom.corp par 205marue
Peut être non présent sur votre config : Remplacer "\003dom\007corp\000" par "\003205marue\000"
Remplacer server-name "svprod01.dom.corp" par "svprod01.205marue"

--- Samba ---

Arrête samba (smb et nmb)
Modifier /etc/samba/smb.conf
- workgroup = 205marue
- Passdb backend = […]192.168.x.xx <--- adresse ip du serveur ldap
- Idmap backend = […]192.168.x.xx <--- adresse ip du serveur ldap

--- LDAP ---

Attention c'est ici qu'il y a le plus à faire.

Si vous avez utilisez des noms dns pour définir l'adresse du serveur il me semble plus logique et remplacer par les IP, comme ça si le DNS tombe vous aurez toujours accès à l'annuaire.
Modifier /etc/ldap.conf --> remplacer nomduserveurldap.dom.corp par 192.168.x.xx
Modifier /etc/openldap/ldap.conf --> remplacer nomduserveurldap.dom.corp par 192.168.x.xx

Arrêter ldap --> service ldap stop
A partir de là je vous déconseille de faire un ls sous peine de devoir attendre un peu de temps si le module pam du serveur a été paramétré pour aller chercher les comptes utilisateurs dans l'annuaire ldap.

Exporter l'annuaire LDAP --> slapcat –f /etc/openldap/slapd.conf -l /root/backup/ldap/backup.ldif

Dans backup.ldif, remplacer dom.corp par 205marue --> avec vim :%s/dom.corp/205marue/g

Supprimer dans /var/lib/ldap/ --> rm -f __* .bdb log

Modifier le fichier /etc/openldap/slapd.conf --> avec vim :%s/dom.corp/205marue/g

Importer le backup --> slapadd –f /etc/openldap/slapd.conf -l backup.ldif

Remettre les bons droits dans /var/lib/ldap --> chown ldap:ldap * (à adapter suivant votre distribution, ici c'est du redhat).

--- smbldap-tools ---

Peut être nom présent sur votre install
Dans /etc/smbldap-tools/smbldap.conf
Remplacer sambaDomain = "dom.corp" par "205marue"
Remplacer masterLDAP = "nomduserveurldap.dom.corp" par 192.168.x.xx <-- ip de votre serveur ldap
Remplacer sambaUnixIdPooldn="[…]dom.corp[…] par […]205marue[…]

--- DNS ---

Copier les fichiers zone db.dom.corp en db.205marue et db.rev-dom.corp en db.rev-205marue
Dans fichier db.marue205 remplacer --> avec vim :%s/dom.corp/205marue/g
Dans fichier db.rev-205rue remplacer --> avec vim :%s/dom.corp/205marue/g
Editer le fichier /etc/named.conf.local et copier la zone dom.corp et le reverse à la fin du fichier, remplacer par dom.corp par 205marue
Mettre en commentaire dans /etc/named.conf.local la zone dom.corp et le reverse
Modifier droit /var/named/ --> chown named:named db* à adapter suivant votre distribution

--- Relancer ---

LDAP
DNS
NSCD
DHCP
SAMBA

Si tout est ok faite le test d'intégrer manuellement une machine au domaine, vérifier la résolution DNS. Si certaines machine Windows ont du mal avec le DNS il va peut être falloir vider le cache sur ces machines

ipconfig /flushdns

Si tout est il reste plus qu'à lancer le script d'intégration avec wapt

$computer = $env:computername 
$username = "205marue\administrateur" 
$securepass = ConvertTo-SecureString "PASSWORD" -AsPlainText -Force 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $securepass 

add-computer -computername $computer ` 
-DomainCredential $cred ` 
-DomainName "205marue" ` 
-Restart -Force –PassThru 

Et voila reste plus qu'à attendre les dernières corrections impossible à anticiper :) Bien sur c'est une procédure qui sera a adapté suivant votre environnement et il est possible que certain point soit manquant ou alors de trop dans ma version.

Prochaine étape le changement de version.

  • # Petite remarque Vim

    Posté par  (site web personnel) . Évalué à 2 (+1/-0).

    Merci Philippe pour ce journal.

    J'ai noté lors de l'adaptation du fichier backup.ldif l'emploi de Vim avec une commande que j'adore :
    :%s/<pattern>/<remplacement>/g
    Soit "sur toutes les lignes du fichier" (:%) "remplacer <pattern> par <remplacement>" (s/<pattern>/<remplacement>/) "pour l'ensemble des expressions <pattern> de la ligne" (g).
    Personnellement je fais toujours suivre "g" par "c" (confirm) afin de pouvoir valider chaque changement. On perd un peu de temps, mais un remplacement malheureux est si vite arrivé…

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.