各位大佬点评一下,有没有更优的实践?
需求其实很简单,就是在 Adguard Home 和 sing-box 看到是哪个设备在使用服务,根据 IP 给客户端重命名。V4 时代很简单,但是有了 V6 ,这几乎成了不可能的事情,原因如下:
基本上路由只发 V6 前缀(非固定)
后缀是客户端根据 V6 地址策略自己生成的
Windows 、ios 、android 、linux 各自的 V6 策略也各不相同
每个设备获取的 V6 地址有多个,包括公网地址、本地链路地址、ula 地址等
还有隐私地址扩展这种逆天的东西存在
设备上的 app 自主决定使用多个 V6 地址中的一个使用
不管如何,小白经过几年断续的描述,好像找到了一个勉强搞定的实践,方案如下:
配置:
主路由 openwrt 有状态+无状态+ula fd00::/48+后缀 ::1+关闭临时地址+下发 fd00::1 为 v6 dns
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
Windows 上关闭隐私地址扩展
netsh interface ipv6 set global randomizeidentifiers=disabled
netsh interface ipv6 set privacy state=disable
IOS 上关闭随机 mac 地址、私有无线局域网地址、限制 IP 地址跟踪
linux 上不用管,默认是 eui64 生成的固定 v6 地址
安卓 tv 没法管,有些无法 adb 。
现状:所有内网 v6 地址基本固定
Windows 使用 fd00::124 这种 ula 地址请求 dns ,使用 eui64 地址路由到 sing-box
IOS 使用 v4 地址请求 dns ,暂时未测试使用哪种 v6 地址路由到 sing-box ,但是生成的 fd00 随机地址在路由重启后不会变化
firetv 使用 v4 地址请求 dns ,sony tv 使用 fd00 随机地址访问 dns ,重启路由 V6 地址不会变
linux 配置了固定 v4 dns ,使用 v4 dns ,使用 eui64 地址路由到 sing-box
需求其实很简单,就是在 Adguard Home 和 sing-box 看到是哪个设备在使用服务,根据 IP 给客户端重命名。V4 时代很简单,但是有了 V6 ,这几乎成了不可能的事情,原因如下:
基本上路由只发 V6 前缀(非固定)
后缀是客户端根据 V6 地址策略自己生成的
Windows 、ios 、android 、linux 各自的 V6 策略也各不相同
每个设备获取的 V6 地址有多个,包括公网地址、本地链路地址、ula 地址等
还有隐私地址扩展这种逆天的东西存在
设备上的 app 自主决定使用多个 V6 地址中的一个使用
不管如何,小白经过几年断续的描述,好像找到了一个勉强搞定的实践,方案如下:
配置:
主路由 openwrt 有状态+无状态+ula fd00::/48+后缀 ::1+关闭临时地址+下发 fd00::1 为 v6 dns
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
Windows 上关闭隐私地址扩展
netsh interface ipv6 set global randomizeidentifiers=disabled
netsh interface ipv6 set privacy state=disable
IOS 上关闭随机 mac 地址、私有无线局域网地址、限制 IP 地址跟踪
linux 上不用管,默认是 eui64 生成的固定 v6 地址
安卓 tv 没法管,有些无法 adb 。
现状:所有内网 v6 地址基本固定
Windows 使用 fd00::124 这种 ula 地址请求 dns ,使用 eui64 地址路由到 sing-box
IOS 使用 v4 地址请求 dns ,暂时未测试使用哪种 v6 地址路由到 sing-box ,但是生成的 fd00 随机地址在路由重启后不会变化
firetv 使用 v4 地址请求 dns ,sony tv 使用 fd00 随机地址访问 dns ,重启路由 V6 地址不会变
linux 配置了固定 v4 dns ,使用 v4 dns ,使用 eui64 地址路由到 sing-box

