麒麟桌面系统【调整DNS解析顺序】

一、关于nsswitch.conf文件

/etc/nsswitch.conf 是 Linux 系统的 名称服务切换配置文件,用于定义系统在查找各类信息(如用户、组、主机名等)时的查询顺序和方式。其中 hosts 行的配置直接影响系统解析域名时的行为顺序。,通过合理调整 hosts 顺序,可以精准控制域名解析策略,是解决网络问题的重要调试手段。

二、麒麟桌面操作系统的默认配置

cat   /etc/nsswitch.conf

file

上图里的hosts参数解析表

参数 作用描述 对应配置文件
files 优先查询本地hosts文件 /etc/hosts
mdns4_minimal 使用mDNS协议解析.local域名(仅IPv4) /etc/nss_mdns.conf
[NOTFOUND=return] 条件控制:当mdns4_minimal返回"未找到"时,终止后续查询
dns 通过DNS服务器解析 /etc/resolv.conf
wins 通过Windows Internet Name Service解析NetBIOS名称 /etc/samba/smb.conf

三、调整顺序会改变解析优先级

以下是配置这个文件参数顺序的典型案例:

桌面系统可以用以下命令,打开编辑器直接编辑,编辑后保存退出即可。重启系统

sudo    pluma    /etc/nsswitch.conf
  1. 屏蔽广告/恶意域名

    hosts: files dns
    • /etc/hosts 中添加 0.0.0.0 ads.com 后,因 files 优先,直接屏蔽广告域名解析。
  2. 开发环境本地测试

    hosts: files dns
    • 开发时将 api.example.com 指向 127.0.0.1,确保本地服务优先于公网 DNS 记录生效。
  3. 解决 DNS 污染问题

    hosts: files dns
    • hosts 中固化正确 IP,避免被劫持的 DNS 返回错误地址。
  4. 加速内网服务访问

    hosts: files mdns4_minimal [NOTFOUND=return] dns
    • 内网机器通过 hosts 直接映射 IP,跳过 DNS 查询降低延迟。
  5. 容器/K8s 服务发现

    hosts: dns files
    • 在动态环境中让 DNS 优先,确保服务 IP 实时更新,避免 hosts 静态记录过时。
  6. 无 DNS 环境的离线运行

    hosts: files myhostname
    • 禁用 DNS 查询,完全依赖本地 hosts 和主机名解析。

五、经典问题解决方案

  1. 本地开发域名被公网解析

    • 现象app.test 总解析到公网IP而非本地
    • 解决:在hosts添加 127.0.0.1 app.test 并设置 hosts: files dns
  2. 内网机器访问缓慢

    • 现象:访问内网服务器每次都要等待DNS超时
    • 解决:在hosts添加内网IP映射,配置 hosts: files [NOTFOUND=return] dns
  3. 屏蔽广告域名失效

    • 现象:已在hosts屏蔽的域名仍能访问
    • 解决:调整顺序为 files dns 并清除浏览器缓存
  4. 典型报错修复

    • 若出现 sudo: unable to resolve host 错误,在 hosts 文件中添加:
      127.0.0.1  localhost  your_hostname
  5. 访问不了外网网站,但QQ和微信都正常

    • 可以尝试将dns参数放在files的前面或者后面:
      hosts:   files dns   mdns4_minimal [NOTFOUND=return]  wins

六、注意事项

  1. 域名解析验证

    getent   hosts   baidu.com  # 测试解析
    strace  -e  trace=openat  getent  hosts  baidu.com  # 跟踪解析过程
  2. 检查DNS缓存

    resolvectl   statistics   # 检查DNS缓存
    resolvectl   flush-caches  # 清除 systemd-resolved 服务 DNS 缓存
  3. 重启服务生效:

    sudo  systemctl  restart  systemd-resolved
  4. 修改前备份原配置:

    sudo  cp  /etc/nsswitch.conf  /etc/nsswitch.conf.bak
  5. 避免删除myhostname项,否则可能导致主机名解析异常

  6. 企业域环境慎用[NOTFOUND=return]参数,可能中断域控查询

  7. 容器环境建议保持默认dns files顺序

七、恢复默认配置

sudo sed -i 's/^hosts:.*$/hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname/' /etc/nsswitch.conf
sudo   systemctl   restart   systemd-resolved

通过合理调整DNS解析顺序,可使网络访问效率提升。建议根据实际业务需求灵活配置,兼顾安全性与效率。

发表回复 0

Your email address will not be published.