统信UOS默认优先使用/etc/hosts解析域名,需确保nsswitch.conf中“hosts: files resolve [!UNAVAIL=return] dns”且files排首位,再重启systemd-resolved并用getent、ping和resolvectl验证生效。

您需要让统信UOS系统在域名解析时优先使用本地/etc/hosts文件中的映射,而非DNS服务器返回的结果,否则访问内部服务时可能被公共DNS劫持或解析错误。
确认系统解析顺序是否已按预期生效
统信UOS默认使用systemd-resolved作为本地DNS解析器,它将/etc/hosts排在最高优先级——但前提是nsswitch.conf配置正确。先验证当前行为:
执行命令getent hosts example.local(将example.local替换为您hosts中定义的测试域名)。若返回127.0.0.1或对应IP,则说明hosts已生效;若返回公网IP或无输出,说明解析链未走hosts。
检查关键配置:grep "^hosts:" /etc/nsswitch.conf。正确输出应为hosts: files resolve [!UNAVAIL=return] dns——其中files代表/etc/hosts,必须排在resolve和dns之前。
修改nsswitch.conf强制hosts优先
如果上一步发现files不在最前,需手动调整:
第一步:用管理员权限打开配置文件:sudo nano /etc/nsswitch.conf。
第二步:找到以hosts:开头的行,将其修改为:hosts: files resolve [!UNAVAIL=return] dns。【必须确保files是第一个条目,否则系统会跳过hosts直接查DNS】
第三步:按Ctrl+O保存→回车确认→Ctrl+X退出。
第四步:重启解析服务使变更立即生效:sudo systemctl restart systemd-resolved。
验证hosts是否真正优先
执行ping -c 1 internal.service(替换为hosts中定义的任意域名),观察响应IP是否与/etc/hosts中设置一致。
若仍解析失败,运行resolvectl query internal.service查看完整解析路径——输出中第一行“Found in local /etc/hosts”表示成功命中,若显示“Using DNS server”则说明nsswitch.conf未生效或文件权限异常。
检查/etc/hosts权限:ls -l /etc/hosts,正确权限应为-rw-r--r-- 1 root root。若非此权限,执行sudo chmod 644 /etc/hosts修复。

















