首页/网络/网络排障速查/hosts 文件与 nsswitch 解析顺序
DNS 与解析排查46 条

hosts 文件与 nsswitch 解析顺序

Linux/Windows 默认先查本地 hosts 再走 DNS:『解析结果不对』时先确认 hosts 没被写死,排查 DNS 却看不到问题就栽在这。

网络排障速查网络更新于 2026-10-12

Linux 核对

Linux 核对
grep -v '^#' /etc/hosts
grep '^hosts' /etc/nsswitch.conf     # 例:hosts: files dns
getent hosts example.com              # 经 NSS 全链路(与 ping 行为一致)
strace -e trace=openat,connect getent hosts example.com 2>&1 | head -20   # 看实际走 hosts 还是 DNS

Windows 核对

Windows 核对
Get-Content C:\Windows\System32\drivers\etc\hosts | Where-Object {$_ -notmatch '^\s*#' -and $_.Trim()}
Resolve-DnsName example.com -DnsOnly    # 绕过 hosts 验证
getent hosts 与 dig 都查一遍:两者不一致=走了 hosts 或 NSS 其它源;这对『同一域名两台机器结果不同』类问题特别有效。

易错点

  • 排查只信 dig:应用走的是 NSS(hosts 优先),dig 结果不代表应用行为
  • 容器环境里 hosts 由编排平台注入,改宿主文件无效

数据来源与参考

  • nsswitch.conf(5) 手册
  • Microsoft:hosts 文件解析顺序

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌