如何配置LinuxDNS服务器 resolv.conf文件详解

resolv.conf是linux系统中dns解析的核心配置文件,位于/etc/resolv.conf,用于定义dns服务器地址、搜索域及解析行为选项;1. nameserver指定最多3个dns服务器ip,系统按顺序尝试;2. search设置最多6个域名后缀用于不完整域名的自动补全;3. domain定义主机主域名,会被search覆盖,不应与search共存;4. options配置解析器参数,如timeout、attempts、rotate和ndots以优化查询行为;实际配置需注意该文件常为符号链接,由systemd-resolved或networkmanager动态管理,手动修改可能被覆盖;永久配置应通过nmcli、netplan等工具进行,避免直接编辑文件;验证可通过cat查看配置,nslookup、dig测试解析,systemd-resolve查看状态,确保dns生效,正确理解resolv.conf有助于排查网络与解析问题。

如何配置LinuxDNS服务器 resolv.conf文件详解

linux系统中,

resolv.conf

文件是DNS解析的核心配置文件,它决定了系统如何查找域名对应的IP地址。虽然现代Linux发行版大多使用

systemd-resolved

NetworkManager

动态管理DNS,但理解

resolv.conf

的结构和配置仍然非常重要。


一、resolv.conf 文件的作用

resolv.conf

是DNS解析器(resolver)的配置文件,位于

/etc/resolv.conf

。当系统需要解析域名(如访问网站、ping域名等)时,会读取该文件中的DNS服务器地址和搜索规则,来完成域名到IP的转换。


二、resolv.conf 常见配置项详解

以下是

resolv.conf

中常见的配置指令及其含义:

1.

nameserver

(DNS服务器地址)

指定DNS服务器的IP地址,最多可配置3个。

nameserver 8.8.8.8 nameserver 8.8.4.4 nameserver 114.114.114.114
  • 系统会按顺序尝试这些DNS服务器,失败后切换下一个。
  • 推荐使用可靠的公共DNS或企业内部DNS服务器。
  • 不要配置过多
    nameserver

    ,通常1~3个足够。

2.

search

(搜索域)

设置默认的域名搜索后缀。当你输入一个不完整的域名(如

host1

),系统会自动尝试在这些域中查找。

search example.com local.net

此时执行:

ping host1

系统会依次尝试解析:

  • host1.example.com
  • host1.local.net

⚠️ 注意:search 最多只能设置6个域,且不建议设置过多,以免影响解析效率。

3.

domain

(本地域名)

设置本地主机的主域名,通常由系统自动设置,与主机名相关。

domain example.com
  • 如果设置了
    domain

    ,它会作为默认的搜索域(相当于

    search example.com

    )。

  • search

    domain

    不应同时使用,否则

    search

    会覆盖

    domain

4.

options

(解析器选项)

用于调整DNS解析行为,支持多个参数,常见如下:

options timeout:2 attempts:3 rotate

常用选项说明:

  • timeout:seconds

    :每次DNS查询超时时间(默认5秒)

  • attempts:n

    :重试次数(默认2次)

  • rotate

    :轮询使用

    nameserver

    ,避免始终使用第一个

  • ndots:n

    :当域名中点的数量 ≥ n 时,优先使用完整域名解析(如

    ndots:2

    a.b.c

    直接解析,不加search后缀)

示例:

options ndots:1

可让

google.com

这类域名不经过 search 域拼接,提升解析效率。


三、resolv.conf 的实际配置示例

# /etc/resolv.conf nameserver 8.8.8.8 nameserver 114.114.114.114 search example.com dev.local options timeout:2 attempts:3 rotate

这个配置表示:

  • 使用Google和国内114公共DNS
  • 解析不完整域名时,先查
    example.com

    ,再查

    dev.local
  • 每次查询最多2秒超时,最多尝试3次,轮询DNS服务器

四、注意事项与常见问题

1. 文件可能被自动覆盖

现代Linux系统中,

/etc/resolv.conf

通常是符号链接,指向由

systemd-resolved

NetworkManager

动态生成的文件。

ls -l /etc/resolv.conf # 输出可能为: # lrwxrwxrwx 1 root root 39 Apr 1 10:00 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
  • 如果你手动修改该文件,重启网络或系统后可能被重置。
  • 正确做法:通过网络管理工具配置DNS。

2. 如何永久配置DNS?

  • 使用NetworkManager(桌面或服务器常用):

    nmcli con modify "网络连接名" ipv4.dns "8.8.8.8 114.114.114.114" nmcli con modify "网络连接名" ipv4.dns-search "example.com" nmcli con up "网络连接名"
  • 修改Netplanubuntu 18.04+):

    编辑

    /etc/netplan/*.yaml

    network:   version: 2   ethernets:     eth0:       dhcp4: no       addresses:         - 192.168.1.100/24       gateway4: 192.168.1.1       nameservers:         addresses: [8.8.8.8, 114.114.114.114]         search: [example.com, local.net]

    应用配置:

    sudo netplan apply
  • 静态修改(不推荐,除非无动态管理)

    如果确定系统不使用

    systemd-resolved

    ,可直接编辑

    /etc/resolv.conf

    ,但建议先备份:

    sudo cp /etc/resolv.conf /etc/resolv.conf.bak echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

    并设置文件为只读防止被覆盖:

    sudo chattr +i /etc/resolv.conf   # 锁定文件 sudo chattr -i /etc/resolv.conf   # 解锁(后续可修改)

五、验证DNS配置是否生效

# 查看当前resolv.conf内容 cat /etc/resolv.conf  # 测试域名解析 nslookup google.com dig example.com  # 查看DNS解析统计(如果使用systemd-resolved) systemd-resolve --status  # 临时测试使用特定DNS dig @8.8.8.8 google.com

基本上就这些。

resolv.conf

虽然简单,但它是Linux网络通信的基石之一。理解其配置逻辑,能帮助你快速排查网络连接、域名解析失败等问题。关键是:别只改文件,要看系统由谁在管理它。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享