【Server Geek】AdGuard Home 监听局域网 IPV6 地址到底应该用哪一个
2025年3月14日大约 2 分钟
最近因为家里无线信号的问题,买了个新的路由器放在弱电箱做主路由,然后局域网内的 IPV6 的地址由于换了主路由,所以都变化了,之前在 AdGuard Home 上配置的地址就要改,改完之后发现会报错,然后一番周章之后才发现在 IPV6 地址监听这块有点说法。
如果在 Ubuntu 上 ip a
查看接口信息,经常会发现一个网卡上的 IPV6 的地址有好几个,这里抛开 24xx 打头的那种不谈,只谈 f 打头的那种局域网的地址。
这种 f 打头的局域网地址也分为两种:一种叫 LLA (链路本地地址)、一种叫 ULA (唯一本地地址)。
- LLA: 以 fe80::/10 开头,地址范围(fe80:: - febf:😃,家用场景没有那么多设备,所以基本可以按 fe80 开头判断
- ULA:以 fd00::/8 开头,可分配的地址范围也是 fd00::/8
ULA 基本就可以理解为跟 ipv4 的局域网地址类似,直接用就行了。比如我这个场景 AdGuard Home 需要监听局域网 ipv6 地址,如果有 ULA ,就可以直接 bind ULA 的地址。
LLA 在使用的时候就跟 ULA 有点区别,简单理解: LLA 在使用的时候要指定网卡……,因为这玩意是跟网卡的 MAC 通过 EUI-64 生成的。具体怎么用呢,比如在 AdGuard Home 上监听一个 LLA 地址的时候,就要 bind 那里填上 [IP%网卡名],例如:fe80:xxxx:xxxx:xxxx:xxxx%eth0
这里附上具体的转换算法:
假如 MAC 地址是:00:1A:3B:CD:4E:F5
- 将 MAC 地址拆分为两部分:00 1A 3B、CD 4E F5
- 在两部分之间插入 FF FE,变为 00 1A 3B FF FE CD 4E F5
- 反转第 7 位。(MAC 地址的第一个字节(00)的二进制形式是 00000000),反转之后是 00000010 对应十六进制 02,变为 02 1A 3B FF FE CD 4E F5
- 与 fe80 前缀结合,变为 fe80::021a:3bff:fecd:4ef5
这个发现是因为,我原来的网络,可以直接在网卡上看到 ULA,所以当时我直接用了 ULA 在 AdGuard Home 上,非常完美。把路由器换了之后,网卡上只有 LLA 了,结果直接把 LLA 地址填进去,发现 AdGuard Home 会报绑定失败的错误,百思不得其解,后来也是查了一下才知道地址有这个区别。
赞助