如何在 Asuswrt-Merlin 下禁用 IPv6 DNS

先说结论,禁用不了,但能让 DHCP 的 IPv6 DNS 响应和 IPv4 DNS 一样的结果。

我在家用 Mac mini 和 Surge 以旁路由形式承载绝大部分设备的网络流量,并在 Asus 一个忘了那个版本的 86u 设备上配置成 DHCP 的默认网关。

有一天我开了 IPv6 的 passthrough,这时候发现没法用现有 Asus 的配置手段让他不要 DHCP 给出 IPv6 的 DNS Server,我只是要个 IPv6 地址而已。

研究了半天可以用 Asuswrt-Merlin 的 User scripts 功能来绕过。

首先在路由器系统设置页开启相关功能:

然后 ssh 到路由器上配置配置以下文件:

  • /jffs/scripts/dnsmasq.postconf
#!/bin/sh
CONFIG=$1
source /usr/sbin/helper.sh

pc_replace "servers-file=/tmp/resolv.dnsmasq" "server=198.18.0.2" $CONFIG

其中的 198.18.0.2可以按需求写你需要的 IP,我用 Surge 就写这个了。

然后配置正确的可执行权限:

chmod +x /jffs/scripts/dnsmasq.postconf 

然后重启 dnsmasq 验证效果:

service restart_dnsmasq
cat /etc/dnsmasq.conf

如果看见 /etc/dnsmasq.conf 里的内容已经变化了就是生效了。