在Linux部署AdGuardHome:构建家庭网络去广告DNS网关

发布时间:2026/6/29 22:29:53
在Linux部署AdGuardHome:构建家庭网络去广告DNS网关 1. 为什么你需要一个家庭级去广告DNS网关家里智能设备越来越多手机、平板、电视盒子整天弹广告看个视频前面总有一分钟无法跳过的贴片广告网页里时不时蹦出恭喜中奖的悬浮窗。这些广告不仅烦人还可能拖慢网络速度甚至存在隐私风险。我去年给父母家部署AdGuardHome后最直观的变化是——老爷子再也没打电话问我手机总弹出购物广告怎么关了。传统浏览器插件只能解决单台设备的问题而AdGuardHome的妙处在于它能从网络底层拦截广告。想象一下它就像是你家网络的门卫所有设备发出的DNS请求都要经过它检查。当检测到广告域名时直接返回空结果广告根本加载不出来。实测在200M宽带环境下网页加载速度平均提升17%智能电视开机广告从45秒降为3秒直达主界面。2. 硬件准备与系统环境配置2.1 选择最适合的硬件设备我用树莓派4B做主力测试机4GB内存版连续运行三个月零崩溃。旧笔记本改造更划算淘汰的i3-3110M笔记本去掉屏幕和键盘功耗直降到8W性能却比树莓派强三倍。有个朋友甚至用二十年前的Atom小主机跑得飞起关键看三点x86/arm架构兼容官方提供两种架构的二进制文件内存≥1GB实际占用约300MB留足缓存空间持久供电建议配个UPS电源防断电2.2 Linux系统精简优化在Ubuntu Server 22.04上实测最稳定CentOS Stream 9的systemd管理更方便。分享几个必做优化# 关闭不必要的服务视具体环境调整 sudo systemctl disable --now avahi-daemon cups bluetooth # 优化TCP协议栈 echo net.core.rmem_max4194304 | sudo tee -a /etc/sysctl.conf echo net.ipv4.tcp_fastopen3 | sudo tee -a /etc/sysctl.conf特别提醒如果设备同时运行Pi-hole务必修改默认的53端口可以用这个命令检查端口冲突sudo netstat -tuln | grep -E :53\s3. 三种安装方式详解3.1 官方二进制直装方案这是最推荐新手的方案我整理了完整流程# 下载最新版自动识别架构 curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh # 手动安装示例适用于内网隔离环境 wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz tar xvf AdGuardHome_*.tar.gz cd AdGuardHome sudo ./AdGuardHome -s install安装后别急着访问3000端口先配置防火墙sudo ufw allow 53/tcp sudo ufw allow 53/udp sudo ufw allow 3000/tcp3.2 Docker容器化部署适合已有Docker环境的用户这个编排文件是我优化过的版本version: 3 services: adguard: image: adguard/adguardhome container_name: adguardhome ports: - 53:53/tcp - 53:53/udp - 3000:3000/tcp volumes: - ./work:/opt/adguardhome/work - ./conf:/opt/adguardhome/conf restart: unless-stopped cap_add: - NET_ADMIN重点说下权限问题很多教程没提NET_ADMIN能力集导致DNS响应变慢。建议用这个命令验证容器权限docker inspect adguardhome | grep -A5 CapAdd3.3 源码编译安装适合需要深度定制的用户以Go 1.20环境为例git clone https://github.com/AdguardTeam/AdGuardHome cd AdGuardHome make编译时会自动下载前端依赖如果卡在npm install阶段试试这个技巧# 使用国内镜像源 export GOPROXYhttps://goproxy.cn,direct export npm_config_registryhttps://registry.npmmirror.com4. 家庭网络拓扑实战配置4.1 路由器级联方案我家用的华硕AC86U路由器在「LAN DHCP服务器」设置里把DNS服务器指向AdGuardHome的IP。更彻底的做法是直接修改WAN口的DNS这样连访客Wi-Fi的设备也能去广告。不同品牌路由器设置路径TP-Link网络参数 WAN口设置小米常用设置 上网设置 自定义DNSOpenWRT网络 接口 LAN DHCP选项4.2 多子网隔离方案别墅或复式住宅常用多AP方案建议在主路由做端口转发# iptables示例需根据实际IP修改 iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 192.168.1.100:53 iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to 192.168.1.100:53有个坑要注意部分光猫会强制劫持53端口解决办法是用非标准端口运行AdGuardHome再通过iptables转发# AdGuardHome改用5353端口 sudo sed -i s/bind_port: 53/bind_port: 5353/ /opt/AdGuardHome/conf/AdGuardHome.yaml # iptables转发规则 iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-port 53535. 广告过滤规则进阶技巧5.1 中文环境推荐规则集经过三个月测试这套组合拦截效果最佳基础规则https://anti-ad.net/easylist.txt覆盖95%国内广告视频增强https://gitee.com/halflife/list/raw/master/ad.txt含腾讯/爱奇艺去片头隐私保护https://hosts.nfz.moe/127.0.0.1/full/hosts屏蔽统计跟踪特殊需求可添加# 屏蔽智能电视开机广告 ||ad.uniontech.com^ ||tv.icntv.xyz^ ||ads.ott.cibn.com^5.2 自定义规则语法精要遇到漏网之鱼时用这些语法手动添加||example.com^屏蔽整个域名||good.ad.com^白名单例外/ad-banner.jpg/正则匹配图片URL$script,third-party仅拦截第三方脚本实测案例某视频APP的广告用/^https?:\/\/[\w-]\.ad\.com\/v\d\/st\?/这个正则全部搞定。6. 隐私与性能调优6.1 DNS-over-TLS配置推荐三组国内可用且速度快的加密DNStls://dns.pub tls://dns.alidns.com tls://dot.libredns.gr配置时有个玄学问题部分ISP会干扰TLS握手。解决方法是在Bootstrap DNS里添加223.5.5.5 119.29.29.296.2 缓存与响应优化在「设置 DNS设置」里调整这些参数缓存大小建议设64MB默认4MB太小乐观缓存开启可提升重复访问速度响应延迟勾选最快IP地址模式我做的对比测试开启所有优化后DNS查询平均耗时从78ms降到23ms效果堪比换千兆宽带。7. 家庭设备特殊适配7.1 安卓电视去广告秘籍小米电视需要额外步骤进入开发者模式设置-关于-产品型号连按5次关闭MIUI优化在AdGuardHome屏蔽这些域名||api.ad.xiaomi.com^ ||config.kuyun.com^ ||de.pandora.xiaomi.com^7.2 iOS设备完美适配iPhone用户常遇到Wi-Fi感叹号问题解决方案在AdGuardHome开启「过滤HTTPS证书」手机安装CA证书访问http://your-ip:3000/cert.crt设置 通用 关于本机 证书信任设置有个坑要注意iOS 15系统会定期重置网络设置建议把DNS改成手动后截图保存。