DNS轮询通过为同一域名配置多条相同A记录实现基础负载分发,需确保主机名、类型、线路完全一致,启用“启用循环”选项,合理设置TTL(300–600秒),并验证解析结果轮换。
在 windows 本地 dns(即 windows server 自带的 dns 服务)中,为同一域名添加多条 a 记录是实现 dns 轮询最直接的方式。只要配置正确,dns 服务器默认就会启用循环(round robin)响应机制,无需额外开启负载均衡服务。
确认 DNS 服务器已启用轮询功能
Windows DNS 默认开启轮询,但建议手动验证和确保:
- 打开“DNS 管理器”(dnsmgmt.msc)→ 右键 DNS 服务器名称 → “属性” → “高级”选项卡
- 勾选 “启用循环(Round Robin)”(若未勾选,请勾选并点击“确定”)
- 同时建议勾选 “启用 netmask 排序”(可选,用于优先返回同网段 IP,提升内网访问效率)
批量添加多条相同域名的 A 记录
不推荐逐条手动添加,推荐使用 PowerShell 或 dnscmd.exe 批量操作:
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
-
PowerShell 方式(推荐,更直观可控):
以管理员身份运行 PowerShell,执行:Add-DnsServerResourceRecordA -ZoneName "example.com" -Name "app" -IPv4Address 192.168.10.10 -TimeToLive 00:10:00Add-DnsServerResourceRecordA -ZoneName "example.com" -Name "app" -IPv4Address 192.168.10.11 -TimeToLive 00:10:00Add-DnsServerResourceRecordA -ZoneName "example.com" -Name "app" -IPv4Address 192.168.10.12 -TimeToLive 00:10:00 -
dnscmd 批量方式(兼容旧环境):
命令格式:dnscmd /RecordAdd example.com app A 192.168.10.10
可将多条命令写入 .bat 文件一键执行,例如:dnscmd . /RecordAdd example.com app A 192.168.10.10dnscmd . /RecordAdd example.com app A 192.168.10.11dnscmd . /RecordAdd example.com app A 192.168.10.12
验证轮询是否生效
添加完成后,需实际测试解析结果是否轮换:
- 清空本地 DNS 缓存:
ipconfig /flushdns - 在客户端反复执行:
nslookup app.example.com - 观察返回的 IP 是否按顺序变化(如 10.10 → 10.11 → 10.12 → 10.10…)
- 注意:若客户端或中间 DNS 缓存过久,可能看到重复 IP;建议用未缓存的客户端(如新虚拟机)或加
-debug参数排查
注意事项与常见问题
轮询看似简单,但几个细节容易导致失效:
- 所有 A 记录必须属于同一正向查找区域(如 example.com),且主机名(Name)完全一致(如都填 app,不是 app1/app2)
- TTL 值不宜设得过大(建议 300–600 秒),否则客户端会长时间缓存单一 IP,失去轮询意义
- 客户端若使用公共 DNS(如 8.8.8.8),则不会走你的本地 DNS,轮询无效;确保内网客户端 DNS 指向该 Windows DNS 服务器
- 无健康检查能力——某台服务器宕机时,DNS 仍会返回其 IP;如需故障自动剔除,需升级为 DNS 策略 + 客户端子网 + 响应筛选(Windows Server 2016+)

















