如何使用WMI / COM连接到本地链接IPv6?

时间:2011-07-14 12:35:05

标签: python winapi wmi

我正在尝试从主机B对主机A进行一些v4网络配置。因为在v4上使用WMI将是一个catch-22,我想使用link-local v6进行连接。

显然,至少从2003年开始,COM就支持IPv6了。似乎链接本地被遗忘了。

令人困惑的是:如果主机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接受带有和不带有%17的fe80-address,并且连接到端口135就好了。
  • Python的socket.socket.connect也是如此。

任何提示?

已解决:似乎WMI会进行某种回调连接,并且在该方案中无法处理链接本地v6。升级到MS支持。

1 个答案:

答案 0 :(得分:1)

事实证明,WMI做的任何奇怪的回调机制都能实现双向通信,无法应对链路本地寻址。我正在升级到微软的支持。

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

在要连接的计算机上启用“网络发现(LLMNR-UDP-In)”的allow-rule,使一切正常。显然问题不是某些连接回来,而是WMI坚持连接到命名端点。或者其他什么。