当前位置: 首页 > news >正文

在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_max=4194304" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.tcp_fastopen=3" | sudo tee -a /etc/sysctl.conf

特别提醒:如果设备同时运行Pi-hole,务必修改默认的53端口,可以用这个命令检查端口冲突:

sudo netstat -tuln | grep -E ':53\s'

3. 三种安装方式详解

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/tcp

3.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 CapAdd

3.3 源码编译安装

适合需要深度定制的用户,以Go 1.20环境为例:

git clone https://github.com/AdguardTeam/AdGuardHome cd AdGuardHome make

编译时会自动下载前端依赖,如果卡在npm install阶段,试试这个技巧:

# 使用国内镜像源 export GOPROXY=https://goproxy.cn,direct export npm_config_registry=https://registry.npmmirror.com

4. 家庭网络拓扑实战配置

4.1 路由器级联方案

我家用的华硕AC86U路由器,在「LAN > DHCP服务器」设置里,把DNS服务器指向AdGuardHome的IP。更彻底的做法是直接修改WAN口的DNS,这样连访客Wi-Fi的设备也能去广告。不同品牌路由器设置路径:

  • TP-Link:网络参数 > WAN口设置
  • 小米:常用设置 > 上网设置 > 自定义DNS
  • OpenWRT:网络 > 接口 > 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 5353

5. 广告过滤规则进阶技巧

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配置

推荐三组国内可用且速度快的加密DNS:

tls://dns.pub tls://dns.alidns.com tls://dot.libredns.gr

配置时有个玄学问题:部分ISP会干扰TLS握手。解决方法是在Bootstrap DNS里添加:

223.5.5.5 119.29.29.29

6.2 缓存与响应优化

在「设置 > DNS设置」里调整这些参数:

  • 缓存大小:建议设64MB(默认4MB太小)
  • 乐观缓存:开启可提升重复访问速度
  • 响应延迟:勾选"最快IP地址"模式

我做的对比测试:开启所有优化后,DNS查询平均耗时从78ms降到23ms,效果堪比换千兆宽带。

7. 家庭设备特殊适配

7.1 安卓电视去广告秘籍

小米电视需要额外步骤:

  1. 进入开发者模式(设置-关于-产品型号连按5次)
  2. 关闭"MIUI优化"
  3. 在AdGuardHome屏蔽这些域名:
||api.ad.xiaomi.com^ ||config.kuyun.com^ ||de.pandora.xiaomi.com^

7.2 iOS设备完美适配

iPhone用户常遇到Wi-Fi感叹号问题,解决方案:

  1. 在AdGuardHome开启「过滤HTTPS证书」
  2. 手机安装CA证书(访问http://your-ip:3000/cert.crt)
  3. 设置 > 通用 > 关于本机 > 证书信任设置

有个坑要注意:iOS 15+系统会定期重置网络设置,建议把DNS改成手动后截图保存。

http://www.jsqmd.com/news/1092156/

相关文章:

  • leetcode:两个数组的交集
  • Linux应急响应实战:从Webshell排查到系统加固的完整指南
  • 告别图片!三种 CSS 原生方案实现任意方向三角形
  • AutoUnipus终极指南:快速掌握U校园智能刷课工具完整教程
  • MouseTester:免费开源的鼠标性能终极测试工具
  • Top10大考察
  • 从工具函数中注入消息
  • Python自动化工具:5分钟快速创建Gmail账号的完整指南
  • 【保姆级教程】小米6X编译LineageOS 20.0完整指南(Android 13)
  • 从高斯光学到凸轮曲线:机械补偿式三组元连续变焦系统设计全流程解析
  • 错误码429频发?OpenAI官方文档未明说的限流逻辑,如何用3种动态退避策略实现零失败调用,
  • HarmonyOS NEXT 实战:RelativeContainer 百分比/比例定位全面指南
  • 二维数组知识
  • DIN EN ISO 5084
  • 3D Web 服务器环境搭建
  • Android 17 新特性全览
  • SpringBoot自动装配底层全流程
  • Agent的诞生(二):让模型开始调用工具
  • AES与Serpent对称加密算法:原理、对比与Python/Android/Qt实战
  • 为什么你用光模块测试FPGA IBERT不通
  • OneMore插件终极指南:如何用160+个强大功能彻底改造你的OneNote体验
  • GESP4级C++考试语法知识(一、指针(9、指针与函数调用)
  • 特殊上位机权限管理方案
  • AI插件开发实战:基于JS脚本的Illustrator色标生成器设计与实现
  • Matlab2020b 从零到一:一份详尽的个人安装与避坑指南
  • 今天发现采用360下载wps比网页版快多了,下载的是同一个版本。-但是重新安装了wps,还是有些卡顿,稍微好了一丢丢,这个到底什么原因?
  • 三角洲S10裂变新赛季上线[特殊字符]Mac玩家再也不用错过核电站新图!
  • SMUDebugTool完全指南:专业级AMD Ryzen处理器硬件调试工具深度解析
  • C# CAD二次开发消息提示技巧
  • 如何免费解锁Wand专业版:告别订阅费的终极指南