『回复列表(16|显示机器人聊天)』
@天蓝,Linux不支持反向邻居发现。所以如果未与对方进行通信,就无法发现对方IPv6地址。
https://superuser.com/questions/911494/ipv6-inverse-neighbor-discovery-doesnt-work
@天蓝,你也可以考虑使用mac地址直接算出对方的IPv6地址。不过不一定管用,如果对方开了IPv6地址隐私扩展,或者局域网不使用无状态地址自动配置,可能就不管用。
算法叫做EUI-64,从mac地址直接生成IPv6地址的后64位,然后加上路由器给的前64位(所有设备都一样)就是完整的IPv6地址了。
但是这样有隐私问题,网站可以借此获取你的mac地址对你进行跟踪。所以后来设备不会主动用EUI-64生成的地址进行互联网通信了,而是改用随机生成的另一个地址进行互联网通信。不过EUI-64生成的地址通常还是有效的,所以如果你去连,应该能连上。
在这种情况下,ip -6 addr
会看到设备有两个公网IPv6地址,一个是EUI-64生成的,一个是随机生成的。
其实还有另一个方法,就是直接发起抓包,这样就能监听到所有局域网组播、广播流量,从而发现其他设备的IPv6地址。
当然,如果其他设备完全保持静默,不发起广播、组播通信,则感知不到它。
如此的话,操作系统应该已经知道了一些 MAC IPV6之间的映射,为什么不加入到邻居表中,而是要与对方通信之后再加入邻居表呢?
我的ubuntu接入IPv6网络后,其邻居表中就只有一条到网关的信息
小米MIX2s(白)
顺便一提,fe80::
本地链路地址是可以ping的,不过需要加%网卡序号或名称
。
对于Windows,假设局域网使用网卡1:
ping fe80::xxxx%1
对于Linux,假设局域网使用网卡eth0:
ping fe80::xxxx%eth0
感谢老虎,目前正则使用 llmnr 通过 mac 获取局域网内 ipv6 地址,但是有一些主机并不会响应 llmnr 请求,所以我正在打算通过 ipv4 ssh 登录这些主机,然后获取其 ipv6 地址,详见:https://hu60.cn/q.php/bbs.topic.103460.html
小米MIX2s(白)