在成功获取 ipv6 ip 的机器上执行 dig
$ dig test.com
;; SERVER: 2409:8a00:
...
(反正是没结果)
$dig -4 test.com
;; SERVER: 192.168.0.2#53(192.168.0.2)
结果正常
A 操作系统:修改配置
B 网关层:好像也干不了啥
C 路由器层(提供 DHCP 服务的)
1
jacyl4 2022-03-26 20:06:10 +08:00
建一个 dns 服务器,提供双栈优选或者 ipv4 解析优先功能。
|
2
Kiriya 2022-03-26 20:07:49 +08:00
装个 adguardhome (在操作系统或软路由) 然后设置只解析 IPV4
|
3
JensenQian 2022-03-26 20:08:28 +08:00
windows 下 netsh 可以改 v4 优先的,不过我电脑一般都是把 v6 关了的
|
4
JensenQian 2022-03-26 20:18:17 +08:00
@JensenQian #3 不好意思,看错了,我以为是设备上访问网站 v4 优先,dns 的话路由器上 smartdns 里面有个双栈 ip 优选功能,可能适合楼主
|
6
phpfpm OP @JensenQian 但是有个问题诶
我的 ipv6 的 dns 是 0.1 分配的,v4 的 dns 也是 0.1 分配的( dns0.2 ,网关 0.2 ) 那么 0.1 在做 ipv6 slaac 的时候应该分配的 ipv6 的 dns (我这边看是 2409 开头的公网地址) 就是说我建好 dns 之后,至少应该 listen 一个 v6 的端口,地址是一个静态地址还是内网可达的一台机器? |
7
yaott2020 2022-03-26 21:00:23 +08:00 via Android
mosdns 可以优先 v4
|
8
Hconk 2022-03-26 21:01:32 +08:00 via iPhone
我在 windows 上是通过改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ ,加一个 DWORD 类型的 DisabledComponents ,值为十进制 32 。优先使用 ipv4 。
Linux 有也可以配置 https://xmsg.org/wordpress/2020/03/在 linux 中设置优先使用 ipv4 而不是 ipv6 转 / 。 macOS 没找到,应该可以在路由加个 smartdns 服务,配置双栈优选功能来实现。 |
9
jim9606 2022-03-26 21:23:54 +08:00 1
我建议的做法是,主路由(也就是发送 RA 的路由)配置禁用 DHCPv6 (有状态和无状态都禁用),配置发送的 RA 不包含 RDNNS option ( RA option 25 ,RFC5006 ),或者将这个选项覆写为旁路由地址。Openwrt 支持这些配置。
Android 据说仅支持 RA option 25 ,macos 和 win 仅支持 DHCPv6 DNS option ,所以理论上只要禁用 DHCPv6 就够了。 需要注意,DNS 服务器是 v4 还是 v6 并不影响 DNS 响应本身是否包含 AAAA 记录( IPv6 记录) |
10
phpfpm OP |
11
phpfpm OP @jim9606
单开一个楼说下我的进展。 1. 主路由( pppoe 拨号)保持自动获取 ipv6 地址+运营商的 dns 2. 主路由的 lan 侧: 启用 ipv6 ,采取 EUI-64 的分配方式,ip 地址前缀取从 wan1 口获取的地址前缀(自动配置的) 3. SLAAC 设置 DNS 配置方式选择 DHCPv6 (还有 RDNSS 备选,我没用) 首选 DNS 服务器选择旁路由的 v6 的地址 4 旁路由( N1 ,openwrt ) 接口新建一个 lanv6 ,选择 dhcp 客户端,防火墙区域选择 lan 这样就得到了步骤 3 需要的内网的 dns 地址了 5 设备效果 macos 重启设备之后会,dig/dig -6 都返回 N1 的 v6 地址做的 dns 解析的 A v4 地址 网络管理看到了有两个 dns ,分别是 0.2 和 0.2 的 LANv6 端口的地址 windows 重启之后 nslookup 的 server 会命中 N1 的 v6 地址 test-ipv6 10 分满分通过 6 总结 slaac 也可以通告一个 v6 的 dns ,只需要让旁路由获取 v6 的地址即可 |
12
jim9606 2022-03-27 13:51:38 +08:00
@phpfpm
1. RA=Router Advertisement (路由通告),这是所有 IPv6 设备必须支持的功能,不管何种地址分配方式均需要 RA ,用来通告可用前缀和网关链路地址,Android 还会通过 RA 获取 DNS 服务器,好像 macos 和 windows 都不会通过 RA 获取 DNS 服务器。 2. DNS 响应是否包含 A 记录 /AAAA 记录与 DNS 服务器 IP 是 IPv4 还是 IPv6 无关,也就是说,DNS 服务器地址是从何种方式获得跟 DNS 响应没有任何关系。 实际上我非常怀疑所谓 DNS 双选的意义,因为它是通过不返回 A 记录或者不返回 AAAA 记录实现的。 |