AdguardHome目前还不支持在前端直接配置DNSCrypt协议,需要你在后台手动改写配置文件,配置文件中将会提供证书名称,私钥公钥等其他信息。
这份配置需要使用dnscrypt工具生成DNSCrypt的密钥对
1:下载解压安装
# 获取release并解压 wget https://github.com/ameshkov/dnscrypt/releases/download/v2.2.1/dnscrypt-linux-amd64-v2.2.1.tar.gz tar xf dnscrypt-linux-amd64-v2.2.1.tar.gz # 直接复制安装 mv linux-amd64/dnscrypt /usr/bin/ # 删除残余文件 rm -rf dnscrypt-linux-amd64-v2.2.1.tar.gz linux-amd64/
2:生成一对密钥,使用 --provider-name 指定证书名,--out 指定输出文件
dnscrypt generate --provider-name '5.dnscrypt-cert.55.com' --out /opt/AdGuardHome/dnscrypt.yaml
3:查看生成的内容dnscrypt.yaml,在/opt/AdGuardHome目录下,内容基本如下
4:编辑AdGuardHome的配置文件AdGuardHome.yaml,将 port_dnscrypt 从0改为5443(也可以是其他自定义端口),dnscrypt_config_file 填入刚刚生成的配置文件路径,比如我用7443端口,如下
port_dnscrypt: 7443 dnscrypt_config_file: /opt/AdGuardHome/dnscrypt.yaml
5:重新载入AdGuardHome
systemctl restart AdGuardHome
备注:如果成功开启支持了DNSCrypt,那系统的TCP与UDP的7443端口将被AdGuardHome占用,上面设置的哪个端口,就占用哪个端口的TCP与UDP。
6:开放端口 和 添加端口外部访问权限,就是上面设置的端口,开放其TCP和UDP
# 开放端口 firewall-cmd --zone=public --add-port=7443/tcp --permanent firewall-cmd --zone=public --add-port=7443/udp --permanent # 添加端口外部访问权限(这样外部才能访问,有的服务器不需要) firewall-cmd --add-port=7443/tcp firewall-cmd --add-port=7443/udp # 重启防火墙 firewall-cmd --reload
在使用时,需要用到IP地址及端口号 公钥 证书名称 这三个数据,从生成的 /opt/AdGuardHome/dnscrypt.yaml 文件中可以拿到这些信息,其中公钥为 public_key 内容,证书名称为 provider_name。
接着,我们需要把这些信息打包成DNS Stamp格式,在线生成sdns链接点击进入,填入服务器IP和端口、公钥、证书名称即可,复制右端生成的sdns链接。
备注:上面修改一处错误,上面DNSSEC后面的Provider public key这里是dnscrypt.yaml文件里面的public_key后面的内容
7:到AdGuardHome 上游DNS服务器粘贴sdns链接进去保存就可以了