6

简而言之 - 如何将 NETBIOS 域转换为 FQDN?

详细信息:假设我在域 A 中,并且我有域 B 的用户凭据,它与域 A 有信任关系(我可以验证凭据)。当我只有来自该域的一些经过身份验证的用户的凭据(包括 netbios 域名)时,如何获取域 B 的 FQDN?

我正在使用 C# 进行编码,但也欢迎使用 COM/WMI/Win32 解决方案。

4

4 回答 4

4

这可能不是最佳的,但看起来您可以执行 NetBIOS 名称查询以获取 IP 地址,然后执行反向 DNS 查找以从中获取 FQDN...

http://www.protocolbase.net/protocols/protocol_NBNS.php

(反向DNS步骤很容易查到)

于 2008-11-04T18:23:23.413 回答
1

您对其他域有什么样的访问权限?您要针对其他域中的哪个服务器/服务进行身份验证?

您是否对另一个域中的域服务器具有 IP 访问权限?如果是这样,那么您可以进行如下调用:

DirectoryEntry rootDSE = new DirectoryEntry("LDAP://10.11.12.13/rootDSE", @"DOMAIN\Username", "Password");
Console.WriteLine(rootDSE.Properties["defaultNamingContext"].Value);

(将 10.11.12.13 替换为域服务器地址)。

您将收到代表 FQDN 的“DC=company,DC=org”形式的回复(只需通过删除 DC 部分并插入点来重建它)

于 2010-01-05T10:07:45.060 回答
0

使用 WinNT 提供程序绑定到域并过滤所有用户帐户。开始枚举用户帐户。

如果用户帐户 sAMAccount 名称不包含字符串“duplicate”,则退出循环并使用 NameTranslate 对象查找帐户的 LDAP 名称。

LDAP 名称的一部分是域 FQDN。

嘿,这是一种软糖,但它就像一种魅力。

于 2010-06-08T19:03:22.413 回答
0

win32 库的vanara 集合可用于此目的。NetApi32.dll 中的DsGetDcName API提供了从 NetBIOS 域名到 dns 域名的转换(作为副作用) 。

进入VS进入nuget包管理器并获取Vanara.PInvoke.NetApi32包。

这两种方法将 NetBIOS 名称转换为 dns 名称,反之亦然。

public static string ResolveNetBIOSDomainNameToDnsName(string netBIOSName)
{
    Vanara.PInvoke.NetApi32.DOMAIN_CONTROLLER_INFO domainDcInfo = 
            Vanara.PInvoke.NetApi32.DsGetDcName(Vanara.PInvoke.NetApi32.DsGetDcNameFlags.DS_RETURN_DNS_NAME | Vanara.PInvoke.NetApi32.DsGetDcNameFlags.DS_IS_FLAT_NAME, null, netBIOSName);
    return domainDcInfo.DomainName;
}

public static string ResolveDNSDomainNameToNetBIOSName(string dnsName)
{
    Vanara.PInvoke.NetApi32.DOMAIN_CONTROLLER_INFO domainDcInfo = 
            Vanara.PInvoke.NetApi32.DsGetDcName(Vanara.PInvoke.NetApi32.DsGetDcNameFlags.DS_RETURN_FLAT_NAME | Vanara.PInvoke.NetApi32.DsGetDcNameFlags.DS_IS_DNS_NAME, null, dnsName);
    return domainDcInfo.DomainName;
}
于 2020-12-01T22:04:24.703 回答