局域网使用 ipv6 链路本地地址相互通讯的问题

2022-11-19 15:36:22 +08:00
 acbot

设备开启 ipv6 后默认都会自动生成一个 fe80 开头的链路本地地址(例如:fe80::bf8e:14ff:fe17:ab0c )但是我发现一个问题:windows 下可以使用这个地址主动与其他机器通讯包括 linux 系统但是 linux(ubuntu)无法使用这个地址主动与其他设备通讯包括其他 linux 系统,第一感觉是路由的问题但是我对比过两种系统的路由没发现有明显的区别,那这个是什么原因呢? 另外,linux 或者是 windows 下可以修改 ipv6 链路本地地址的前缀吗,比如: 改成 fe80:3837::

2806 次点击
所在节点    Linux
12 条回复
v2tudnew
2022-11-19 16:22:17 +08:00
你还要加上网口,比如 %eth0 ,ios %en0 ,数字都可能不同,所以直接用比较麻烦。
ragnaroks
2022-11-19 18:50:03 +08:00
实测不存在这个问题,此时此刻手边的 3 个机器分别是 debian11 、windows10 、centos7 ,经验证使用 FE80:: 可以互相通信且无需附加 %interface 。极有可能是你的 ubuntu 系统存在某种配置错误。
acbot
2022-11-20 08:30:13 +08:00
@v2tudnew 我试试,之前我感觉应该是默认路由的问题!
acbot
2022-11-20 08:31:13 +08:00
@ragnaroks 防火墙和路由方面全默认,没有改过!
dialtcp
2022-11-20 11:34:26 +08:00
加个[],不行加个网口到括号里
zeiyso
2022-11-20 14:07:29 +08:00
内网通信应该用 ULA 地址( fd00::)
Link-Local 地址必须配合接口使用,而且不能被路由
zeiyso
2022-11-20 14:12:25 +08:00
Link-Local 地址主要用于自动地址配置和邻居发现协议
acbot
2022-11-20 14:27:19 +08:00
@zeiyso 链路地址本身就也 i 用于链路通讯再次局域网甚至只交换机内使用本身就不需要路由,理论上你说的都没有错但是实际问题是:windows 这个地址使用一点问题没有,并且其他设备可以使用 ubuntu 的本地链路地址通讯,仅仅是这个 ubuntu 主机无法使用其他设备的本地链路地址通讯,必须要指定接口,所以这个多半仅仅是某个配置的问题。另外,ipv6 在常规 SLAAC 模式下( DHCP 模式没试过)设备只有公网地址和本地链路地址,并且这个地址前缀会变后缀也会变,这个变化的地址用于局域网通讯配置起来就有困难,但是本地链路地址基本不变所以 并且非 NAT 模式的 v6 不像 v4 可以配置一个固定的局域网地址。
zeiyso
2022-11-20 15:40:33 +08:00
只有一个接口的时候可以不指定接口,可能不应该依赖这种行为。

ULA 和 SLAAC 不矛盾,和路由地址分配的设置或者功能有关。

如果路由器不支持 ULA 分配又不方便增加一台的话,可以手动在每台电脑上手动设置一个 ULA……
zeiyso
2022-11-20 15:45:55 +08:00
设置 ULA 之后依然会正常获取全局地址。
acbot
2022-11-20 20:27:08 +08:00
@zeiyso 首先,非常感谢你的指教!不过,ULA 和 SLAAC 不矛盾 这个可能仅仅是在理论上,实际使用会带来更多的问题,比如,我的 RA 在服务器模式下只能通告一个 PD ,具体的就不深究了。因为只要指定接口就正常了,且 #2 他的系统不加接口都可以正常通讯,所以我个人感觉有更简单的方式,就是仅仅在这个有问题的 ubuntu 上调整应该就可以解决问题,比如 增加一跳路由啥的。
flynaj
286 天前
ping6 [fe80::bf8e:14ff:fe17:ab0c]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/896435

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX