/etc/resolv.conf文件

本文详细解析了resolv.conf文件的配置与作用,包括nameserver、domain、search和sortlist等关键字的含义与使用场景,是理解DNS配置不可或缺的指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 cat /etc/resolv.conf

[root@hadoop03 software]# cat /etc/resolv.conf
# Generated by NetworkManager


# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
nameserver 114.114.114.114
nameserver 8.8.8.8

它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。

resolv.conf的关键字主要有四个,分别是:

nameserver    //定义DNS服务器的IP地址
domain       //定义本地域名
search        //定义域名的搜索列表
sortlist        //对返回的域名进行排序

最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。

 
nameserver       表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。

domain      声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。

search       它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。 
domain和search不能共存;如果同时存在,后面出现的将会被使用。

sortlist           允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。

### 修改 DNS 配置文件以更改系统 DNS 设置 在 Linux 系统中,`/etc/resolv.conf` 文件是 DNS 客户端配置文件,用于指定 DNS 服务器的 IP 地址。然而,直接修改该文件可能无法长期生效,因为它的内容通常由其他工具(如 `resolvconf` 或 `NetworkManager`)动态生成[^1]。为了确保修改后的 DNS 设置在系统重启后仍然有效,可以按照以下方法操作。 #### 方法一:通过 `/etc/resolvconf/resolv.conf.d/base` 文件进行修改 如果系统使用了 `resolvconf` 工具,则可以通过编辑 `/etc/resolvconf/resolv.conf.d/base` 文件来设置 DNS 服务器。具体步骤如下: 1. 使用文本编辑器打开 `/etc/resolvconf/resolv.conf.d/base` 文件: ```bash sudo vim /etc/resolvconf/resolv.conf.d/base ``` 2.文件中添加 `nameserver` 行,指定新的 DNS 服务器地址。例如: ```plaintext nameserver 8.8.8.8 nameserver 8.8.4.4 ``` 3. 保存并关闭文件。 4. 更新 `resolvconf` 配置: ```bash sudo resolvconf -u ``` 此时,`/etc/resolv.conf` 文件将被更新为包含新设置的 DNS 服务器地址[^1]。 #### 方法二:通过网络接口配置文件进行修改 如果系统使用了网络管理工具(如 `ifcfg-*` 文件),可以通过编辑网络接口配置文件来设置 DNS 服务器。例如,对于 CentOS 或 RHEL 系统,可以编辑 `/etc/sysconfig/network-scripts/ifcfg-eth0` 文件: 1. 打开网络接口配置文件: ```bash sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 ``` 2. 添加或修改以下行: ```plaintext DNS1=8.8.8.8 DNS2=8.8.4.4 ``` 3. 保存并关闭文件。 4. 重启网络服务以应用更改: ```bash sudo systemctl restart network ``` DNS 设置将在网络服务重启后生效[^2]。 #### 方法三:通过 `/etc/network/interfaces` 文件进行修改 如果系统使用了 Debian 或 Ubuntu 的传统网络配置方式,可以通过编辑 `/etc/network/interfaces` 文件来设置 DNS 服务器。例如: 1. 打开 `/etc/network/interfaces` 文件: ```bash sudo vim /etc/network/interfaces ``` 2. 在网络接口配置中添加 `dns-nameservers` 行。例如: ```plaintext auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4 ``` 3. 保存并关闭文件。 4. 重启网络服务以应用更改: ```bash sudo systemctl restart networking ``` #### 方法四:通过 NetworkManager 进行修改 如果系统使用了 `NetworkManager`,可以通过其图形界面或命令行工具设置 DNS 服务器。例如,使用 `nmcli` 命令: 1. 查看当前活动的网络连接: ```bash nmcli connection show ``` 2. 修改指定连接的 DNS 设置: ```bash nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 8.8.4.4" ``` 3. 重启网络连接以应用更改: ```bash nmcli connection down "连接名称" nmcli connection up "连接名称" ``` #### 注意事项 - 如果系统启用了 `NetworkManager`,则手动修改 `/etc/resolv.conf` 文件可能会被覆盖[^3]。 - 修改完成后,可以通过以下命令检查 DNS 设置是否生效: ```bash cat /etc/resolv.conf nslookup google.com ``` ```bash # 示例代码:验证 DNS 设置 cat /etc/resolv.conf nslookup google.com ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值