内网DNS查询返回错误IP,/etc/hosts配置未生效问题咨询
内网DNS查询返回错误IP,/etc/hosts配置未生效问题咨询
嗨,这个问题我之前排查过好多次,咱们来拆解一下原因:
首先得明确一个关键点:host命令本身就是专门用于直接查询DNS服务器的工具,它默认会跳过本地的/etc/hosts配置,直接向系统预设的DNS服务器发起请求。
你看到的foo.internal.domain.com这个结果,是因为系统的DNS搜索域默认配置了internal.domain.com,当你用host -t a foo时,它自动把foo补全成了完整域名foo.internal.domain.com,然后去DNS服务器查这个域名的A记录,自然返回的是DNS里存的10.43.55.23。
那怎么验证/etc/hosts的配置是否真的生效呢?你可以试试这些工具:
- 直接执行
ping foo,正常情况下会返回你在/etc/hosts里设置的10.74.74.76 - 用
getent hosts foo命令,它会严格遵循系统/etc/nsswitch.conf里的主机解析规则(一般是先查本地文件再查DNS),能直接显示/etc/hosts里的记录
如果你的/etc/nsswitch.conf里hosts条目配置的是files dns(这是大多数系统的默认配置),那像浏览器、curl、ping这类常规应用都会优先读取/etc/hosts的内容,只有host、dig这类纯DNS查询工具会绕过本地配置直接查DNS。
备注:内容来源于stack exchange,提问作者deostroll
相关产品推荐
相关产品推荐

