IPHostEntry-需要强制其从另一个域返回FQDN主机名

时间:2018-08-15 19:16:09

标签: c# dns fqdn

我创建了一个在同一域内完美工作的函数。
在“ Alpha.ca”域上使用时,它可以使用“ Win7-Alpha”之类的名称,并返回“ Win7-Alpha.Alpha.ca”。

error TS2339: Property 'assign' does not exist on type 'ObjectConstructor'

但是,如果我在“ Beta.ca”域上尝试相同的操作,它将仅返回“ Win7-Alpha”。它可以解析如果传递的IPv4地址,但是同样,它仅返回“ Win7-Alpha”。 我不想要“ Win7-Alpha”,我想要FQDN!

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

DNS on Beta.ca

1 个答案:

答案 0 :(得分:0)

Microsoft似乎已经做了一些非常可疑的编码实践。据我所知,Windows不会为您提供另一个域的FQDN名称,但是您可以设置一个DNS后缀列表,该列表将强制使用域后缀查询名称。这似乎迫使Windows搜索与FQDN匹配的条目(即使仅使用主机名也可以这样做)。区别在于返回IP地址及其使用的名称时,它使用的名称是它从您指定的列表中创建的FQDN。

我已经确认,一旦有了包含列表的计算机,我就能使用我的功能,它将把另一个域中的主机名解析为正确的FQDN。

在机器本身上

  1. 点击开始
  2. 搜索“网络和共享中心”
  3. 点击“更改适配器设置”
  4. 对于每个适配器,右键单击它,然后选择“属性”
  5. 单击Internet协议版本6(TCP / IPv6)或Internet协议版本4(TCP / IPv4)
  6. 点击“属性”按钮
  7. 点击“高级...”按钮
  8. 单击“ DNS”选项卡
  9. 选择选项“(按顺序)附加这些DNS后缀”
  10. 点击“添加...”,然后添加您所在的域
  11. 重复单击“添加...”,然后添加您可能需要FQDN的每个域。
  12. 再次,确保列表的顶部是该计算机所在的域
  13. 在“高级TCP / IP设置”窗口中单击“确定”
  14. 在“ Internet协议属性”窗口上单击“确定”
  15. 在“适配器属性”窗口中单击“关闭”或“确定”
  16. 尝试按名称在其他域上对计算机执行ping操作,您应该会看到返回的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地址或主机名...。它找到了记录,但不会给您显示该记录的FQDN。当您查看记录时,那里似乎是对的! ...但除非拥有硬编码的DNS后缀列表,然后获得FQDN,否则该代码将无法正常使用。确实表现很差!

//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;

DNS Suffix present to create FQDN