resolv.conf在Linux系统中的作用

本文探讨了Linux系统中resolv.conf配置文件的作用,详细解释了domain、nameserver和search指令的功能。通过实际案例,展示了如何通过修改DNS服务器地址提高网络访问速度。

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

本人在工作中发现Linux 能PING IP, 但不能PING 域名。能PING IP 说明工作的主板网络是正常的,而无法PING 域名就显得有点不合理了,于是便从网络上查找原因发现大部分的解释都和 resolv.conf 这个配置文件相关。

一. resolv.conf 文件说明

resolv.conf是resolver类库使用的配置文件,每当一个程序需要通过域名来访问internet上面的其它主机时,需要利用该类库将域名转换成对应的IP,然后才可进行访问

关于设定resolv.conf 的参考文档:http://dns-learning.twnic.net.tw/bind/intro4.html

以下内容为参考文档的抄写(本人仅将繁体改为简体,便于本人阅读)


此档案可用来设定 DNS 用戶端要求名称解析时,所定义的各项內容。我们分別来看一个完整的resolv.conf的档案:

domain twnic.com.tw
nameserver 192.168.10.1
nameserver 192.168.2.5
search twnic.com.tw twnic.net.tw
				
  • “domain”指定本地的网域名称,如果查询时的名称沒有包含小数点,则会自动补上此处的网域名称为字尾再送给DNS伺服器。
  • “nameserver”指定用戶端要求进行名称解析的 nameserver IP位址,在此可指定多部DNS伺服器,则用戶端将会依序提出查询要求。
  • “search”这个选项为非必要选项,而功能在于若使用者指定主机名称查询时,所需要搜寻的网域名称。例如,当我们设 “search twnic.com.tw”时,当DNS伺服器在做名称解析过程中,无法对输入的名称,例如pc1,找出相对应的IP时,则DNS会利用search的设定值加上需查询的名称,即pc1.twnic.com.tw来进行解析,解析失败时则会尝试pc1.twnic.net.tw。
  • 需要注意的是当我们想尝试多种在沒有包含小数点,于字尾补上所需要搜寻的网域名称时,我们会在"search"中指定几种组合给DNS伺服器,而不能在"domain"中指定。因为“domain”是指定本地的网域名称,而搜寻时也以“domain”为优先尝试,如果失败之后才会尝试"search"中的组合。

二. nameserver IP 更改测试

看了上面的说明后,本人查看了/etc/resolv.conf 内容,发现没有内容,抱着试一试的态度向文件中添加了以下内容:

nameserver 10.1.1.3
nameserver 8.8.8.8

保存退出后,ping www.baidu.com 成功。

后面因工作需求想测试下下载速度,变使用 

wget -P /mnt/mmcblk0p1/ http://archive.kernel.org/centos-vault/6.1/isos/x86_64/CentOS-6.1-x86_64-LiveCD.iso

下载一个690M大小镜像进行网络测试,发现两个小时才下载了150M。

本人在查阅了DNS 服务器的介绍后,猜测网络是否与设定的DNS IP地址有关联,于是在resolv.conf 中做了如下改动:

nameserver 114.114.114.114
nameserver 10.1.1.3
nameserver 8.8.8.8

保存退出后,依然使用如下命令测试

wget -P /mnt/mmcblk0p1/ http://archive.kernel.org/centos-vault/6.1/isos/x86_64/CentOS-6.1-x86_64-LiveCD.iso

测试结果竟然是:二十分钟左右690M大小文件下载完成。

 

PS: 当然本人实验了几次,在同样的配置文件下,有时下载速度会很慢(还是有疑问?)。

       DNS 服务器地址介绍可以参考文档: https://www.cnblogs.com/bkchengzheng/p/5565769.html

### Linux `resolv.conf` 文件配置与作用 #### 配置项解释 `/etc/resolv.conf` 是一个至关重要的文件,它定义了域名解析器(DNS resolver)如何查找并连接到指定的名称服务器来完成域名查询操作[^3]。 - **nameserver**: 这是最常见的条目之一,指定了用于解析主机名的一个或多个IP地址。通常情况下,可以有不超过三个`nameserver`记录。例如: ```bash nameserver 192.168.66.2 ``` - **search**: 定义了一组默认域,在尝试匹配完全限定域名之前会先附加这些域进行搜索。这有助于简化命令行中的主机名输入方式。比如设置为`localdomain com`意味着当请求解析某个未带后缀的部分域名时,系统会在其后面加上`.localdomain` 或 `.com`再发起新的查询请求。 - **options**: 此字段允许调整一些内部参数的行为模式,虽然不常出现在标准配置里,但对于优化性能或者特定环境下的需求非常有用。选项包括但不限于超时时间、重试次数等[^4]。 #### 实际应用案例 为了防止某些服务程序意外覆盖此文件的内容,可以通过执行`chattr +i /etc/resolv.conf`使该文件变为不可更改状态,从而保护其中的重要设定不受干扰[^2]。 ```bash sudo chattr +i /etc/resolv.conf ``` 需要注意的是,一旦设置了这种属性之后,任何试图写入这个文件的操作都会失败直到移除这一限制为止(`chattr -i`)。 #### 自动生成机制 有时可以看到注释提示说这份文件是由NetworkManager或其他网络管理工具自动生成的。这意味着手动编辑可能不会持久生效,因为每次启动或网络变化都可能导致恢复初始版本。 ```bash # Generated by NetworkManager search localdomain com nameserver 192.168.66.2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值