Linux系统定期重置DNS配置的关键是使用nmcli对连接级DNS进行可控重置,先查活跃连接名,再通过ipv4.dns设内网DNS、ipv4.ignore-auto-dns禁用DHCP注入、配合down/up使配置生效,确保策略精准落地且不被覆盖。
定期重置系统 dns 配置不是为了“反复折腾”,而是确保解析行为始终符合当前网络策略——比如强制走内网 dns、剔除 dhcp 自动注入的不可信服务器、或在 dns 污染高发时段主动刷新解析链路。关键在于“可控重置”,而非简单覆盖。
Linux 系统:用 nmcli 重置连接级 DNS(推荐)
统信UOS/deepin 及多数现代 Linux 桌面系统使用 NetworkManager 管理网络,DNS 设置绑定在「连接」(Connection)上,而非全局文件。直接改 /etc/resolv.conf 容易被 NetworkManager 覆盖,也难以区分有线/无线等不同场景。
- 先查当前活跃连接名:nmcli connection show --active | grep -E 'eth|wlan|Wired|Wireless'
- 清空并重设指定连接的 DNS:sudo nmcli connection modify "有线连接" ipv4.dns "10.1.1.10 10.1.1.11" ipv4.ignore-auto-dns yes && sudo nmcli connection modify "有线连接" ipv4.method manual && sudo nmcli connection down "有线连接" && sudo nmcli connection up "有线连接"
- 加 ipv4.ignore-auto-dns yes 是关键,它阻止 DHCP 返回的 DNS 覆盖你手动设的值
Windows 系统:用 PowerShell 强制锁定接口 DNS
PowerShell 的 Set-DnsClientServerAddress 支持按接口精准操作,配合 -ResetServerAddresses 可彻底清除历史残留,避免公网 DNS 干扰内网解析优先级。
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
- 一键重置所有启用中的以太网接口:Get-NetAdapter -Physical | Where-Object {$_.Status -eq 'Up' -and $_.Name -match 'Ethernet|以太网|LAN'} | ForEach-Object { Set-DnsClientServerAddress -InterfaceAlias $_.Name -ServerAddresses '10.1.1.10','10.1.1.11' -ResetServerAddresses }
- 若需每日凌晨自动执行,用任务计划程序创建触发器,动作指向该脚本,并勾选“使用最高权限运行”
- 验证是否生效:Get-DnsClientServerAddress -AddressFamily IPv4 | Where-Object {$_.ServerAddresses}
通用脚本化:加入定时与回滚机制
定期重置不等于盲目执行。一个健壮的自动化方案应包含状态检查、备份和失败回退能力。
- 每次重置前自动备份原 DNS 配置(如 nmcli 的 connection export 或 Windows 的 Get-DnsClientServerAddress > dns-backup.log)
- 脚本开头加入校验:例如检查目标 DNS 是否可达(ping -c1 10.1.1.10 &>/dev/null || exit 1),失败则中止并告警
- 用 cron(Linux)或 Task Scheduler(Windows)设置周期任务,例如每周一上午 9 点执行:0 9 * * 1 /path/to/reset-dns.sh

















