全家手机电视的广告和钓鱼域名我用一个开源DNS全拦了"

admin 2026-10-16 13:56:56 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

全家手机电视的广告和钓鱼域名 我用一个开源DNS全拦了

原创

紫禁
紫禁

紫禁玄科

2026年10月14日 00:45
四川

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

SECURITY · INTELLIGENCE

全家手机电视的广告和钓鱼域名 我用一个开源DNS全拦了

2026年10月05日 · 8 min

GitHub#开源测评#AdGuardHome#家庭网络防护

01

一、拖了很久的一件事,这周末终于干了

说个真事。我家老爷子的手机最近又弹出了那种「中奖」浮窗,关都关不掉;客厅那台智能电视开机先播 20 秒广告,遥控器按烂了也跳不过。我做安全这行这么多年,家里的事反而一直懒得弄。这周末终于把拖了半年的活干了:给全家的上网通道装了一道闸——AdGuard Home。

先交代背景:AdGuard Home 是 GitHub 上 AdguardTeam 的开源项目,目前 37230 颗星,Go 写的,一个网络级的广告和追踪拦截 DNS 服务器。听起来很技术,其实干的事特别朴素——你家里所有设备上网前都要先「问路」(查域名对应的 IP),它就守在这个问路的路口,把已知的广告、追踪、钓鱼、恶意域名直接拦下,设备连都连不上。

装完第一晚,我在它的查询日志里看到一台智能音箱半夜还在往外发统计请求,被拦了 47 次。说实话那一刻挺感慨:不是家里设备「坏了」,是它们太勤快了,勤快到你睡觉时还在替别人打工。

全家设备的上网通道,其实只需要守好一个路口

02

二、它到底是什么:把「问路的路口」守住

展开说两句原理,讲人话版。我们上网输入一个网址,设备其实不知道对方在哪,要先问 DNS 服务器「这个域名的 IP 是多少」。传统防护是在设备上装软件,一台台管;AdGuard Home 反过来,直接在家里网络里放一个自己的 DNS,全家设备问路都问它。它维护着一张「黑名单」,命中广告、追踪、钓鱼、恶意域名的,直接返回一个空地址(所谓 DNS 黑洞),连接根本发不出去。

官方 README 里有句话我很认同:「最重要的是,这是你自己的服务器,控制权完全在你手里。」用公共 DNS 省事,但拦什么、放什么都是别人说了算;自建则可以自己加规则、看全网活动、按设备分别配置。这一点对安全从业者来说,价值远超「去个广告」。

它开箱就带的能力,我挑几个实测有用的:内置 DHCP 服务器、管理界面支持 HTTPS、上游支持加密 DNS(DoH/DoT/DNSCrypt)、可以自己对外提供 DoH 服务、直接拦截钓鱼和恶意域名、家长控制(拦成人域名)、强制搜索引擎安全搜索、按设备(客户端)分别配置策略、不用 root 也能跑。跨平台也做得扎实,Linux、macOS、Windows、BSD 都有原生包。

03

三、我怎么装的:二十分钟,两条路任选

我的部署环境是一台家里常年开机的小主机,Docker 方式;如果你是树莓派或者一台 Linux 虚拟机,官方一键脚本更省事。两条路都放出来,照抄即可:

部署命令(二选一,含时间戳便于回看日志)

部署 AdGuard Home(任选一种,我用的是 Docker 这种)

date '+%F %T 开始部署'

方式一:官方一键脚本(Linux / macOS / BSD 通用)

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh

方式二:Docker(我家里那台小主机就是这么跑的)

docker run -d --name adguardhome \

--restart unless-stopped \

-p 53:53/tcp -p 53:53/udp \

-p 3000:3000/tcp -p 80:80/tcp \

-v /opt/adguardhome/work:/opt/adguardhome/work \

-v /opt/adguardhome/conf:/opt/adguardhome/conf \

adguard/adguardhome

date '+%F %T 完成,浏览器打开 http://设备IP:3000 走初始化向导'

装完浏览器打开 3000 端口走初始化向导,设置管理密码、选上游 DNS(默认就行,想加密就选 DoH)、确认监听端口。真正决定效果的是最后一步:把家里路由器的 DHCP 的 DNS 服务器地址指向这台机器。这样手机、电视、音箱、笔记本全部自动走它,一台都不用装客户端。

有个小坑提醒一句:现在不少手机 App 会「硬编码」公共 DNS 绕过你的设置,个别设备还默认开「私人 DNS」(安卓叫这个名)。想全拦干净,路由器侧配合把 53 端口的出站请求强制转发到 AdGuard Home,这个在 Wiki 的「强制重定向 DNS」一节有完整做法。

一台设备守在路口,全家的手机电视都归它管

04

四、装完第一周的真实体验

说点测评的干货,好用的和不顺手的都讲。

查询日志是杀手级功能。每台设备查了什么域名、被拦没被拦,一目了然。我就是靠它发现那台智能音箱的异常请求的。家里有老人小孩的,这个日志还能当「上网体检报告」看,哪个 App 在偷偷连什么地方,数据不会骗人。

自定义规则五分钟上手。遇到漏网的广告域名,在日志里点一下就能加拦截规则;反过来,误伤了某个正常网站,也能一键放行。规则语法和主流过滤列表兼容,网上现成的钓鱼、恶意域名列表可以直接订阅。

家长控制是意外收获。开启成人域名拦截加强制安全搜索,小孩的平板单独划一个客户端配置,策略只对它生效。这比在每台设备上装「青少年模式」省心太多,而且卸不掉——DNS 层的管控,App 想绕也得有那个技术能力。

每天看一眼的健康检查脚本(Python,可直接运行)

!/usr/bin/env python3

agh\_check.py — 看一眼家里 DNS 拦截情况(stdlib,只读查询,带时间戳)

import json, urllib.request, datetime, base64

HOST = \"http://127.0.0.1\"          # 换成你家 AdGuard Home 的地址

user, pwd = \"admin\", \"你的管理密码\"

def now():

return datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")

def api(path):

req = urllib.request.Request(HOST + path)

tok = base64.b64encode((\"%s:%s\" % (user, pwd)).encode()).decode()

req.add\_header(\"Authorization\", \"Basic \" + tok)

return json.load(urllib.request.urlopen(req, timeout=8))

if \\_name\\ == \"\\main\\_\":

try:

s = api(\"/control/stats\")

top = (s.get(\"top\_queried\") or [{}])[0]

blk = (s.get(\"top\_blocked\") or [{}])[0]

print(f\"[{now()}] 今日查询 {s.get('num\_dns\_queries', 0)} 次\")

print(f\"[{now()}] 拦截 {s.get('num\_blocked\_filtering', 0)} 次\")

print(f\"[{now()}] 最常查域名 {top.get('name', '-')}\")

print(f\"[{now()}] 最常拦域名 {blk.get('name', '-')}\")

except Exception as e:

print(f\"[{now()}] 连不上 AdGuard Home:{e}(先确认服务已启动)\")

上面这个脚本我挂在了家里的定时任务上,每天跑一次,输出长这样:「2026-10-05 09:12:33 今日查询 8421 次 / 拦截 1174 次」。注意复制代码后如报非法字符 U+00A0,把行内空格重打一遍即可。

05

五、和 Pi-Hole 摆在一起比什么

这个赛道最有名的对手是 Pi-Hole,官方 README 直接给了一张对比表。我按实测感受翻译一下重点:拦截广告和自定义列表两者都行,但 AdGuard Home 开箱自带的明显更多——内置 DHCP、管理界面自带 HTTPS、上游加密 DNS(DoH/DoT/DNSCrypt)、原生跨平台、对外提供 DoH 服务、默认拦钓鱼和恶意域名、家长控制和强制安全搜索,这些在 Pi-Hole 那边要么要装额外软件,要么得 SSH 手工配。

1. 求省心:AdGuard Home 更合适,装完就走完整流程,普通用户也能半小时上手。

2. 求折腾:Pi-Hole 社区插件生态更杂,喜欢拼装组件的玩家可能更开心。

3. 求跨平台:AdGuard Home 有 Windows/macOS 原生包,Pi-Hole 基本得靠 Docker 或 Linux。

4. 我的选择:家里用选前者,不为别的,就为「坏了我能十分钟重装回来」。

和传统浏览器插件比,DNS 方案的短板是拦不了同域名广告,长处在「管到全家」:智能电视、音箱、摄像头这些装不了插件的设备,只有 DNS 层管得住。两者不冲突,我在电脑上照样开着 uBlock,AdGuard Home 负责兜底。

06

六、三个必须说清楚的局限

1. YouTube、Twitch 的视频广告拦不掉。广告和内容共用域名,DNS 层天然无解,官方也明确写了这是已知限制,未来要靠内容代理补。

2. 社交平台的「赞助」信息流拦不掉。同一个道理,微博、朋友圈里的推广内容不在它职责范围内。

3. 它是防线,不是万能药。钓鱼域名拦截依赖过滤列表的更新,新出的骗局域名总有窗口期。碰到「转账」「验证码」「屏幕共享」这类话术,该挂电话还是得挂电话——没有任何工具能替你做那个判断。

另外部署本身要一点点动手能力:改路由器 DNS、固定机器 IP、偶尔看一眼服务状态。完全不想碰网络设置的人,用公共 AdGuard DNS 也能拿到三成效果,只是少了日志和自定义规则这些精髓。

风险域名在问路的路口就被拦下,连接根本发不出去

07

七、写在最后:为什么安全从业者该给家里装这个

干这行久了有个体会:我们天天给客户讲「纵深防御」,自己家反而常常是裸奔的。AdGuard Home 这种东西的价值,不在于它多高深,而在于它把防护从「一个人的自觉」变成「全家的默认」。老人不会装杀毒软件,小孩分不清钓鱼链接,但只要他们连的是家里的 WiFi,这道闸就一直在。

从反诈的角度看,它拦下的钓鱼和恶意域名是第一道闸:很多「假客服」「假中奖」页面,域名刚注册几天就进了各家的恶意列表,DNS 层直接把路掐断,比事后劝阻高效得多。当然,它拦不住电话那头的骗子,防骗的最后一步永远是人。

从选设备到长期维护,部署其实就这六步

测评结论:37230 颗星给得不冤。免费、开源、数据不出家门(官方明确不收集使用统计),二十分钟部署,全家受益。如果你也被家里那台「关不掉广告」的电视折磨过,这个周末就可以动手。

你家路由器后面挂过类似的防护吗?遇到过被误伤的好网站吗?评论区聊聊,踩过的坑我下篇接着写。

觉得有用?点个「在看」让更多人看到

紫禁玄科

专注网络安全 · 深度分析

【研究报告】主要国家APT网络攻击态势剖析与主动防御情报体系研究——基于2015—2026年公开事件的国家画像、证据融合与分层预警" 网络安全文章

【研究报告】主要国家APT网络攻击态势剖析与主动防御情报体系研究——基于2015—2026年公开事件的国家画像、证据融合与分层预警"

本报告基于2015至2026年公开事件,研究主要国家APT攻击态势与主动防御情报体系,构建国家画像、证据融合与分层预警框架,强调审慎归因与置信度管理,提出面向不同部门的情报产品体系与建设路径,为防御决策提供参考。
评论:0   参与:  0