Linux系统中hosts和resolv.conf的区别

244 阅读3分钟

前言

前几天小伙伴趁着中午偷偷跑去面试了,结果下午沮丧着脸回来了,悄悄的问了我个问题,你知道Linux系统中的resolv.conf文件是干什么用的吗,我一听,小伙子绝对是挂在了这道题上了,但是这个文件我也不清楚是干什么的,于是一顿学习。

与resolv.conf类似的文件还有一个hosts,先来说下hosts

hosts

当我们使用浏览器访问百度网站时,一般我们会在浏览器输入www.baidu.com, 当按下回车键时,浏览器会将网站地址发送到域名服务器去查找相对应的ip地址,然后到ip地址所在的服务器上去请求数据。 使用windows电脑时,如果访问公司内网的一些网站,经常要配置C:\Windows\System32\drivers\etc\hosts,hosts里面配置的内容就是内网网站的部署ip地址和网站域名的映射。这个域名是哪里来的?当然是自己定义的了。那么这里的hosts就相当于访问百度时的那个域名服务器。其实最早的还没有域名服务器的时候,hosts里面就会记录很多的ip和对应的域名地址,但是随着各式各样的网站出现,域名变得越来越多,hosts维护起来难度增大,这个时候就出现了域名服务器,域名服务器就承担起了域名解析的重任,当然了,如果我想让别人访问我的网站,那就需要先向当地的域名注册局注册域名,然后别人才能访问到。Linux的hosts和windows的hosts作用一样。都是提供域名和ip地址的映射。

hosts共有三个部分
1、ip
2、域名
3、主机别名
配置的时候可以三者都配,也可以配置ip和其他的任意两项
比如我的配置如下:

image.png

使用http://127.0.0.1:8888/test和http://localhost:8888/test效果一样。

在Linux环境下啊可以使用man hosts命令查看hosts的官网说明。

resolve.conf

上面介绍hosts时提到一个域名解析器,如果在浏览器中输入www.baidu.com 时,浏览器会将请求先发送到域名服务器上去解析,然后找到真正的ip,最后去对应服务器上获取数据, 那么浏览器时如何知道域名解析器在哪里呢,其实就是resolve.conf这个文件中配置的。

相当于windows中的

image.png resolve.conf有几个参数:

image.png nameserver:表示的是域名服务器的ip; 该配置是最为重要的一个,其他的配置项都是可选的。图中配置的是中国电信天翼云的域名解析器

search: 如果输入的域名不能被域名服务器解析,那么就要将这里配置的内容做为www.的后缀拼接成新的域名去尝试解析,我的理解是,如果serch中配置了test1.com test2.com,如何我访问www.baibai.com结果解析失败了,那么就会尝试使用www.test1.com再去访问域名服务器解析,如果还是失败则继续拼接下一个进行解析。

options:这个没太看明白,但是意思应该是配合serach使用的,如果传入的域名中‘.’的个数少于options: n 时,就要将serch中的做为后缀拼接进去,然后再进行解析。

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第9天,点击查看活动详情