Understanding Global Catalog (Active Directory)

In addition to the 5 FSMO roles in Active Directory, there is the sixth (unofficial) domain controller role — Global catalog (GC). Unlike FSMO roles, any controller in a domain can have a Global Catalog role. This role doesn’t need to be unique within an Active Directory domain or forest. However, the Global Catalog is the most important DC role from the practical point of view.

What is the Global Catalog?

A Global Catalog server is a domain controller that stores copies of all Active Directory objects in the forest. It stores a complete copy of all objects in the directory of your domain and a partial copy of all objects of all other forest domains. Thus, the Global Catalog allows users and applications to find objects in any domain of the current forest by searching for attributes included to GC.

A typical domain controller stores a complete replica of objects in its own domain, but not for other domains in the forest.

The Global Catalog contains a basic (but incomplete) set of attributes for each forest object in each domain (Partial Attribute Set, PAT). The GC receives data from all the domain directory partitions in the forest, they are copied using via standard AD replication service. The set of attributes that are copied to the Global Catalog is defined in the AD schema. If necessary, you can configure additional attributes that will be replicated to the GC using the Active Directory Schema mmc snap-in.

To add an attribute to the GC, you must select the option Replicate This Attribute to the Global catalog. As a result, the value of the isMemberOfPartialAttributeSet attribute parameter is set to true.

global catalog

To find the list of DC’s that contains the Global Catalog role in the current forest, run the command in the PowerShell console:

Get-ADForest |select -ExpandProperty GlobalCatalogs |Format-Table

active directory global catalog

You can check that the current DC you are on has the global catalog role enabled:

Get-ADDomainController | ft Name,IsGlobalCatalog

Or to check GC role in all DC in an AD site:

Get-ADDomainController-Filter {Site -eq 'New-York'}} | FT Name,IsGlobalCatalog

Or use the dsquery command:

dsquery server -forest –isgc

The first GC server was automatically created on the first domain controller in the forest when you promote DC during installing Active Directory Domain Services role. In the case of a single AD site, even if it contains multiple domains, a single Global Catalog server is usually sufficient to process Active Directory requests. In a multi-site environment (in order to optimize network performance) consider adding GC servers to ensure a quick response to search queries and fast logon. Also, at least one GC server must be present on each AD site where Exchange is supposed to be installed.

READ ALSO  How to Backup Active Directory on Windows Server 2016?

You can assign additional domain controllers as GC by selecting the Global Catalog option in the “Active Directory Sites and Services” snap-in.

The global catalog server is used for the following purposes:

  • Object search — if a user searches for an object by specifying All directory parameter in the query, this request is redirected to the port TCP/3268 and sent to the GC server. If, for any reason, there is no GC server in the domain, users and applications won’t be able to perform searches across AD forest;
  • Authentication — the GC server is the source of authentication at the time the user logs on to the domain. The global catalog server resolves the user name if the authenticating domain controller does not have information about user’s account (the UserPrincipalName attribute is used in this case);
  • Verifying membership in universal groups in a multi-domain environment — in the verification process, the domain controller verifies the authenticity of the user, after which the user receives authorization data to access the resources. To provide this information, the domain controller retrieves the security identifiers (SIDs) for all security groups that the user is a member of and adds these identifiers to the user’s access token. Because universal groups can contain user accounts and groups from any domain in the forest, the group membership in them can only be resolved by the GC Server that has catalog information at the forest level;
  • Checking references to objects within the forest — Domain controllers use a Global Catalog to validate references to objects in other domains in the forest. That’s why if the domain controller contains an object with an attribute, that contains a reference to an object in another domain — the domain controller checks the link by establishing a connection to the Global Catalog server;
  • Exchange Address Book Search — when users want to find a person within the organization in the Outlook, they usually search through the global address list (GAL). The GAL is a list, that Exchange creates as a result of an LDAP query to search for all mail-enabled objects — users, contacts, and distribution groups. When a user tries to open an address book in Microsoft Outlook, or writes a message and enters a name or recipient address in the To field, Outlook uses the GC Server specified by the Exchange server. Exchange mail servers use Active Directory and DNS to locate Global Catalog servers.
READ ALSO  Installing Active Directory Users and Computers MMC Snap-in on Windows 10

How to Optimize Global Catalog Server Placement?

For resiliency purposes, it is important to keep at least a few domain controllers with the Global Catalog role. It will be better if each domain has a minimum of one GC. However, it is better to make all DCs in the forest as Global catalog servers. This will also have a positive effect on load balancing. Also, it is important to notice that from now on you won’t have to worry about the infrastructure master FSMO role (for more details read this article).

If you can’t make all DCs the Global Catalog, make sure the infrastructure master FSMO role do not hosted on the GC Server. Otherwise, it will stop its functioning (phantom records will not be created/changed) and as a consequence — you will get irrelevant data in AD.

If there are no Global Catalog servers available, users can not log in, and the Exchange mail server can’t send and receive e-mail items. That’s why the Global Catalog is the most important role of the domain controller. Without GC role the functioning of Active Directory is almost impossible.

How to Enable/Disable the Global Catalog Role on a Domain Controller?

You can enable the Global Catalog role on a domain controller in several ways:

  • Using the graphical Active Directory Sites and Services mmc console;
  • Using PowerShell;
  • Using the dsmod.exe tool;

Run the mmc snap-in “Active Directory Sites and Services” (Start > Windows Administrative Tools, or run the dssite.msc command).

ad global catalog

Expand the Sites section and find the AD site that contains your domain controller. Expand it, right click on NTDS Settings and then select Properties.

READ ALSO  How to Force Windows 10 to Set Up Default Printer Through Registry?

Set the Global Catalog checkbox on the General tab to enable the GC role, or uncheck it to disable it. Click OK to save your changes.

global catalog active directory

You can enable the Global Catalog role on a DC using the PowerShell command:

Set-ADObject -Identity (Get-ADDomainController DC03).ntdssettingsobjectdn -Replace @{options='1'}

To disable the GC role, use the command:

Set-ADObject -Identity (Get-ADDomainController DC02).ntdssettingsobjectdn -Replace @{options=''}

These commands can be used to move the global catalog server functionality from one domain controller to another.

You can also use the dsmod.exe command to enable the GC role. For example:

dsmod server "CN=dc03,OU=USA,DC=theitbros,DC=com" -isgc yes

The amount of time it takes to publish the Global Catalog in a forest depends on the replication topology. The domain controller doesn’t publish the DNS record that it has become a global catalog server until it receives all partial domain directory partitions through AD replication.

You can check the registration of a global catalog server in DNS by using the dnsmgmt.msc snap-in. Make sure you have an SRV record named _gc for your DC in the _tcp forward lookup zone.

global catalog server

After activating the Global Catalog role on DC, you can check its readiness. For this, the ldp.exe utility is used. Run the utility, select Connection > Connect > specify the DC name and a 389 as a connection port. Click Ok.

global catalog domain controller

Verify the isGlobalCatalogReady: TRUE value in the LDP window. This means that your GC is ready.

Also, you can check GC readiness from the command prompt:

nltest /server:dc01 /dsgetdc:test.com

domain controller global catalog

Check for a GC value in the Flags field.

Cyril Kardashevsky

4 comments

  1. By far the best explanation I’ve ever read about GC
    finally understood what it’s about!
    short, simple and to the point!

    Thank YOU!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.