文章总结: 本文详细解析内网DNS配置的五个常见陷阱,包括DNS服务器顺序错误、反向解析缺失、TTL配置不合理、递归查询未限制及DNSSEC未开启,每个问题均提供具体修复方案。同时附AdGuardHome零基础配置教程,涵盖加密DNS、广告拦截与内网解析,适合运维人员快速排查与优化。 综合评分: 84 文章分类: 安全运营,安全工具,内网渗透,网络安全,解决方案
甲方运维收藏:内网DNS配置5个坑 第3个90%的人都踩过
宝十八 宝十八
网络安全老宋
2026年7月6日 12:00 山东
在小说阅读器读本章
去阅读
导语: 你好,我是网络安全老宋。安全攻防干货准时送达!
文章较长,全是实战命令。
内网DNS配置这事,说难不难,说简单也不简单。最难受的是,你以为配好了,实际上每天都在给自己埋雷——轻则内网访问卡顿,重则整个办公室断网。今天聊5个最常见的DNS配置陷阱,每个都带修复方案。最后加一个AdGuard Home 零基础配置教程,不用记命令,点点鼠标就能搞定加密DNS、广告拦截、内网净化——评论区说这个教程比命令行容易火,我信了。
01
DNS服务器顺序配反了
这个坑,新手踩,老手也踩。很多人觉得”主DNS配192.168.1.1,备DNS配8.8.8.8“没毛病。错。
问题在哪?很多运维把公网DNS(如8.8.8.8)填在前面,内网DNS填在后面。客户端解析oa.company.com时,先问公网DNS,公网不认识,等它超时后才轮到内网DNS——内网访问慢如蜗牛,根源就在这。
正确做法:当企业存在内网域名时,应保证负责该域名解析的DNS服务器优先可达。简单说:谁负责这个域名,谁排在前面。
Shell · /etc/resolv.conf
# Linux /etc/resolv.conf # 内网DNS(谁负责这个域名,谁在前面) nameserver 192.168.1.10 # 内网DNS(负责 oa.company.com 等内部域名) nameserver 192.168.1.11 # 内网DNS(备) # 公网DNS(兜底,负责解析公网域名) nameserver 8.8.8.8
02
忘记配置反向解析
正向解析(域名→IP)大家都知道配,反向解析(IP→域名)经常被忽略。
后果是什么?某些服务会做反向解析验证:SSH登录时如果设置了UseDNS yes,服务器会反向解析客户端IP;邮件服务器接收邮件时会反向解析发送方IP做黑白名单判断;日志分析工具习惯把IP显示成域名,没有反向解析就显示一堆数字,你看着也难受。
配置方法(以Bind为例):
Bind · named.conf
# 正向区域zone "company.com" IN { type master; file "company.com.zone";};# 反向区域(192.168.1.0/24网段)zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.zone";};
03
TTL配置不合理
TTL(Time To Live)决定DNS记录在客户端缓存的时间。
TTL太长的坑:改了DNS记录,客户端要等TTL过期才能生效,故障切换慢,影响业务连续性。
TTL太短的坑:DNS查询频率高,内网DNS服务器压力大,客户端每次都要重新解析,访问反而变慢。
推荐配置:
- 常规记录:TTL=3600(1小时)
- 频繁变更的记录:TTL=300(5分钟)
- 故障切换用的记录:TTL=60(1分钟)
Bind · zone file
$TTL 3600 @ IN SOA ns1.company.com. admin.company.com. ( 2024062501 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL
04
DNS递归查询没限制
默认情况下,DNS服务器会帮任何客户端做递归查询——即查询它不是权威的域名。
安全风险:被用作DNS放大攻击的跳板,消耗服务器资源,泄露内网拓扑信息。
正确做法:限制递归查询范围。
Bind · named.conf
# 只允许内网网段做递归查询 acl internal-networks { 192.168.0.0/16; 10.0.0.0/8; 72.16.0.0/12; }; options { allow-recursion { internal-networks; }; recursion yes; };
05
DNSSEC忘了开
DNSSEC(DNS安全扩展)能防止DNS劫持和缓存污染攻击。很多人觉得”内网无所谓”,其实内网更需要——内网攻击更容易(物理接入成本低),员工安全意识弱(容易点钓鱼链接),内网数据更敏感(财务、人事系统)。
开启DNSSEC验证(Bind 9.16+):
Bind · named.conf options
options { dnssec-validation auto; /* Bind 9.16+ 直接写这一条即可,dnssec-enable 已废弃 */ };
⚡
AdGuard Home 零基础配置教程(UI版)
这部分专门写给不想敲命令的同学,跟着步骤点点鼠标,约30~40分钟能配好加密DNS、广告拦截、内网解析一条龙。如果是软路由或NAS上跑,时间更短。
准备:一台能跑Docker的设备
AdGuard Home 可以部署在多种设备上,不一定是VPS:
第一步:安装 AdGuard Home
SSH登录服务器,执行一键安装脚本:
Shell
curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
安装完成后,AdGuard Home 会告诉你 Web 管理界面的地址,默认是:http://你的服务器IP:3000
⚠安装完后第一时间打开管理界面改默认密码,别等着——3000端口对外开放,等于把后台暴露在公网。
第二步:设置上游 DNS 服务器
打开管理界面 → 设置 → DNS设置 → 上游DNS服务器。推荐配置(填入以下任意一组):
上游 DNS 配置
# 国内推荐(速度快,屏蔽广告+追踪) https://dnsalid.dns.li/resolve https://doh.pub/dns-query # 国外推荐(隐私保护好) https://dns.google/dns-query https://cloudflare-dns.com/dns-query # 自定义广告拦截DNS https://清洁DNS1.dns.li/resolve
💡多填几个上游 DNS,用英文逗号隔开,AdGuard Home 默认会并发查询所有上游 DNS,选择响应最快的那个返回结果(负载均衡模式)。你也可以在设置里改为”优先使用第一个”,按配置顺序来。
第三步:开启 DNS 加密(DoH/DoT)
在 DNS设置 → 加密设置 里:
第四步:配置内网 DNS 解析(DNS Rewrite)
这一步是 AdGuard Home 的灵魂——让内网域名正常解析。
打开 DNS设置 → DNS Rewrite(或 自定义DNS规则),添加内网域名映射:
AdGuard Home · DNS Rewrite 规则
# 格式:域名 $dnsrewrite=NOERROR;A;目标IP # 示例: ||oa.company.com^$dnsrewrite=NOERROR;A;192.168.1.10 ||mail.company.com^$dnsrewrite=NOERROR;A;192.168.1.11
推荐用 corp.example.com 或 internal.company.com 作为内网域名后缀,不要用 .local(.local 属于 mDNS/Multicast DNS 协议专用,如苹果的 Bonjour、Avahi,企业DNS使用会冲突)。
第五步:配置广告和追踪器拦截
打开 过滤器 → DNS黑名单,启用以下推荐规则:
推荐过滤规则
EasyList(去广告) EasyList China(中文广告) AdGuard DNS filter
开启后,广告域名直接DNS层面返回空响应,广告插件都省了。
拦截效果测试:
Shell
# 在客户端执行(测试广告域名是否被拦截) nslookup ad.doubleclick.net 你的AdGuard服务器IP # 如果返回 NXDOMAIN 或 0.0.0.0,说明拦截生效 #(AdGuard Home 也可能返回 REFUSED 或空地址,都表示拦截成功)
第六步:让你的设备用上加密DNS
路由器全局配置(推荐):登录路由器 → DHCP设置 → DNS服务器填AdGuard Home的IP → 保存。路由器配置后,连接该路由器的所有设备自动使用,无需单独配置每个设备。
验证配置是否生效
在任意设备上打开:https://browserleaks.com/dns
如果显示你的 AdGuard 服务器IP,且DNS查询类型显示”DOH”或”DOT”,说明配置成功——DNS查询已加密,但ISP仍可通过IP、SNI等推断访问目标。
快速排错清单
配置完DNS后,用这个清单自查一遍:
✅内网域名(如 oa.company.com)解析由负责它的 DNS 处理吗?
✅反向解析配了吗?
✅TTL 设置合理吗(不是随意留默认值)?
✅递归查询限制了吗(内网DNS不对外开放)?
✅DNSSEC 开了吗?
✅防火墙放行了 DNS 端口(UDP 53)吗?
✅日志功能开了吗(方便排错)?
✅DNS 缓存清了吗(改了配置客户端不生效可能是缓存问题)?
快速验证命令:
Shell · 排错命令
# 1. 测试解析是否正常 nslookup oa.company.com 192.168.1.10 # 2. 查看解析详细过程 dig +trace oa.company.com # 3. 测试反向解析 dig -x 192.168.1.100 # 4. 检查DNSSEC验证结果 dig +dnssec oa.company.com # 5. 查看DNS查询耗时 dig oa.company.com | grep "Query time"
往期精彩
运维的内网DNS进阶:Split Horizon 配置指南
渗透测试从业者的全能工具箱:76,700+ Star、185+工具一键到位(HackingTool 从零到实战)
甲方运维应急响应的日志分析利器:Klogg 大文件秒开,朴实可靠
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络安全老宋 宝十八 宝十八《甲方运维收藏:内网DNS配置5个坑 第3个90%的人都踩过》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。






评论