链路范围IPv6组播数据突然无法在MacBook Pro上可路由?(Link-scope IPv6

2019-08-01 01:06发布

这是一个稍微模糊的问题,但我很为难,我想也许有人在那里可能有更多关于这个问题的线索。

我的同事已经成功运行使用IPv6的组播他的MacBook Pro数月的内部应用程序,但今天苹果决定停止路由组播报文。 特别是,该程序将打印此错误:

SendDataUDP(FF02 ::珠:半寸:契:饲料@ 4)发生故障的网络接口[名称= [EN0]描述= [] IP = [FE80 :: 222上:41ff:FE21:dfd4 @ 4]掩码= [FFFF: FFFF:FFFF:FFFF ::]广播= [:]](错误= 65 /否到主机的路由)。

......这很好说明了什么问题......它试图SENDTO()一个UDP包,显示的IP地址,并发送()的错误号= EHOSTUNREACH失败。

我不明白的是,什么可能导致IPv6链路范围的组播地址为“无法访问”? 如果我的链路范围多播的理解是正确的,数据包只需要走出本地以太网口(EN0在这种情况下,启动并工作的那台机器上)。

有一些方面多播我失踪,或者被他的机器只是borked? 他说,他没有任何改变,只是神秘地停止工作。

Answer 1:

这可能有助于看看内核源代码 。 (尤其是出口IPv6数据包出口路径,ip6_output.c)当你在里面,你也可以看看的套接字调用导致它,等等。

对于组播,假设你正在做它ip6_output()它看起来像唯一可能的方式来得到这个错误是不指定发送的接口。 (这是奇怪,因为您的错误信息明确提到的界面)

是否有可能,当它之前并不在这款MacBook无线接口已启用,现在“链路本地”多播的概念是模糊的? 你明确指定接口时,可以使用socket? 在地址的末尾@ 4看起来很奇怪我。 (那是一个接口索引?)的惯例通常是用%为一个接口范围-ID,但如前面的答案,其评论中指出,它没有得到普遍支持。



Answer 2:

为了测试EN0是否仍然能够传输链路本地组播请求,尝试

ping6 ff02::1%en0

该联系人的所有主机,所以你应该得到足够的响应(为了好玩,尝试添加-w)。



文章来源: Link-scope IPv6 Multicast packets suddenly not routable on a MacBook Pro?