本章节介绍AdGuard Home如何设置阿里公共DNS服务器
1.概述
AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。
AdGuard Home 作为 DNS 服务器以重新路由跟踪域到'黑洞',从而防止您的设备连接这些服务器。当前您可在 MacOS,Linux(x32 / x64)和 Raspberry Pi 上安装 AdGuard Home。GitHub 仓库上有专门的安装过程描述。
2.开通递归解析(公共DNS)
请在云解析DNS产品控制台 > 递归解析(公共DNS) > 接入配置 路径下查看 专属配置ID(Account ID)。
3.DNS设置
您在安装AdGuard Home完成后,访问 Web 界面进行配置,打开浏览器,访问:
http://<Your_Server_IP>:3000 //默认 3000 端口
根据界面提示进行初始配置,配置完成后,Web 界面会显示以下选项:
请选择“设置-DNS设置”,如下图所示:
您在上游DNS服务器中添加阿里公共DNS DoH地址,DoH地址分为非鉴权模式和鉴权模式,推荐用户使用鉴权模式,鉴权模式可保障用户身份安全,不被第三方未授权者盗用。以下分别介绍鉴权模式和非鉴权模式如何使用:
鉴权模式
在上游服务器中添加阿里公共DNS DoH地址:
//DNS-over-HTTPS设置如下:
https://label.alidns.com/dns-query
//DNS-over-TLS设置如下:
tls://label.alidns.com
//DNS-over-QUIC设置如下:
quic://label.alidns.com
label由key+ts'+AccessKeyID'三个参数依次拼接组成。注:加号(+)表示字符串相连,并非实际使用“+”。
label 总长为 63个字节
ts为无符号整型时间戳(单位:秒),从 1970.1.1 以来的秒数
ts' = ts/3600 定长7个字节(若不足7字节,在前面补0)
key = sha1(AccessKeySecret+ts'*3600+AccessKeyID) 定长前40个字节
AccessKeyID' = AccessKeyID定长前16个字节
注意:由于label中时间戳有效期为1天,所以如果您使用鉴权模式需要在过期前及时更新URL地址。
AccessKeyID为阿里云官网中云解析-公共DNS控制台中的AccessKey ID
AccessKeySecret为阿里云官网中云解析-公共DNS控制台中的AccessKey Secret
为了方便用户使用鉴权模式生成DoH的URL地址,我们提供了脚本代码以便用户使用,如果用户需要实现定时更新DoH地址的功能需要根据业务增加相应代码。
#!/usr/bin/python
# -*- coding:utf-8 -*-
import hashlib
import time
# 定义常量
AccessKeyID = "xxxxxxxxxxxxxxx"
AccessKeySecret = "xxxxxxxxxxxxxxx"
# 获取当前时间戳(秒)
ts = int(time.time())
# 计算 ts' = ts / 3600,确保定长为7个字符(前面补0)
ts_ = str(ts // 3600).zfill(7)
# 计算 key = sha1(AccessKeySecret + ts' * 3600 + AccessKeyID)
key_input = AccessKeySecret + str(int(ts_) * 3600) + AccessKeyID
key = hashlib.sha1(key_input.encode()).hexdigest()[:40]
# 获取 AccessKeyID' = AccessKeyID 的前16个字符
AccessKeyID_ = AccessKeyID[:16]
# 拼接 label
label = key + ts_ + AccessKeyID_
# 输出完整的 URL
url = "https://{}.alidns.com/dns-query".format(label)
print(url)
如果用户在AdGuard Home设置鉴权模式下的阿里公共DNS服务器地址时,提示报错bad hostname label rune '_',那么用户将dnsproxy升级到0.73.0版本及以上即可。
非鉴权模式使用方式
请按如下步骤打开DoH接入开关:
在 递归解析(公共DNS) 页面选择 接入配置 页签。
单击 接入指引 栏下的 启用状态 开关按钮,将开关打开。
在上游服务器中添加阿里公共DNS DoH地址:
//DNS-over-HTTPS设置如下:
https://AccountID.alidns.com/dns-query
//DNS-over-TLS设置如下:
tls://AccountID.alidns.com
//DNS-over-QUIC设置如下:
quic://AccountID.alidns.com
您需要将url中的AccountID替换为在控制台“接入配置”页面展示的 Account ID。
4.不同设备上配置AdGuard服务器
如果您想使用AdGuard Home中配置的上游DNS服务器,您需要在设备上进行配置,请参考“设置指导”。