es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Llamada a DirectoryEntry solo para servidores dc configurados en dns dentro de un dominio.

Estamos consultando Active Directory utilizando el método DirectoryEntry pasando un nombre de dominio.
Bajo este dominio, hay 40 controladores de dominio (DC), de los cuales 20 están configurados con DNS y el resto no están configurados con DNS, los cuales no se mantienen bien y no son confiables (la conexión a estos DC no configurados con DNS suele agotarse o el hilo se cancela).

Ahora, al hacer una llamada a AD con el método DirectoryEntry, ¿hay alguna forma de consultar solo los DC que tienen configurado DNS?

Actualmente, el código selecciona los DC no configurados con DNS.

Sé que seleccionar el DC en un dominio es una tarea del servidor de dominio, basada en la ubicación geográfica y otros factores. ¿Hay alguna forma de modificar el código para indicarle a DirectoryEntry que seleccione solo los DC configurados con DNS al pasar el nombre de dominio?

Código de ejemplo en c# .net:
DirectoryEntry obEntry = new DirectoryEntry(@"LDAP://" + NombreDominio + "/<sid=" +="" new="" securityidentifier(groupsid,="" 0).value="" +="">", usuarioCuentaServicio, contraseñaCuentaServicio);
if (obEntry.Guid != null)
{
string distinguishedNameObtenido = Convert.ToString(obEntry.Properties["distinguishedName"].Value);
}
</sid=”>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible modificar el código para consultar solo los controladores de dominio (DC) que tengan DNS configurado. Una forma de hacer esto es utilizando el siguiente método:

    var domain = Domain.GetDomain(new DirectoryContext(DirectoryContextType.Domain, NombreDominio));
    var dnsServers = domain.DomainControllers.Where(dc => dc.IPAddress.Any(ip => ip.AddressFamily == AddressFamily.InterNetwork));
    

    Este código primero obtiene el objeto de dominio utilizando la clase DirectoryContext y luego filtra los controladores de dominio (DC) para incluir solo aquellos que tienen al menos una dirección IPv4 (lo cual es una indicación de que DNS está configurado en esa máquina). La variable dnsServers resultante contendrá una lista de DC que tienen DNS configurado, lo cual luego se puede utilizar para realizar la llamada a AD utilizando el método DirectoryEntry.

    Ten en cuenta que este método solo considera direcciones IPv4, por lo que si hay controladores de dominio que solo tienen direcciones IPv6 o tienen configuraciones DNS incorrectas, aún se incluirán en la lista de DC. En ese caso, puede ser necesario realizar filtrado adicional o manejo de errores.

Comments are closed.