假设本地网络上有两台机器,均通过 IPv4 和 IPv6 连接,如果机器 A 具有机器 B 的 IPv4 地址,那么它能否获取机器 B 的 IPv6 地址?
我推测 ARP 缓存应该能够提供一些 IPv6 地址的指示,前提是两者之间的流量是通过 IPv6 传递给计算机的?欢迎针对 Windows 和 *nix 提供答案。
答案1
如果在机器 A 的 ARP 缓存中找到 IPv4 地址和 MAC 地址之间的映射,那么您可以猜测机器 B 的一些 IPv6 地址(通常是一个或两个),如下所示:
- 链接本地地址fe80::修改版-EUI-64. 修改后的EUI-64是从MAC地址衍生出来的。
- 本地链路上每个子网一个自动配置的 IPv6 地址。与链路本地地址一样,此地址的底部 64 位是修改后的 EUI-64。
但是,请注意,链路本地地址可能没那么有用(它只能用于与机器 A 进行链路通信),并且对于自动配置的地址,该功能并不总是启用的。
如果您不知道机器 A 的 MAC 地址,那么您无法根据其 IPv4 地址预测有关 iuts IPv6 地址的任何信息。
答案2
通常可以查询有关其他类型设备 IP 地址的信息,但不能使用 ARP 或其他协议。
例如,在 Microsoft Windows 中:
WMIC /NODE:"192.0.2.1" /OUTPUT:"outwmic.txt" NICCONFIG Get Caption,Description,IPAddress,MACAddress
显然,您应该自定义 IPv4 地址,并且可以自定义输出文件。您还可以获取更多信息,例如显示子网大小的详细信息。尝试省略“Get”一词后的所有内容,以查看您可以指定的更多列。
我确信还有其他解决方案,包括一些商业解决方案(例如,已知 Kaseya 适用于 Linux)。我确信一些可用的软件可以在 Unix 风格的平台上运行。WMI 是 Microsoft 对其使用 WBEM 的软件的花哨术语,SNMP 也可能是一种常用的协议(基于warren 的 Serverfault 问题:Linux 和 Unix 上是否存在 WMI 的实际或事实上的替代方案)的缺点是,尽管技术能力似乎足够可行,但差异可能会导致它不够标准,您可能需要计划花费一些时间来开发/测试定制方法。
我推测 ARP 缓存 [...]?
这看起来不像是主要问题。我在这里简要提到它,这样我的回答看起来就不会不完整。请参阅我的评论(在您的问题下提供,而不是在任何答案下),其中我已经进一步讨论了 ARP。