简介

有时候会遇到使用网络命令会报错can,t find,比如nslookup www.baidu.com。原因之一就是无法解析到域名的IP地址,这极有可能是系统的dns配置有问题。如果是使用VMware虚拟机的话,会经常遇到这个问题。解决方法有两种:

  • 将虚拟机网络适配器改成桥接模式
  • 配置系统的dns

详解

配置dns的方法有三种:网卡配置、resolv.conf文件、hosts文件

网卡配置

  1. ifconfig查看网卡序号,一般为eth0
  2. 编辑vi /etc/sysconfig/network-scripts 网卡下面的ifcfg-eth0 配置文件添加DNS服务器地址

我经常使用kali系统(基于Ubuntu),没有这个/etc/sysconfig/目录。

resolv.conf文件

  1. 编辑 vim /etc/resolv.conf 文件
  2. 末行添加 nameserver dns服务器地址,我写的宿主主机地址

16777413628328.png

文件配置讲解

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

domain声明主机的域名。很多程序用到它,如邮件系统。

search它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。

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

domain和search同时存在。如果同时存在,则要指定sortlist。

hosts文件

  1. 编辑 vim /etc/hosts 文件
  2. 添加解析记录,看下图

1677742044162.png
第一列是IP地址,第二列是域名,其中127.0.0.1的解析记录有两条。后三行是ipv6地址。
可见,这个文件是自己添加解析记录,而不是配置dns服务器地址。

host.conf文件

这个文件的目录是/etc/host.conf。内容如下:
16777424049423.png
multi表示是否允许/etc/hosts文件允许主机指定多个IP地址。on允许,off不允许。

优先级

系统会优先其中一种方式进行dns解析,如果没有成功才会使用下一种方式dns解析,首先查询hosts文件。
hosts文件 > 网卡配置 > resolve.conf文件