使用Docker安装配置AdGuard Home
AdguardTeam/AdGuardHome: Network-wide ads & trackers blocking DNS server
AdGuard Home 是一款免费开源的用于拦截广告和跟踪的DNS服务器,是 AdGuard DNS 的开源版本。
服务器部署的话,需要公网IP、域名
一、docker部署
version: '3.1'
services:
adguardhome:
image: adguard/adguardhome
container_name: adguardhome
restart: unless-stopped
ports:
- '53:53/tcp' #电脑直接使用的ipv4普通 DNS
- '53:53/udp' #电脑直接使用的ipv4普通 DNS
- '13080:80/tcp' # AdGuard Home 的管理面板
- '13000:3000/tcp' # AdGuard Home 的初始化配置面板
- '853:853/tcp' #DoT DNS over TLS DNS
- '853:853/udp' #DoT DNS over TLS DNS
- '13443:443/tcp' #DoH DNS over HTTPS DNS
- '13443:443/udp' #DoH DNS over HTTPS DNS
volumes:
- '/root/www/adguardhome/work:/opt/adguardhome/work'
- '/root/www/adguardhome/conf/:/opt/adguardhome/conf'
二、53端口占用解决方法
systemctl stop systemd-resolved
systemctl disable systemd-resolved
vi /etc/systemd/resolved.conf
[Resolve]
DNS=114.114.114.114 8.8.8.8 #取消注释,增加dns
DNSStubListener=no #取消注释,把yes改为no
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
之后,再重新启动docker容器。
三、安装配置
启动后打开IP:13000
进行配置,网页管理监听端口填80,下面的DNS填53,默认即可。
因为是容器部署,这里填的是容器内部端口,填外部端口反而会访问不到。
之后无脑下一步,最后访问IP:13080
即可访问管理页面。
四、管理页面配置
1、设置-DNS设置
上游 DNS
很大程度上决定了你的查询速度,不建议使用纯数字的 DNS,用加密的,不然 DNS 依旧会被污染和劫持.
tls://dns.pub
https://dns.pub/dns-query
tls://dns.alidns.com
https://dns.alidns.com/dns-query
选择并行请求。
后备 DNS
114.114.114.114
119.29.29.29
223.5.5.5
Bootstrap DNS 服务器
选最快的,用于解析上面的 DoT/DoH。最好选服务器当地所在地最快的本地运营商DNS。推荐:
9.9.9.10
149.112.112.10
2620:fe::10
2620:fe::fe:10
点击下方的"测试上游DNS"按钮,页面右下角提示"指定的 DNS 服务器现已正常运行",表示配置正确,报错就进行删除或修改。没有问题就点击应用。
DNS 缓存配置
「缓存大小」:104857600(100MB,大概能缓存 100w 条)。根据你需要设置,一般来越稍微大点好,第一次通过上游 dns 查询后,后面可以通过缓存来返回数据,会更快点。
「覆盖最小 TTL 值」:600 (Time To Live
ttl 为 0 时,表示每次都是通过上游 dns 解析,就比较慢,设置时间后,在该 TTL 时间内,则是通过缓存直接返回解析结果,会更快。)
「覆盖最大 TTL 值」:3600
将下面的“乐观缓存”勾选。保存。
其余设置项全部默认即可。
2、域名解析及反向代理
将域名如cert.domain.com解析到服务器IP,再将服务器防火墙的853、53以及映射443的端口放通。
再将证书的.cert和私钥.key复制备用
反向代理示例:
# AdguardHome反向代理
server {
listen 80;
server_name cert.domain.com;
}
server {
listen 443 ssl;
server_name cert.domain.com;
ssl_certificate /root/cert/cert.crt;
ssl_certificate_key /root/cert/cert.key;
location / {
proxy_pass http://localhost:13443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
反代之后,可通过https://IP:端口
访问控制后台,域名cert.domain.com就是DOH的解析域名。
3、dot、doh 加密设置
菜单栏打开「设置」→「加密设置」。
「启用加密(HTTPS、DNS-over-HTTPS、DNS-over-TLS)」,「服务器域名称」输入域名;「HTTPS 端口」填容器内部的,即443;「DNS-over-TLS 端口」和「DNS-over-QUIC 端口」都填853。
下面证书把前面复制的.cert和.cert和私钥.key复制备用。
4、过滤器-DNS黑名单
这个设置就是拦截广告的重头设置了。点击“添加黑名单 - 添加一个自定义列表”,输入订阅名称和地址即可。
# 秋风广告规则
## github
https://github.com/TG-Twilight/AWAvenue-Ads-Rule
## 规则
https://github.boki.moe/https://raw.githubusercontent.com/TG-Twilight/AWAvenue-Ads-Rule/main/AWAvenue-Ads-Rule.txt
# Easylist China
https://easylist-downloads.adblockplus.org/easylistchina.txt
# anti-ad
https://anti-ad.net/easylist.txt
# anti-ad补充
https://fastly.jsdelivr.net/gh/mphin/adguardhome_rules@main/Blacklist.txt
5、过滤器-自定义过滤规则
可以添加域名,对其放行。
或者增加规则里面没有自己发现的漏网之鱼。
# 阻止 example.org 域名及其所有子域名
||example.org^
# 解除对 example.org 及其所有子域名的拦截
@@||example.org^
# 对 example.org(不包括它的子域名)以 127.0.0.1 作为响应
127.0.0.1 example.org
五、客户端使用配置
非加密的DNS:直接用IP地址
DNS-over-TLS: 使用 tls://dns.domain.com 字符串。
DNS-over-HTTPS: 使用 https://dns.domain.com/dns-query 字符串。
Windows
直接用非加密的DNS
Android
- 打开设置里的私人DNS,设置指定私人DNS为dns.domain.com
- 用AdGuard for Android
iOS