如何通过WMI/COM连接到链路本地IPv6 ?



我试图从主机b做一些主机A的v4网络配置,因为使用v4的WMI将是第22条军规,我想使用链接本地v6来建立连接。

显然,至少从2003年开始

COM就支持IPv6了。link-local似乎被遗忘了。

令人困惑的是:如果主机A有工作的IPv4(是的,4),这工作(在Python中):

>>> c = wmi.WMI('fe80::c0af:e3e1:8383:ddc7%17', user='Administrator', password='blabla')
>>>

然而,当我从A的接口中删除v4地址,或者用主机B无法连接的地址替换它时,上面的调用失败,报告"指定的对象导出器未找到"。有趣的是,主机A上的netstat确实显示了连接尝试。

额外的信息:

  • Windows telnet.exe接受fe80地址,带或不带%17,并且连接到135端口很好。
  • Python的socket.socket.connect做同样的事情。

提示吗?

SOLVED:看来WMI做了某种回调连接,在这种情况下它无法处理link local v6。升级到MS支持

事实证明,无论WMI做了什么奇怪的回调机制来进行双向通信,都无法处理链路本地寻址。我要升级到微软支持。

更新:我已经与微软支持部门讨论了这个问题。事实证明,Windows防火墙的默认设置阻止了链接本地名称解析,而WMI需要工作名称解析。

在你连接的机器上启用"网络发现(LLMNR-UDP-In)"的允许规则,使一切正常工作。显然,问题不是一些连接返回,而是WMI坚持连接到指定端点。什么的。

最新更新