在Linux系统中dns1和dns2作用

Linux 系统中,dns1dns2 通常表示 主 DNS(Primary DNS)备用 DNS(Secondary DNS),它们是系统用于域名解析的服务器地址


一、定义与作用

项目 含义 优先级 作用
DNS1 主 DNS 服务器 优先使用 首选的域名解析服务器
DNS2 备用 DNS 服务器 备用使用 当主 DNS 无响应或解析失败时使用

二、配置方式与文件位置

1. NetworkManager 配置(RHEL/CentOS/Rocky 系)

通常在接口配置文件中(例如 /etc/sysconfig/network-scripts/ifcfg-eth0):

1
2
DNS1=8.8.8.8
DNS2=1.1.1.1

NetworkManager 启动后会将这些内容写入 /etc/resolv.conf

2. 直接修改 resolv.conf

如果系统未使用 NetworkManager,可以直接编辑:

1
2
nameserver 8.8.8.8
nameserver 1.1.1.1

这里第一行为 dns1,第二行为 dns2


三、联系与工作逻辑

  1. 优先级机制

    • 系统在解析域名时,优先使用第一个 DNS(dns1)
    • 如果超时或无法响应,自动切换到 dns2
    • 某些实现会在 dns1 恢复后再切回。
  2. 并行/顺序机制

    • glibc(多数 Linux 的 resolver 库)默认顺序尝试
    • 但在 systemd-resolved 或某些 DNS 客户端中,可能并行查询多个 DNS 提高响应速度。
  3. 缓存层联系

    • 如果系统有 nscdsystemd-resolved,会缓存 DNS 查询结果;
    • 此时 dns1/dns2 的切换对上层程序几乎透明。

四、示意图

用 mermaid 画出 Linux DNS 查询逻辑:

flowchart TD
    A[应用程序发起域名解析] --> B[/etc/resolv.conf/]
    B --> C{DNS1 可达?}
    C -- 是 --> D[向 DNS1 查询]
    C -- 否 --> E[向 DNS2 查询]
    D --> F[返回解析结果]
    E --> F[返回解析结果]
    F --> G[缓存解析结果(nscd/systemd-resolved)]

五、DNS设置建议

  • 若本地网络不稳定,建议设置:

    DNS1=本地/运营商DNS
    DNS2=公共DNS(如8.8.8.8)
    
  • 若使用 systemd-resolved,可查看生效配置:

    1
    resolvectl status
  • 检查 DNS 响应速度:

    1
    2
    dig @8.8.8.8 google.com
    dig @1.1.1.1 google.com