AdGuard Home如何设置阿里公共DNS服务器

本章节介绍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)

截屏2024-08-28 14

3.DNS设置

您在安装AdGuard Home完成后,访问 Web 界面进行配置,打开浏览器,访问:

http://<Your_Server_IP>:3000 //默认 3000 端口

根据界面提示进行初始配置,配置完成后,Web 界面会显示以下选项:

截屏2024-07-23 16

请选择“设置-DNS设置”,如下图所示:

截屏2024-07-23 16

您在上游DNS服务器中添加阿里公共DNS DoH地址,DoH地址分为非鉴权模式和鉴权模式,推荐用户使用鉴权模式,鉴权模式可保障用户身份安全,不被第三方未授权者盗用。以下分别介绍鉴权模式和非鉴权模式如何使用:

  • 鉴权模式

在上游服务器中添加阿里公共DNS DoH地址:

image

//DNS-over-HTTPS设置如下:
https://label.alidns.com/dns-query
//DNS-over-TLS设置如下:
tls://label.alidns.com
//DNS-over-QUIC设置如下:
quic://label.alidns.com
说明

labelkey+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

为了方便用户使用鉴权模式生成DoHURL地址,我们提供了脚本代码以便用户使用,如果用户需要实现定时更新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版本及以上即可。截屏2024-09-13 10

  • 非鉴权模式使用方式

请按如下步骤打开DoH接入开关:

  1. 递归解析(公共DNS) 页面选择 接入配置 页签。

  2. 单击 接入指引 栏下的 启用状态 开关按钮,将开关打开。截屏2024-08-28 14

在上游服务器中添加阿里公共DNS DoH地址:

截屏2024-07-23 17

//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服务器,您需要在设备上进行配置,请参考“设置指导”。

截屏2024-07-23 17

截屏2024-07-23 17