在 ASUS 中设置 AdGuard Home 作为 IPv6 DNS Server

本文不包含如何在群晖 Synology 上部署 AdGuard Home.
我使用 ASUS 华硕作为路由器,DHCP服务器,和 Wi-Fi 信号传输。使用群晖里的 Docker 部署了 AdGuard Home 作为全局 DNS Server.

我在群晖上部署 AdGuard Home 时候,使用了 macvlan. 简单来说,使用了 macvlan 的 docker 容器可以有它自己的 MAC 地址,从而获得自己的 IP 地址。但在我设置 macvlan 的时候,我只设置了 IPv4, 忽略了 IPv6, 所以我的 AdGuard Home 没有 IPv6 地址.

Macvlan allows you to configure sub-interfaces (also termed slave devices) of a parent, physical Ethernet interface (also termed upper device), each with its own unique (randomly generated) MAC address, and consequently its own IP address.

我之前的网是统一提供的,只有一个被分配到的内网地址,于是也就没有 IPv6. 现在换了个 provider,运营商提供 IPv6, 就把路由器的 IPv6 打开了,也成功给我的每台设备分配了 IPv6 地址。

打开 IPv6 之后,路由器会广播一个 IPv6 DNS Server. 而路由器广播的是运营商的 IPv6 DNS Server. 这能说得过去,毕竟我们都经常能在路由器里看到「自动从 ISP 获取 DNS IP」。

我一开始理所应当地觉得,既然要一个 IPv6 IP 作 DNS Server,那就给 AdGuard Home 搞个 IPv6 IP 然后广播呗。但我真的是不想再搞 macvlan, 我已经不太记得上次是怎么搞的了,而且现在的好像也是勉强能用的。一部分请求会走 AdGuard Home, 一部分请求会走运营商的 DNS. 只要心里过得去就没啥事儿。
可我心里总觉得不对,所以我索性把 IPv6 关掉了。

第二天一觉醒来觉得这事儿不能就这么算了,运营商给了 IPv6,而且用起来还不错,怎么能关掉呢?我就和朋友吐槽这件事,并且说,既然这样那我不如直接广播一个无法访问的 IPv6 地址作为 DNS 服务器,这样就会让 IPv4 的 IP 作为 DNS 服务器了。
说得好像很有道理,但我灵光一闪:既然我可以广播任意 IPv6 地址,那我为什么不直接广播 IPv6 版本的 IPv4 呢?
所以我转换了一下,然后广播,现在所有 DNS 请求都会发送到 AdGuard Home 处理了,而我也不用重新搞群晖上的 macvlan.


说到这里,我想再提一下如何在 ASUS 华硕设备上设置或者广播其他 DNS Server.
在华硕路由器上,有以下几个地方可以设置 DNS:
1. 外部网络(WAN) -> 互联网连接 -> 互联网 DNS 设置 -> DNS 服务器.

2. 内部网络(LAN) -> DHCP 服务器 -> DNS 及 WINS 服务器设置

3. 内部网络(LAN) -> DNS Director

在实际操作中,我们需要在 1 处保留默认设置,或者至少不要指向 AdGuard Home. 这个部分只是会处理路由器本身的一些请求,比如用于证书更新,时间校准等等,所以在这个地方我们无须更改它。
我们只需要在 2 处输入我们的 IPv4 和 IPv6(如有) DNS 服务器的地址,并且关闭 Advertise router’s IP in addition to user-specified DNS. 手动指定功能如无需要,可以关闭。
在 3 处,我们没有必要打开它。如果要打开它,也请一定明白你在做什么。在实际操作中同时打开 1 2 和 3 会不定时且随机引起网络风暴。

最后分享一些我用的 upstream DNS Server和设置:

https://dns11.quad9.net/dns-query
https://dns.cloudflare.com/dns-query
tls://1dot1dot1dot1.cloudflare-dns.com
tls://dot.sb
tls://dot.pub

Parallel requests.

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据