首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IPHostEntry -需要强制它从另一个域返回FQDN HostName

IPHostEntry -需要强制它从另一个域返回FQDN HostName
EN

Stack Overflow用户
提问于 2018-08-15 19:16:08
回答 1查看 572关注 0票数 3

我已经创建了一个功能,它可以在同一领域内完美地工作。

在"Alpha.ca“域上使用时,可以使用"Win7-Alpha”这样的名称,并返回"Win7-Alpha.Alpha.ca“。

代码语言:javascript
复制
public static string TryGetServerFQDN(string ServerName)
{
    string ServerFQDN = ServerName;
    if (!string.IsNullOrEmpty(ServerName))
    {
        IPHostEntry serverIPEntry = null;
        try
        {
            serverIPEntry = Dns.GetHostEntry(ServerName);
        }
        catch
        {
        }

        if (serverIPEntry != null && !string.IsNullOrEmpty(serverIPEntry.HostName))
        {
            ServerFQDN = serverIPEntry.HostName;
        }
    }
    return ServerFQDN;
}

但是,如果我在"Beta.ca“域上尝试相同的操作,它只返回"Win7-Alpha”。如果它被传递,它就能够解析IPv4地址,但同样,它只返回“Win7-Alpha”.我不想要“Win7 7-Alpha”,我要FQDN!

在Beta.ca DNS上,我可以看到我想要的FQDN,那么为什么它不给我呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-16 16:33:21

微软似乎已经做了一些很有问题的编码实践。据我所知,Windows不会为您提供来自另一个域的FQDN名称,但您可以设置一个DNS后缀列表,该列表将强制使用域后缀查询名称。这似乎迫使Windows搜索与FQDN相匹配的条目(尽管它只使用主机名就可以完成此任务)。区别在于当它返回IP地址和它使用的名称时,它使用的名称是它从您指定的列表中创建的FQDN。

我已经验证了,一旦我有了带有列表的机器,我就能够使用我的函数,它将把HostName从另一个域解析到正确的FQDN。

在机器上

  1. 单击“开始”
  2. 搜索“网络和共享中心”
  3. 单击“更改适配器设置”
  4. 对于每个适配器,右键单击它并选择Properties
  5. 单击Internet Protocol Version 6(TCP/IPv4 6)或Internet Protocol Version 4(TCP/IPv4 4)
  6. 单击“属性”按钮
  7. 点击“高级.”按钮
  8. 单击DNS选项卡
  9. 选择“追加这些DNS后缀(按顺序排列)”
  10. 点击“添加.”并添加您首先在的域。
  11. 重复单击“添加.”并添加可能需要FQDN的每个域。
  12. 同样,确保列表的顶部是此计算机所在的域。
  13. 单击“高级TCP/IP设置”窗口中的“确定”
  14. 单击Internet协议属性窗口中的OK
  15. 在Adapter Properties窗口上单击“关闭”或“确定”
  16. 尝试在另一个域上按名称敲击计算机,您应该会看到返回的FQDN。
  17. 您还可以通过"ping -4 COMPUTERNAME“IPv4 ping
  18. 如果它不工作:
    • 开放cmd.exe作为管理
    • ipconfig /flushdns
    • ipconfig /registerdns

或使用组策略

  1. 使用足够的域/林管理员凭据运行组策略管理
  2. 选择要更改的策略。在本例中,默认域策略
  3. 右键单击并选择编辑
  4. 导航到计算机配置>策略>管理模板>网络> DNS客户端
  5. 打开"DNS后缀搜索列表“
  6. 选择“启用”
  7. 在DNS后缀文本框中,键入逗号分隔的DNS后缀。例如。我们在Beta.ca域,所以我们输入Beta.ca,Alpha.ca
  8. 单击“确定”或“应用”,然后关闭Windows
  9. 如果需要策略尽快应用于机器,则可以在机器上打开cmd.exe并键入gpupdate /force。

我个人认为它是如此的愚蠢以至于DNS可以匹配一个IP地址或来自另一个域的HostName .它找到了记录,但是它不会给你记录的FQDN,当你看记录时,它似乎知道,它似乎就在那里!但是你不能拥有它,除非你硬编码一个DNS后缀的列表,然后你得到FQDN,然后使代码正常工作。表现真的很差!

代码语言:javascript
复制
//Once you add Alpha.ca to the DNS Suffix List on the machine running this code....
//This will now correctly return Win7-Alpha.Alpha.ca
Dns.GetHostEntry("Win7-Alpha").HostName;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51865028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档