浅析/etc/hosts和/etc/resolv.conf的作用

本文介绍了Linux系统中的hosts文件和resolv.conf文件的作用及其配置方法。主要内容包括如何利用hosts文件提高远程登录速度,以及如何通过配置resolv.conf解决DNS问题。

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

先介绍/etc/hosts

  • hosts文件是linux系统中负责ip地址与域名快速解析的文件
  • 以ASCII格式保存在/etc目录下
  • 文件名为hosts(不同的linux版本,文件也可能不同,比如Debian的对应文件是/etc/hostname。)
  • hosts文件包含了ip地址和主机名之间的映射,包括主机名的别名(在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用DNS服务程序来解决。)
  • 通常可以将常用的域名和ip地址映射加入到hosts文件中,实现快速方便的访问
  • 优先级:dns缓存>hosts>dns服务

读完上面六点,大概对hosts文件有个大概的了解了吧?

然后再介绍hosts文件起的作用,解决的问题

  远程登录linux主机过慢问题

     有时客户端想远程登录一台linux主机,但每次登录输入密码后都会等很长一段时间才会进入,这是因为linux主机在返回信息时需要解析ip,如果在linux主机的hosts文件事先加入客户端的ip地址,这时再从客户端远程登录linux就会变很快。
    当然!这里所说的远程登录不仅仅是ssh登录,还可以是mysql远程登录,或是文件共享的查询等。

最后介绍hosts的配置方法

  别名可以选择填写,不一定需要填。

ip 主机名  [别名]

例子:

192.168.120.22 Master
192.168.120.21 Node1

第二部分是介绍/etc/resolv.conf

背景故事:

    我们是否有过这样的经历:在用浏览器上网的时候上不去,而qq就可以登上去。为什么?dns出了问题,其中之一的办法就是可以通过配置/etc/resolv.conf来解决这个问题。

 

是什么?

    /etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。

 

有什么作用?

  • 可以提供DNS服务器域名和IP地址,帮助解析

  • search选项可以补全短域名

怎么用?

 

假如resolv.conf没有任何配置,你可能是这样的状态:

 

  • 假如resolv.conf没有任何配置并且网络没有配置DNS,你可能是这样的状态:

[root@nick ~]# ping www.baidu.com
ping: unknown host www.baidu.com

连不通外网!!!

 

我们可以往里面加一个域名服务器

格式:
nameserver 114.114.114.114

 
  • search的用法

有的resolv.cof里面有配置search,他的作用是补全域名。

配置之前:

配置之后:

我在这边故意配置三个hahaaaa.com 、baidu.com和qq.com

 

为什么他解析的是www.baidu.com呢?

 

第一:search是从左到右解析的,直到解析成功

所以顺序是hahaaaa.com->baidu.com->qq.com。

 

第二:因为hahaaaa.com是无效域名,所以解析到baidu.com就终止尝试了。

 

总结一点:

 

DNS解析的步骤:

1. 查找/etc/hosts

 

2. 根据nameserver查找域名

 

3. 如果在nameserver查找不到域名就进行search补全,重新走1~2步

 

 

 

DNS解析的步骤:

1. 查找/etc/hosts

 

2. 根据nameserver查找域名

 

3. 如果在nameserver查找不到域名就进行search补全,重新走1~2步

 

这是一个用于管理 Linux 系统 `/etc/resolv.conf` 文件的脚本片段,主要用于检查、修改或创建该文件。以下是详细解析: --- ### 脚本功能分析 1. **判断文件是否存在** ```bash if [ -f /etc/resolv.conf ]; then ``` 这行代码会检测系统中是否已经存在 `/etc/resolv.conf` 文件。如果存在,则进入 `then` 分支;若不存在,则跳转至 `else` 分支。 2. **移除文件的只读属性** ```bash sudo chattr -i /etc/resolv.conf ``` 如果文件存在,首先需要解除其不可变属性 (`immutable`),以便对其进行编辑操作。`chattr -i` 表示关闭文件的不可变标志位。 3. **删除指定内容** 下面几行使用了 `sed` 工具逐条匹配并删除特定配置项: ```bash sudo sed -i '/domain huawei.com/d' /etc/resolv.conf sudo sed -i '/search huawei.com/d' /etc/resolv.conf sudo sed -i '/10.129.0.84/d' /etc/resolv.conf sudo sed -i '/10.129.0.148/d' /etc/resolv.conf sudo sed -i '/10.144.90.20/d' /etc/resolv.conf sudo sed -i '/10.98.48.39/d' /etc/resolv.conf ``` 具体作用是通过正则表达式找到包含某些关键字(如 `domain huawei.com`, `search huawei.com` 或者特定 DNS 地址)的行,并将其从文件中删除。 4. **当文件不存在时的操作** 若未发现 `/etc/resolv.conf` 文件,则执行以下动作: ```bash sudo touch /etc/resolv.conf sudo chattr -i /etc/resolv.conf ``` 首先用 `touch` 创建一个新文件,然后再次设置文件为不可变状态。 --- ### 总结 此脚本的核心任务是对 `/etc/resolv.conf` 文件进行维护,包括清理旧有的 DNS 设置以及确保文件的存在性安全性(防止未经授权的更改)。通常这种场景出现在需要标准化网络配置的企业环境内。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值