使用 Unbound 搭配 Adguard Home 自建安全 DNS
- 内容介绍
- 文章标签
- 相关推荐
使用 Unbound 搭配 Adguard Home 自建安全 DNS
1. 背景
突如其来想要试试 Unbound ,毕竟是不通过公共DNS,直接传统递归 DNS 到权威服务器,与Adguard Home搭配就能实现简单自建安全DNS,还不用依赖公共DNS
这次配置了 Unbound 支持 ecs,并且调整了缓存配置(非必需),以后再研究别的模块
2. 操作
之前就建好了Adguard Home,这次只涉及 Unbound docker版本的建立
2.1 创建 docker-compose.yml 文件
以 1Panel 应用商店安装的Adguard Home为例,其他方式安装的可以参考
# 指定使用外部网络`1panel-network`
networks:
1panel-network:
external: true
services:
unbound:
# 找到的目前还在更新的一个unbound镜像
image: madnuttah/unbound:latest
container_name: unbound
restart: unless-stopped
# 将unbound加入1panel-network网络,并且固定IP地址
networks:
1panel-network:
ipv4_address: 172.18.0.253
# 显式声明unbound暴露端口
expose:
- "5335/tcp"
- "5335/udp"
environment:
# 时区
TZ: Asia/Shanghai
HEALTHCHECK_PORT: 5335
# 设置为true且没有定义用户时,则以root用户运行,防止权限问题(也可能不用加这个)
DISABLE_SET_PERMS: "true"
volumes:
# 持久化/conf.d目录,用于自定义unbound配置
- ./conf.d/:/usr/local/unbound/conf.d/:ro
healthcheck:
test: /usr/local/unbound/sbin/healthcheck.sh
interval: 60s
retries: 5
start_period: 15s
timeout: 30s
# WUD检查容器更新,没有安装WUD的可以删掉,也可以参考我前面的komari配置文件中的WUD配置方法
labels:
- "wud.watch=true"
- "wud.trigger.include=docker.auto"
2.2 创建 Unbound 自定义配置片段
首先在docker-compose.yml同目录下创建conf.d文件夹
sudo mkdir -p conf.d
编辑配置片段
sudo nano conf.d/config.conf
配置片段如下:
server:
# ECS 配置
module-config: "subnetcache validator iterator"
send-client-subnet: 0.0.0.0/0
send-client-subnet: ::0/0
client-subnet-zone: .
client-subnet-always-forward: yes
max-client-subnet-ipv4: 24
max-client-subnet-ipv6: 56
# 缓存优化(可选)
msg-cache-size: 64m
rrset-cache-size: 64m
key-cache-size: 32m
neg-cache-size: 16m
2.3 运行 Unbound
sudo docker compose up -d
检查日志是否正常
sudo docker compose logs -f
正常运行应该显示如下:
image-202604052110022621510×526 43.2 KB
2.4 给 Adguard Home 配置 Unbound 作为上游
看图做就行
image-202604052111403931454×464 39.9 KB
image-202604052111531021212×1034 125 KB
3. 验证
[!TIP]
推荐安装DNS解析工具 GitHub - natesales/q: A tiny command line DNS client with support for UDP, TCP, DoT, DoH, DoQ and ODoH. · GitHub
在任意平台运行以下命令
q /s https://dns.seaya.li/dns-query /subnet 8.8.8.0/24 ip.cn
q /s https://dns.seaya.li/dns-query /subnet 111.31.0.0/16 ip.cn
得到的解析结果不同应该就是ECS启用成功了,如图:
image-202604052119208581481×849 58.3 KB
网友解答:--【壹】--:
而且非公开自用,adgh 的界面还是挺方便的
--【贰】--:
unbound支持doh呀。何必再加adguard?
interface: 0.0.0.0@443
tls-service-key: “/etc/unbound/xxx.key”
tls-service-pem: “/etc/unbound/xxx.pem”
https-port: 443
do-tcp: yes
--【叁】--:
感谢大佬教程
--【肆】--:
因为已经有了 adgh 了,既然有了就不动了,还有自带的一些规则
使用 Unbound 搭配 Adguard Home 自建安全 DNS
1. 背景
突如其来想要试试 Unbound ,毕竟是不通过公共DNS,直接传统递归 DNS 到权威服务器,与Adguard Home搭配就能实现简单自建安全DNS,还不用依赖公共DNS
这次配置了 Unbound 支持 ecs,并且调整了缓存配置(非必需),以后再研究别的模块
2. 操作
之前就建好了Adguard Home,这次只涉及 Unbound docker版本的建立
2.1 创建 docker-compose.yml 文件
以 1Panel 应用商店安装的Adguard Home为例,其他方式安装的可以参考
# 指定使用外部网络`1panel-network`
networks:
1panel-network:
external: true
services:
unbound:
# 找到的目前还在更新的一个unbound镜像
image: madnuttah/unbound:latest
container_name: unbound
restart: unless-stopped
# 将unbound加入1panel-network网络,并且固定IP地址
networks:
1panel-network:
ipv4_address: 172.18.0.253
# 显式声明unbound暴露端口
expose:
- "5335/tcp"
- "5335/udp"
environment:
# 时区
TZ: Asia/Shanghai
HEALTHCHECK_PORT: 5335
# 设置为true且没有定义用户时,则以root用户运行,防止权限问题(也可能不用加这个)
DISABLE_SET_PERMS: "true"
volumes:
# 持久化/conf.d目录,用于自定义unbound配置
- ./conf.d/:/usr/local/unbound/conf.d/:ro
healthcheck:
test: /usr/local/unbound/sbin/healthcheck.sh
interval: 60s
retries: 5
start_period: 15s
timeout: 30s
# WUD检查容器更新,没有安装WUD的可以删掉,也可以参考我前面的komari配置文件中的WUD配置方法
labels:
- "wud.watch=true"
- "wud.trigger.include=docker.auto"
2.2 创建 Unbound 自定义配置片段
首先在docker-compose.yml同目录下创建conf.d文件夹
sudo mkdir -p conf.d
编辑配置片段
sudo nano conf.d/config.conf
配置片段如下:
server:
# ECS 配置
module-config: "subnetcache validator iterator"
send-client-subnet: 0.0.0.0/0
send-client-subnet: ::0/0
client-subnet-zone: .
client-subnet-always-forward: yes
max-client-subnet-ipv4: 24
max-client-subnet-ipv6: 56
# 缓存优化(可选)
msg-cache-size: 64m
rrset-cache-size: 64m
key-cache-size: 32m
neg-cache-size: 16m
2.3 运行 Unbound
sudo docker compose up -d
检查日志是否正常
sudo docker compose logs -f
正常运行应该显示如下:
image-202604052110022621510×526 43.2 KB
2.4 给 Adguard Home 配置 Unbound 作为上游
看图做就行
image-202604052111403931454×464 39.9 KB
image-202604052111531021212×1034 125 KB
3. 验证
[!TIP]
推荐安装DNS解析工具 GitHub - natesales/q: A tiny command line DNS client with support for UDP, TCP, DoT, DoH, DoQ and ODoH. · GitHub
在任意平台运行以下命令
q /s https://dns.seaya.li/dns-query /subnet 8.8.8.0/24 ip.cn
q /s https://dns.seaya.li/dns-query /subnet 111.31.0.0/16 ip.cn
得到的解析结果不同应该就是ECS启用成功了,如图:
image-202604052119208581481×849 58.3 KB
网友解答:--【壹】--:
而且非公开自用,adgh 的界面还是挺方便的
--【贰】--:
unbound支持doh呀。何必再加adguard?
interface: 0.0.0.0@443
tls-service-key: “/etc/unbound/xxx.key”
tls-service-pem: “/etc/unbound/xxx.pem”
https-port: 443
do-tcp: yes
--【叁】--:
感谢大佬教程
--【肆】--:
因为已经有了 adgh 了,既然有了就不动了,还有自带的一些规则

