10 May 2018, 00:00

Mise en place d'une réplication/failover AD/DNS/DHCP/DFS sur 2 Windows Server

Préambule

Je pars d’une situation où j’ai déjà un serveur Windows 2012R2 configuré en controleur de domaine, avec GPO et partage de fichiers. Je veux ajouter un 2e serveur sous Windows Server 2016, qui fasse office principalement de failover si un des 2 serveurs tombe en panne. Ceci pour les rôles de contrôleur de domaine, de serveur DHCP, serveur DNS, de serveur SMB et déploiement automatique de partages réseaux et d’imprimantes.

Le domaine est WINDOMAIN, le serveur actuel est WINDOMAIN\DC1.

Configurer le serveur secondaire

On commence par relier le serveur au réseau, on lui configure une adresse ip fixe, le hostname souhaité (ici DC2). on le connecte au domaine.

On peut ensuite installer le rôle AD DS, puis promouvoir le serveur en contrôleur de domaine.
La réplication de l’AD se fait automatiquement.

DNS

Intégration à l’AD

Normalement, le serveur DNS est installé et configuré en même temps que le serveur AD DS. Ceci permet aux enregistrements DNS d’être stockés dans l’AD directement, et donc d’être répliqués entre tous les controleurs de domaine. Cela se vérifie dans le gestionnaire DNS, avec un clic droit -> Propriétés sur une zone, on doit voir l’Etat “Intégré à AD”.
Ceci ne fonctionne que si les 2 serveurs DNS sont aussi des controleurs de domaine, ce qui est le cas ici. Si un serveur DNS n’est pas controleur, il faut passer par la création sur le second serveur d’une zone secondaire qui pointera vers le premier serveur).

Un peu plus d’infos chez Microsoft

Redirecteurs

Toujours dans le gestionnaire DNS, dans les propriétés de chaque serveur, il faut penser à aller vérifier les redirecteurs (serveur DNS utilisé si le serveur intégré ne sait pas résoudre, c’est-à-dire pour tout ce qui ne relève pas du domaine). Typiquement, on peut mettre l’IP de notre box, ou 8.8.8.8 par exemple. Il y’a aussi l’option de se rapatrier sur les serveurs DNS racines en cas d’indisponibilité des redirecteurs. On trouve la liste de ces serveurs dans l’onglet “Indications de racine”.

Distribution par DHCP

Enfin, il faut aller paramétrer les options du DHCP pour qu’il distribue les 2 serveurs DNS. Pour ceci, dans DC1 (actuellement le seul serveur DHCP), aller dans le gestionnaire DHCP, IPv4 -> Étendue -> Options d’étendue et ajouter l’IP du nouveau serveur dans les Serveurs DNS (006).

Note : si un des 2 serveurs venait à être en panne/hors-ligne durablement, penser à s’assurer que le serveur toujours en place est bien distribué en serveur primaire, ceci accélérera la résolution DNS.

DHCP

Sur DC2, installer le rôle Serveur DHCP. Ne pas configurer d’étendue maintenant, elle va être automatiquement répliquée depuis DC1.
Aller sur DC1 dans le gestionnaire DHCP, IPv4 -> Clic-droit sur “Étendue” -> Configurer un basculement Suivre les étapes en ajoutant l’IP du serveur secondaire (DC2). Au cours de la création du basculement, les options du serveur DHCP de DC1 seront répliquées sur DC2 (étendue, route par défaut, serveur DNS etc°. Toutefois ces options ne seront par la suite plus synchronisées automatiquement. Pour les synchroniser, on peut lancer sur le serveur “source”, qui possède les informations à jour, la commande Powershell suivante :

Invoke-DhcpServerv4FailoverReplication

qui va répliquer l’ensemble de ses paramèters sur tous les serveurs partenaires.
Il y’a aussi un script planifié qui permet de faire ceci automatiquement, disponible sur cette page avec l’archive zip mirroré sur mon memo.

18 Dec 2017, 00:00

Notes en vrac sur Azure AD Connect et Office 365

Mise en cohérence des domaines

Dans mon cas, l’AD avait été pis en place il y’a longtemps, le domaine local était du genre domain.oldcompany.com, mais les utilsateurs utilisaient aujourd’hui des adresses mail du genre user@newcompany.fr, et l’abonnement O365 avait pour domaine initial unusedcompany.onmicrosoft.com.

Dans ces conditions, la synchro de l’AD vers Azure donnait des identifiants du type nomprenom@unusedcompany.onmicrosoft.com, ce qui rend tout plus pénible, par exemple la connexion à OWA qui ne marche pas avec d’éventuels alias, mais qu’avec cet identifiant.

Comme le domaine initial ne peut être changé, il faut ajouter et vérifier le domaine newcompany.fr dans la gestion des domaines sur le portail O365, connecté en admin de l’abonnement. Pour le vérifier, il faudra aller mettre une preuve TXT dans la zone DNS.
Il faut ensuite ajouter un nouveau suffixe UPN au domaine (Outils d’administration -> Domaines et approbations Active Directory -> Propriétés -> Suffixes UPN), on ajoutera ici newcompany.fr car c’est l’adresse couramment utilisée par l’entreprise. Il faut ensuite modifier les suffixes UPN des utilisateurs dans les Utilisateurs et Ordinateurs AD, pour les passer de p.nom@domaine.oldcompany.fr à p.nom@newcompany.fr. Il est possible de le faire en PowerSehll, par exemple avec ce script

Ainsi, les utilisateurs auront un seul couple adresse/password pour se connecter à tout (Session sur le domaine, OWA, Portail O365 pour télécharger les logiciels etc).

Préparer l’AD local pour la synchro

Pour synchroniser un Active Directory local avec les services Azure Active Directory, il faut commencer par préparer l’AD local (notamment étendre le schéma AD sur un serveur Windows 2012). Cette page de Microsoft détaille beaucoup plus la précédure.

Il faut récupérer une installation d’Exchange 2013, par exemple sur cette page de chez Microsoft. On la décompresse, on lance cmd puis la commande suivante : Setup.exe /PrepareSchema /IAcceptExchangeServerLicenseTerms

Une fois que le schéma est préparé, on peut identifier les incohérences dans l’annuaire avant de synchroniser avec O365. Pour ça, on utilise l’outil IdFix (DL). Dans le cas où une offre dediée à O365 a été souscrite, il faut aller dans les paramétres et choisir “Dedicated” au lieu de “Multi-tenants”. On clique sur Query, on le laisse chercher, on vérifie puis acccepte les modifications, on fait Apply et on voit ce que ça donne. Si tout va bien, on peut passer à la synchro avec Azure. Si il y’a des problèmes (par exemple attributs non-existants), revérifier que l’AD a bien été préparé tel qu’indiqué sur le tuto de Microsoft.

Mise en oeuvre Azure AD Connect

start-adsyncsynccycle -policytype delta

PowerShell et Office 365

Envoi en tant que groupe : Set-distributionGroup -Identity “group” -GrantSendOnBeHalfto “user@domain.com”

13 Mar 2017, 00:00

Installer Windows 8.1 x64 sur un disque externe USB3

Le tuto suivant a pour but d’installer Windows 8.1 sur un disque externe. En effet, bien que ce soit impossible via une install traditionnelle (par DVD ou clé USB), il est possible de déployer une install Windows sur un disque externe via l’utilitaire DISM, et le disque acceptera alors de booter.

Il est probable, mais non testé, que ce tuto fonctionne avec Windows 10, et il est adaptable pour Windows 7 (avec l’utilitaire Imagex.exe au lieu de DISM).

Prérequis :

  • Un DVD d’install de Windows 8.1 x64 (ou une image montée)
  • Un disque externe USB3 (ce devrait fonctionner en USB2, mais nous perdons beaucoup, beaucuop de performances). TOUTES LES DONNÉES PRÉSENTES SERONT EFFACÉES
  • Un système Windows 8.1 x64 en cours de fonctionnement

Etapes (penser à adapter les lettres des commandes si nécessaire) :

  • Commencer par monter le DVD d’install de Windows 8.1 x64. Dans mon exemple, il sera monté sur le lecteur G:
  • Lancer une invite de commande en tant qu’administrateur
  • Dans mon cas, j’ai un DVD qui contient à la fois l’édition Core et Pro. Il faut commencer par identifier les index de ces éditions via la commande
    dism /get-wiminfo /wimfile=G:\sources\install.wim
    Souhaitant installer la version Pro, j’utiliserai l’index 1.
  • On lance ensuite la commande diskpart pour partitionner le disque externe.
  • Avec
    list disk
    on identifie le bon disque. Dans mon cas, c’est le disque 1. D’où :
    select disk 1
    puis
    clean
    qui va supprimer toute la table de partition.
  • On crée une partition de boot en FAT32, ayant l’avantage d’être accessible aussi pour les Mac :
    create partition primary size=350
    puis
    format fs=fat32 quick
  • On la rend bootable via
    active
    puis on lui donne une lettre via
    assign letter=B
  • On crée la partition contenant le système Windows lui-même :
    create partition primary
    puis
    format fs=ntfs quick
    puis
    assign letter=Z
  • On quitte Diskpart via exit.
  • On va ensuite déployer l’image Windows sur la aprtition assignée en Z via
    dism /Apply-Image /ImageFile:G:\sources\install.wim /Index:1 /ApplyDir:Z:\
    Adapter l’index repéré précedemment. Cela devrait mettre quelques minutes, puis apparaîtra le message “L’opération a réussi”.
  • On copie les fichiers de démarrage via
    bcdboot Z:\Windows /s B: /f all
    Le paramètre /f sert à spécifier le type de démarrage. Avec ALL, on install aussi bien un boot BIOS qu’un boot UEFI.

Il n’y a plus qu’à démarrer sur le disque externe ! (en espérant que le BIOS/UEFI de votre pc soit suffisamment clair et souple pour permettre le démarrage sur n’importe quel disque, y compris externe, ce qui n’est pas toujours gagné…)

Sources : Article sur Slice42 et article sur Bleeptobleep

14 Sep 2015, 00:00

Accéder à un partage WebDAV avec l'explorateur windows

Windows supporte l’accès aux partages WebDAV via Explorer, à condition que le service WebClient soit démarré. ce dernier est par défaut en mode manuel, et ne démarre pas lorsque l’on fait appel à un url WebDAV. Il faut donc le passer en automatique, et le démarrer à la main si on ne souhaite pas redémarrer.

Il est conseillé d’aller dans le Panneau de Configuration, dans les “Options internet”, onglet “Connexions” puis “Paramètres LAN” et de désactiver la detection automatique de la connexion. En effet, celle-ci attend un timeout de la detection d’un proxy à chaque requête WebDAV, ce qui ralentit énormément la connexion.

Ensuite, nous pouvons accéder à une URL type \\webdav.monserveur.com[@SSL][@80]\mon\dossier\partage ou encore http[s]://webdav.monserveur.com/mon/dossier/partage[:80]. Les caractères entre crochets sont à spécifier si l’on souhaite utiliser une connexion HTTPS sécurisée. De même, il est possible de spécifier un numéro de port non standard.

On peut également le conecter en tant que lecteur réseau. Si l’on coche “Mémoriser les informations d’identification”, le nom d’utilisateur sera conservé, mais pas le mot de passe, qu’il faudra malgré tout entrer à chaque ouverture de session.

Par défaut, Windows n’autorise pas le téléchargement de fichiers de plus d’une certaine taille (un fichier de 60Mo n’est pas passé). Il faut pour cela aller à la clé de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters, et passer la valeur ‘FileSizeLimitInBytes’ à 4294967295 (source)

On peut également créer un batch qui permet de libérer une lettre de lecteur et de l’assigner au partage, comme ceci : bat webdav.bat net use Z: /delete net use Z: \\webdav.monserveur.com@SSL\mon\dossier\partage /user:monUser

27 Mar 2015, 00:00

Verrouiller automatiquement une session lors de son ouverture sous Windows 7

On peut vouloir, pour diverses raisons, ouvrir une session automatiquement au démarrage de la machine, mais la verrouiller aussitôt. Pour ceci, il suffit de créer un fichier sessionLock.bat, qui contiendra cette unique ligne :

rundll32 user32.dll,LockWorkStation

Placer un raccourci vers ce fichier dans le dossier de démarrage de la session, et hop ! Lorsque la session s’ouvre, elle est immédiatement verrouillée.

28 Jan 2015, 00:00

Créer une clé USB d'install de Windows 8.1 Pro|Core 64 bits, compatible Bios (MBR) et UEFI (GPT)

Pour commencer, il y a besoin d’une clé USB 8Go formatée en FAT32. Copier/coller tous les fichiers de l’ISO de Windows 8 sur la clé. Il est possible de récupérer les isos chez Microsoft . Vérifier le checksum des fichiers.

L’image telle quelle est directement bootable en UEFI. Mais elle n’installera que la version pour laquelle elle est prévue (Core ou Pro). Pour permettre le choix, ajouter dans le dosssier \Sources le fichier ei.cfg structuré tel quel :

[EditionID]

[Channel]
Retail

[VL]
0

Ensuite, il va falloir la rendre bootable en mode BIOS. Pour ceci, brancher la clé sur un Windows 64 bits, et lancer un terminal en administrateur, puis rentrer la ligne ci-dessous, en remplacant X par la lettre de la clé

X:\boot\bootsect.exe /nt60 X:

14 May 2014, 00:00

Afficher les Propriétés du serveur d'impression sous 7 et 8 sans imprimante d'installée

Cette boite de dialogue, sous 7 et 8, n’est accessible par clic que via la barre d’actions en haut de l’Explorer, lorsqu’une imprimante est sélectionnée. Si on n’a pas d’imprimante, on ne peut pas.

Il suffit donc de lancer la commande printui /s Le commutateur /s sert à lancer l’interface graphique. Sans lui, on gère tout en ligne de commande.

14 May 2014, 00:00

Executer un processus en tant qu'utilisateur System sous Windows 8 (et probablement Vista et 7)

Parfois, bien que l’on éxécute un programme en tant qu’administrateur de l’ordinateur, on peut se retrouver avec certaines restrictions. Par exemple si l’on veut modifier les lés du registre à HKLM\System\CurrentControlSet\Enum . Pour contourner ceci, on peut lancer l’utilisatire PsExec de Sysinternals, avec les options -i qui permet que le programme soit lancé interactivement sur le bureau de l’utilisateur, et -s qui demande à utiliser le compte system.

Par exemple,

C:\Users\moi\path\vers\psexec.exe -i -s regedit

permettra de modifier le registre à notre guise. À noter qu’il faut lancer la commande dans un shell cmd lancé avec les droits administrateur.

Cette info a été trouvée grâce à ces posts, bien utiles malgré un langage aussi fleuri qu’une sépulture d’ancien combattant un 8 mai.

14 May 2014, 00:00

Supprimer une imprimante fantome sous Windows 7 et 8

Il peut arriver qu’une imprimante ne soit pas supprimable dans le gestionnaire d’imprimantes. Plus d’infos ici : Problème d’installation d’imprimantes dans Windows 7

Imprimante locale

Dans le cas d’une imprimante locale, il s’agit le plus souvent d’une file d’attente qui ne veut pas se vider. Or il est impossible de supprimer une imprimante dont la file d’attente n’est pas vide. Pour forcer le vidage de la file d’attente :

  • couper le service spouleur d’impression, soit par l’interface graphique (services.msc), soit avec la commande net stop spooler
  • supprimer tous les éléments du dossier C:\Ẁindows\System32\spool\PRINTERS\
  • relancer le service Spouleur d’impression (net start spooler)

Les files d’attente doivent être vides, et les imprimantes peuvent être supprimées.

Imprimante réseau

Dans le cas d’une imprimante réseau, ce peut être un peu plus compliqué. Il arrive qu’une imprimante réseau, même avec une file d’attente vide, ne puisse être supprimée. Ceci est particulièrement vrai lors d’une imprimante déployée automatiquement par une GPO (mal) appliquée à un domaine.

Sous 7

Sous 7, il suffit généralement d’aller dans la base de registre, d’aller à la clé HKCU\Printers\Connections et de supprimer la clé correspondant à l’imprimante récalcitrante. Un coup de redémarrage de Spouleur d’impression (voir ci-dessus) et c’est réglé, elle n’apparaît plus.

Sous 8

Sous Windows 8, bien que cette clé existe aussi, ce n’est pas elle qui contrôle l’existence des imprimantes. Il faut aller éditer la base de registre en tant qu’utilisateur System (voir ce post), et aller à la clé HKLM\SYSTEM\CurrentControlSet\Enum\SWD\PRINTENUM\, trouver la ou les clés des imprimantes à supprimer (via la valeur FriendlyName), et les supprimer. Si les connexions automatiques via GPO aux imprimantes partagées sont à refaire au propre, il faut redémarrer l’ordinateur, puis réappliquer la commande gpupdate /force.

Normalement, cela devrait suffire. Si l’on souhaire effacer toutes les traces de l’imprimantes dans le registre, voilà les différents emplacements mentionnant une imprimante partagée dans le registre. Notez que je mentionne HKCU pour l’utilisateur concerné, mais que si regedit est lancé via psexec, il faudra aller chercher dans HKU\SID.

  • HKCU\Printers\Connections
  • HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices\
  • HKCU\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts\
  • HKCU\Software\Policies\Microsoft\Windows NT\Printers\PushedPrinterConnectionStore\{XXXXX-XXX-XXX....XXXX}\

  • HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider\SID\Printers\Connections\

  • HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider\Servers\SERVEUR-D-IMPRESSION-DU-DOMAINE\

  • HKLM\SYSTEM\CurrentControlSet\Enum\SWD\PRINTENUM\

Penser à redémarrer la machine après ces manips, et éventuellement à réappliquer la commande gpupdate /force.

20 Apr 2014, 00:00

Boucle pour appliquer un script à tous les utilisateurs d'un domaine

Si l’on souhaite appliquer un script à tous les utilisateurs d’un domaine, il faut commencer par générer la liste de tous ces utilisateurs. Ceci peut se faire via la commande powershell

dsquery user -o samid -limit 250 > C:\path\to\domainUsers.txt

qui va lister tous les utilisateurs du domaine, sous la forme SAM ID (nom raccourci), entourés de guillemets. L’otion -limit est facultative, mais par défaut dsquery ne liste que les 100 premières entrées (soit -limit 100).

Puis on éxecute le script suivant

@echo off

REM on parcourt le fichier domainUsers.txt et on passe chaque ligne en argument
for /f "delims=" %%i in ('type C:\path\to\domainUsers.txt') do (C:\path\to\myScript.bat %%i)

Il faudra penser, dans le script, lorsque l’on souhaite récupérer le paramètre, à utiliser %~1 et non %1, ce qui permet de prendre la valeur sans les guillemets.