Microsoft Windows (Servers et Clients)

Microsoft Exchange

Exchange 2007 : Indexation et recherche dans les mailboxes

Le moteur de recherche d'Exchange 2007 a été nettement amélioré par rapport aux moteurs d'indexation/recherches qui étaient disponibles dans Exchange 2000/2003. La nouvelle version est moins gourmande en ressources, plus rapide, effectue des recherches à l'intérieur des pièces jointes, et il est active dès l’installation.

Activer/désactiver "search"

Pour activer ou désactiver la recherche Exchange, ouvrez Exchange Management Shell

Exécutez la commande suivante pour voir si la recherche est activé sur une boîte aux lettres spécifique:

 Test-ExchangeSearch <mailbox name>

ou créer une liste des mailboxes par base de données où la fonction est activée:

 Get-MailBoxDatabase | select name, indexenabled

Pour activer la fonction:

 Set-MailboxDatabase <name> -indexenabled:$true

Pour la désactiver:

 Set-MailboxDatabase <name> -indexenabled:$false

Pour désactiver la fonction completement sur le serveur, il suffit de stopper le service d'Indexation:

 net stop "Microsoft Exchange Search Indexer"

Gardez à l'esprit que si vous exécutez Outlook 2007 en mode "cached", la recherche "Exchange" n'est pas disponible. La recherche est traitée par le service local du PC client. Dans Outlook 2003, le logiciel effectue une analyse linéaire de chaque message (un par un).

Tester la fonctionnalité "Search"

Il existe une commande powershell qui vous permet de tester si la recherche / indexation fonctionne comme prévu. Par défaut, le délai d'attente de réponse est réglé sur 60 secondes, mais en réalité, vous devriez obtenir des résultats en moins de 10 secondes. (de sorte que vous pouvez éventuellement accélérer le test en fixant un délai de réponse de 20 secondes ou plus, ce qui vous permettra de tester une plus grande part de boîtes aux lettres à l'aide d'un script, en moins de temps.
Utilisez la commande suivante pour exécuter un test sur toutes les boîtes aux lettres sur votre serveur:

 Get-mailbox | Test-ExchangeSearch –IndexingTimeout 20 | Format-table

Vous allez voir dans votre fenêtre powershell une bar de progression de la fonction de test: "TestSearch"

Lorsque "ResultFound" réponds "Faux" et le champ "SearchTime" donne un résultat de "-1", alors la recherche ne fonctionne pas pour cette boîte aux lettres.

  Faites attention aux éventuelles erreurs (autres) lors de l'exécution de cette commande. Elles devraient vous donner des informations plus précises quand a la(les) raison(s) pour laquelle(lesquelles) la recherche ne fonctionne pas pour une boîte aux lettres donnée.

Si vous avez des bases de données multiples, vous pouvez utiliser le script suivant pour limiter le critère à seulement une base de données qui vous intéresse:

Get-Mailboxdatabase "Server\Database" | Get-mailbox | Test-ExchangeSearch –IndexingTimeout 20 | Format-table

Que faire si "Search" ne fonctionne pas ?

Outlook Web Access : Si vous recevez un message qui dit: "results will take a long time to appear because Microsoft Exchange Search is unavailable. Results will not include matches in the e-mail body", dans ce cas, il se peut que vous ayez un indexe corrompu.
Parfois, quand vous migrez (ou créez) des mailboxes, les premiers résultats de l'indexations sont fait "dans le vide" ou sur une partie non encore initialisée, ce qui produit un indexe corrompu.
Utilisez la commande PowerShell pour exécuter un test de recherche sur chaque boîte aux lettres (comme expliqué plus haut dans ce post). Regardez la colonne "ResultFound" et le "SearchTime". Vous devriez voir un problème pour l'utilisateur qui a signalé le problème.

Les index de recherche ne sont (heureusement) pas stockées dans les bases de données Exchange. Les données d'indexation sur une base de données spécifique sont stockées dans un répertoire sur le même emplacement que les fichiers de base de données.
Le nom du répertoire suit la convention CatalogData-<guid>-<guid>, où le <guid> premier est le GUID de la base de données et le second représente le <guid> d'instance, instance qui est utilisée dans les scénarios de cluster exchange de marquer une distinction entre les nœuds . Ce qui suit est un exemple de nom de dossier:

 CatalogData-b56624f3-bf19-4463-926f-d4705ac3dd08-cc64dd2d-2428-4f12-bba2-79d6d34c4d27

Le chemin typique (ou par défaut) pour les fichiers  ".edb" et les fichiers du répertoire CatalogData est: C:\Program Files\Microsoft\Exchange Server\ Mailbox\First Storage Group\

L'index de recherche peut être non synchronisé avec la base de données après une reprise de crash ou de démontage forcé de la base de données (en cas de dépassement de taille de base de données par exemple), et que les fichiers de transaction (transaction logs) sont ré-appliqué sur la base de données. Le moteur de recherche Exchange ne lit pas les fichiers journaux joué pour l'indexation.
J'ai aussi vu des cas où l'indice a été corrompu pendant ou après le déplacement de la boîte aux lettres à partir d'un serveur 2003 vers un serveur 2007. Dans ces situations, vous devez reconstruire le catalogue d'index de recherche.

Vous pouvez procéder comme ceci pour reconstruire un catalogue d'indexe.

  • Arretez le service "Microsoft Exchange Search indexer"
  • Détruisez le catalogue en cause (n'hésitez pas a utiliser la commande powershell pour confirmer le nom du catalogue "GetSearchIndexForDatabase –all")
  • Relacer le service "Microsoft Exchange Search indexer.

Il existe aussi une procédure powershell qui effectue les même action pour vous:

ResetSearchIndex.ps1 [-force] databasename
ResetSearchIndex -Force -All (si vous désirez effectuer l'opperation sur TOUTES vos base de données)
[PS] C:\>ResetSearchIndex.ps1 "Mailbox Database"

WARNING: Waiting for service ‘Microsoft Exchange Search Indexer (MSExchangeSearch)’ to finish stopping…
WARNING: Waiting for service ‘Microsoft Exchange Search Indexer (MSExchangeSearch)’ to finish stopping…
WARNING: Waiting for service ‘Microsoft Exchange Search Indexer (MSExchangeSearch)’ to finish stopping…
MSExchangeSearch service stopped
removing: D:\Exchange Server\Mailbox\First Storage Group\CatalogData-fb802b8a-fd2a-4da2-9dc5-7dc41c398409-cc64dd2d-2428-4f12-bba2-79d6d34c4d27

Confirm
Are you sure you want to perform this action?
Performing operation "Remove Directory" on Target "D:\Exchange Server\Mailbox\First Storage Group\CatalogData-fb802b8a-fd2a-4da2-9dc5-7dc41c398409-cc64dd2d-2428-4f12-bba2-79d6d34c4d27".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):A

MSExchangeSearch service Started

Note : vous pouvez utilisez le paramètre -all de la commande  ResetSearchIndex.ps1 pour effacer et reontruire l'indexe pour toutes les mailboxes.

Maintenant vous pouvez executer la commande Test-ExchangeSearch a nouveau pour voir les résultat et confirmer la bonne résolution du problème.

Astuce : Voir le statut de votre Base de données

[PS] C:\>Get-MailboxDatabase -status | format-list

JournalRecipient :
MailboxRetention : 30.00:00:00
OfflineAddressBook : \Default Offline Address List
OriginalDatabase :
PublicFolderDatabase : SERVER\Second Storage Group\Public Folder Datab
ase
ProhibitSendReceiveQuota : 2355MB
Recovery : False
ProhibitSendQuota : 2GB
IndexEnabled : True
AdministrativeGroup : Exchange Administrative Group (XXXXXXXXXXXXXXX)
AllowFileRestore : False
BackupInProgress : False
CopyEdbFilePath :

DatabaseCreated : True
Description :
EdbFilePath : D:\Exchange Server\Mailbox\First Storage Group\
Mailbox Database.edb
ExchangeLegacyDN : /o=organization/ou=Exchange Administrative Group (XXXXXXXXXXXXXXX)/cn=Configuration/cn=Serve
rs/cn=APOLLO/cn=Microsoft Private MDB
HasLocalCopy : False

DeletedItemRetention : 14.00:00:00
LastFullBackup : 19/09/2007 3:03:30
LastIncrementalBackup :
MaintenanceSchedule : {zo.1:00-zo.5:00, ma.1:00-ma.5:00, di.1:00-di.5
:00, wo.1:00-wo.5:00, do.1:00-do.5:00, vr.1:00-
vr.5:00, za.1:00-za.5:00}
MountAtStartup : True
Mounted : True
Organization : organization
QuotaNotificationSchedule : {zo.1:00-zo.1:15, ma.1:00-ma.1:15, di.1:00-di.1
:15, wo.1:00-wo.1:15, do.1:00-do.1:15, vr.1:00-
vr.1:15, za.1:00-za.1:15}
RetainDeletedItemsUntilBackup : False
Server : SERVER
ServerName : SERVER
StorageGroup : SERVER\First Storage Group
StorageGroupName : First Storage Group
IssueWarningQuota : 1945MB
EventHistoryRetentionPeriod : 7.00:00:00
Name : Mailbox Database
MinAdminVersion : -2147453113
AdminDisplayName : Mailbox Database
ExchangeVersion : 0.1 (8.0.535.0)
DistinguishedName : CN=Mailbox Database,CN=First Storage Group,CN=InformationStore,CN=SERVER,CN=Servers,CN=Exchange Administrative Group (XXXXXXXXXXXXX),CN=Administrative Groups,CN=organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=dc1,DC=dc2
Identity : SERVER\First Storage Group\Mailbox Database
Guid : fb8152b8a-f47a-4bae-914d-7ebda1c397809
ObjectCategory : dc1.dc2/Configuration/Schema/ms-Exch-Private -MDB
ObjectClass : {top, msExchMDB, msExchPrivateMDB}
WhenChanged : 11/09/2007 20:11:58
WhenCreated : 11/09/2007 20:10:37
OriginatingServer : server.dc1.dc2
IsValid : True

Source:

http://www.corelan.be/index.php/2007/09/19/exchange-2007-indexing-and-searching-mailboxes/
http://technet.microsoft.com/en-us/library/aa995966.aspx
http://www.exchangeninjas.com/ExchangeSearchFAQ

Distribution List ET Sécurity Group

Sous Windows 2000, il fallait faire une Distribution List pour le courrier et Créer aussi un group de sécurity pour gérer les sécurités sur le FilesSystem... en 2008 (avec Exchange 2007) plus de problèmes... a condition que le schéma de votre AD soit au moins 2003...( c'est mon cas en tout les cas).

Il est possible de transformé une Distribution List en Security group...

  • Dans Active Directory for Users and Computers (ADUC pour les intimes), sélectionnez la liste a transformer...
  • Choisir “properties” et cochez "security groups" (au lieu de "Distribution List").... faire « OK »
  • Elle devient donc « Security Group – Universal » avec une adresse email...

Un rapide check dans la console Exchange, le type devient « Mail-Enabled Universal Security Group ».

On peut lui envoyer des emails (comme avant) ET le sélectionner pour limiter les accès à un Folder (ou une resources)...

GPO: Deployer un certificats authority

 

Quand vous décidez d’installer un certification pour sécuriser un serveur, il faut ensuite déployer les certificats chez tous les clients... Souvent on réalise cela poste par poste... mais il y a moyen de faire plus simple...

Pour ne pas perdre de temps lors de l’installation des certificats ordinateurs et utilisateurs, il est possible de paramétrer l’inscription automatique des certificats pour un domaine à l’aide de GPO.

Pour cela on se connecte sur GPMC (Group Policy Management Console), cela se déroule en 2 étapes :

1ère Étape : Configuration de l'Ordinateur

  • Sous le nom de domaine concerné, dans l'unité d'organisation désirée, on choisi l'une des policies, ou on crée une nouvelle...
  • Ensuite il faut déplier Computer Configuration > Windows Settings > Security Settings > Public Key Policies
  • Ensuite il faut double-cliquer sur Autoenrollment Settings, sélectionner Enroll certificates automatically (coché par défaut) et cocher les deux options qui sont en dessous (renouveler et mettre à jour)
  • Dans Automatic Certificate Request Settings, faire click droit > New > Automatic Certificate Request...
  • Faire suivant et sélectionner Computer puis terminer
  • Dans Trusted Root Certification Authorities, faire click droit > Import... Choisir le certificat à Importer

2ème Étape : Configuration Utilisateur

  • Il faut déplier User Configuration > Windows Settings  > Security Settings  > Public Key Policies 
  • Ensuite il faut double-cliquer sur Autoenrollment Settings, sélectionner Enroll certificates automatically (coché par défaut) et cocher les deux options qui sont en dessous (renouveler et mettre à jour)

Voilà le déploiement des certificats se fera lorsque la mise à jour des GPO se lancera, vous pouvez forcer la mise à jour des GPO en lançant :
gpupdate /sync ou /force si vous voulez forcer la mise à jour. Pour voir si les certificats ont bien été déployer on peut lancer la commande gpudate sur un client et ensuite voir dans la mmc autorité de certification si les certificats apparaissent.

Attention: Vous devez appliquer cette GPO sur une OU qui contient les ordinateurs, j'ai mis plusieurs heures à comprendre pourquoi cette #@### de GPO n'a pas voulu ajouter le certificat sur le PC de test, jusqu'à ce que j'ajoute la GPO sur l'OU contenant le PC de test.

 

RoboCopy : Robust File Copy

RoboCopy ne veut pas dire Robot de Copie, mais bien Robust File Copy...

vous pouvez utiliser ce logiciel pour copier, déplacer (migrer), mirrorer etc... des fichiers, dossiers voir même des disques entiers, suivant votre envie...

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------
  Started : Mon Jul 23 17:16:17 2012

              Usage :: ROBOCOPY source destination [file [file]...] [options]

             source :: Source Directory (drive:\path or \\server\share\path).
        destination :: Destination Dir  (drive:\path or \\server\share\path).
               file :: File(s) to copy  (names/wildcards: default is "*.*").

::
:: Copy options :
::
                 /S :: copy Subdirectories, but not empty ones.
                 /E :: copy subdirectories, including Empty ones.
             /LEV:n :: only copy the top n LEVels of the source directory tree.

                 /Z :: copy files in restartable mode.
                 /B :: copy files in Backup mode.
                /ZB :: use restartable mode; if access denied use Backup mode.

  /COPY:copyflag[s] :: what to COPY (default is /COPY:DAT).
                       (copyflags : D=Data, A=Attributes, T=Timestamps).
                       (S=Security=NTFS ACLs, O=Owner info, U=aUditing info).

               /SEC :: copy files with SECurity (equivalent to /COPY:DATS).
           /COPYALL :: COPY ALL file info (equivalent to /COPY:DATSOU).
            /NOCOPY :: COPY NO file info (useful with /PURGE).

             /PURGE :: delete dest files/dirs that no longer exist in source.
               /MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).

               /MOV :: MOVe files (delete from source after copying).
              /MOVE :: MOVE files AND dirs (delete from source after copying).

       /A+:[RASHNT] :: add the given Attributes to copied files.
       /A-:[RASHNT] :: remove the given Attributes from copied files.

            /CREATE :: CREATE directory tree and zero-length files only.
               /FAT :: create destination files using 8.3 FAT file names only.
               /FFT :: assume FAT File Times (2-second granularity).
               /256 :: turn off very long path (> 256 characters) support.

             /MON:n :: MONitor source; run again when more than n changes seen.
             /MOT:m :: MOnitor source; run again in m minutes Time, if changed.

      /RH:hhmm-hhmm :: Run Hours - times when new copies may be started.
                /PF :: check run hours on a Per File (not per pass) basis.

             /IPG:n :: Inter-Packet Gap (ms), to free bandwidth on slow lines.

::
:: File Selection Options :
::
                 /A :: copy only files with the Archive attribute set.
                 /M :: copy only files with the Archive attribute and reset it.
    /IA:[RASHCNETO] :: Include only files with any of the given Attributes set.
    /XA:[RASHCNETO] :: eXclude files with any of the given Attributes set.

 /XF file [file]... :: eXclude Files matching given names/paths/wildcards.
 /XD dirs [dirs]... :: eXclude Directories matching given names/paths.

                /XC :: eXclude Changed files.
                /XN :: eXclude Newer files.
                /XO :: eXclude Older files.
                /XX :: eXclude eXtra files and directories.
                /XL :: eXclude Lonely files and directories.
                /IS :: Include Same files.
                /IT :: Include Tweaked files.

             /MAX:n :: MAXimum file size - exclude files bigger than n bytes.
             /MIN:n :: MINimum file size - exclude files smaller than n bytes.

          /MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date.
          /MINAGE:n :: MINimum file AGE - exclude files newer than n days/date.
          /MAXLAD:n :: MAXimum Last Access Date - exclude files unused since n.
          /MINLAD:n :: MINimum Last Access Date - exclude files used since n.
                       (If n < 1900 then n = n days, else n = YYYYMMDD date).

                /XJ :: eXclude Junction points. (normally included by default).

::
:: Retry Options :
::
               /R:n :: number of Retries on failed copies: default 1 million.
               /W:n :: Wait time between retries: default is 30 seconds.

               /REG :: Save /R:n and /W:n in the Registry as default settings.

               /TBD :: wait for sharenames To Be Defined (retry error 67).

::
:: Logging Options :
::
                 /L :: List only - don't copy, timestamp or delete any files.
                 /X :: report all eXtra files, not just those selected.
                 /V :: produce Verbose output, showing skipped files.
                /TS :: include source file Time Stamps in the output.
                /FP :: include Full Pathname of files in the output.

                /NS :: No Size - don't log file sizes.
                /NC :: No Class - don't log file classes.
               /NFL :: No File List - don't log file names.
               /NDL :: No Directory List - don't log directory names.

                /NP :: No Progress - don't display % copied.
               /ETA :: show Estimated Time of Arrival of copied files.

          /LOG:file :: output status to LOG file (overwrite existing log).
         /LOG+:file :: output status to LOG file (append to existing log).

               /TEE :: output to console window, as well as the log file.

               /NJH :: No Job Header.
               /NJS :: No Job Summary.

::
:: Job Options :
::
       /JOB:jobname :: take parameters from the named JOB file.
      /SAVE:jobname :: SAVE parameters to the named job file
              /QUIT :: QUIT after processing command line (to view parameters).
              /NOSD :: NO Source Directory is specified.
              /NODD :: NO Destination Directory is specified.
                /IF :: Include the following Files.

Voici une ligne de commande magique pour "mirrorer" deux dossiers, et loggué le résultat dans un fichier:

robocopy sourcedir targetdir *.* /X /NFL /TEE /S /E /COPY:DATS /NP /X /LOG:logfile.txt

Cela produira un fichier log de ce type:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

  Started : Wed Jul 25 10:04:20 2012

   Source : S:\source\Part3\
     Dest : P:\target\Part3\

    Files : *.*
       
  Options : *.* /X /NFL /TEE /S /E /COPY:DATS /NP /R:1000000 /W:30

------------------------------------------------------------------------------

                       0    S:\source\Part3\
                       0    S:\source\Part3\2009\
                       0    S:\source\Part3\2009\09-03\
                       0    S:\source\Part3\2009\09-03\B\
                       2    S:\source\Part3\2009\09-03\B\113\
                       1    S:\source\Part3\2009\09-03\B\114\
:

 

 

 

 

 

Windows 7 Pro : Changer la langue (par defaut) de l'utilisateur

Windows 7 Pro est différent de son prédessesseur, en ce qu'il n'autorise pas le changement de langue...(entre autre)

Bref, vous avez acheter un Windows 7 (argh) Proffessionnal (re-argh) et il vous est gentillement livré en français/neerlandais... mais vous en vrai baroudeur vous préférez l'anglais... vous l'avez où je pense...

sauf, sauf si vous bidouillez un peu...

  • Récupérez le language pack : en-us/lp.cab sur le Language Pack DVD, ou téléchargez-le depuis MSDN
  • Créez un dossier c:\MLP et copiez y le sous dossier qui va bien, ici en-us

Vous devriez donc avoir quelques chose comme ceci:

C:\
  MLP\
    en-US\
       lp.cab
  • Ouvrez une cmd en mode administrator (c'est TRES important) et tapez la commande suivante
    Son execution va prendre un certains temps (cela ne dépends pas de la puissance de la machine... soyez donc patient.
    Cette commande ajoute a l'image "online" (en cours d'utilisation) le package en question...
dism /online /add-package /packagepath:C:\MPL\en-us\lp.cab
  • A ce point rien n'est encore fait, le package est installé mais pas spécifié ni utiliser.
    Il faut donc informé windows que vous désirez utilisé un autre "locale".
    Voici comment y remédier:
bcdedit /set {current} locale en-us
  • Même chose pour le boot loader (sinon il "causera" toujours la même langue)
bcdboot %WinDir% /l fr-FR
Si vous re-démarrez votre PC, ben rien ne sera fait, comme Windows 7 Pro ne reconnait pas le multi-langue, il faut encore retirer TOUTE rérefence a votre langue par défaut:
Pour ce faire,ouvrez RegEdit et naviguez jusqu'a la clé suivante:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\
Supprimez les entrées non voulue (fr-fr ou fr-be par exemple), n'hésitez pas a faire un backup avant...
  • Redémarrer votre PC, il sera en anglais...

Notes, que vous devrez peut-etre forcer une mise a jour Windows avant de continuer...

Bon changement...

détourner une adresse IP

A mon travail, pour des raisons légitimes, j'ai eut besoin de détourer une IP d'un host "public" vers un serveur interne.

Mes utilisateurs doivent utiliser une resource interne qui est aussi accessible via un gateway externe, mais pas sur la même adresse IP, en effet un poste LAN n'a pas accès directement a Internet (il n'est même pas NATé).

La source de ce besoin est un problème de firewall, je ne veux pas que, pour utiliser un serveur particulier "toto.domain.com", le traffic de mes utilisateurs traverse mon firewall pour sortir vers le serveur en question, y génère une charge élevée, et re-rentre dans le système via une sorte de loop-back.

Mon domain.com n'est pas géré en interne, mais chez un prestataire externe; donc difficile pour moi d'en avoir une copie toujours à jour, et de maintenir un "faux" domaine en interne, de plus je n'ai en fait aucune envie de maintenir "deux" domain.com.

Description

Mes utilisateurs doivent accéder à une resource local "toto.domain.local" depuis le réseau interne; mais aussi depuis le réseau externe "toto.domain.com".

Evidement, il arrive souvent qu'un utilisateur se trompe de coté (essaye toto.domain.com sur son PC corporate et qu'il reçoit un Time out) où l'inverse; le résultat est le même, l'utilisateur ne sait pas se connecter, il est frusté, il s'énerve et ne comprends pas pourquoi ca ne marche pas, et surtout il ne pense pas plus loin, j'ai bien essayé des les éduquer... Sans succès, cela leurs demande bien trop d'effort de réfléchir.

Je ne suis pas pour le nivellement par le bas, mais là, j'abandonne à la facilité, je vais trouver une solution facile et élégante, ne pouvant pas "mirrorer presque tout le domain.com sur un DNS "local" (et ne voulant pas gérer les deux domaines avec le risque de confondre les domaines interne et externe, il me fallait ruser.

Solution 1

Ma première idée, a été d'autoriser les utilisateurs "LAN" a sortir pour re-renter ensuite... (Mais j'ai changé d'avis très vite).

D'abord c'est horrible comme construction, ensuite, c'est une faille de sécurité non négligeable, puisque les utilsateurs pourront sortir (et envidement rentrer) pour cette adresse (ce qui veut dire aussi que, potentiellement, un hacker pourrait spoofer mes IPs et tromper le Firewall en entrée).

Pour ajouter au désinteret de cette idée, cela induit une charge CPU sur les firewalls et les routers qui n'est pas négligeable. Tout cela parceque les utilisateurs sont "idiots"...

Idéalement il faudrait que le PC prenne l'IP "toto.domain.local" quand on tape "toto.domain.com"; dans mon cas c'est assez facile sur un PC de changer le fichier hosts du PC LAN, mais je vois plusieurs inconveniant a cela:

  • A l'exterieur du LAN, un portable continuera a chercher l'IP "toto.domain.local" en lieu et place du "toto.domain.com"
  • Quand on n'a que un ou  deux PC c'est pas un problème, mais 200-500 ou plus ca devient l'enfer à déployer
  • En cas de modification de l'IP du serveur, il faut TOUT refaire sur tout les PC

En fait, s'il est relativement facile de faire cela chez soi via le fichier hosts sur quelques PC avec des gens "compréhensifs" comme peut l'être la famille; c'est quasi impossible sur un réseau complexe et/ou avec des DNS Windows 2008R2.

J'ai donc rejeté cette Solution

Solution 2

J'ai donc imaginé de mettre en place ce fameux fichier hosts sur mes DNS serveurs, sauf que les DNS serveur de Windows 2008 se foutent pas mal du fichier hosts pour faire leur boulot, il se basent sur les zones définies et, à défaut, sur les forwarder.

J'ai essayé de faire une zone secondaire pour mon domain.com, mais là c'est devenu l'enfer pour d'autres IP/serveurs... car les A/CNAME/MX records de domaine n'existent pas dans mon "faux" domain.com... ce qui produit un effet "server not found" très dégueulasse...

J'ai tenté la zone "stub" sans succès... puis le trait de génie:

Créer une zone primary toto.domain.com, avec un record A sans nom qui pointe vers mon serveur toto.domain.local.

Cerise sur le gateau, je peux créer des zones secondaires sur tous les DNS serveurs internes qui se répliquent sur ce serveur maître.

Et là, O miracle, les PC dans le LAN résolvent via leurs serveurs normaux (fournis par DHCP) la bonne adresse INLAN; et hors LAN, ils resolvent bien via les serveurs de leurs providers l'adresse publique:

Bien sur cela fonctionne aussi pour détourner, dans votre LAN, n'importe quelle adresse IP (et donc url tapée dans un browser) vers l'un de vos serveurs, je me suis beaucoup amusé à détourner facebook.com vers un serveur apache qui affichait ce texte:

 

LA CIA écoute ce que vous écrivez sur ce site.

Après analyse des statisques de connections, la CIA vous informe que votre quota Facebook est dépassé.

 

La tête et la réaction des utilisateurs visés fut un grand moment de rigolade en somme.

I fallait que je me défoule sur les responsables de mon calvaire.Cool