nsswitch.conf
我们知道计算机之间的通讯是通过ip地址进行的,而对于域名,最终其实是要转成ip的,于是就有了DNS(Domain Name System,即域名系统启动),对于CentOS系统(其他Linux应该也是如此),当它请求一个域名时,它会去查找
/etc/hosts
和/etc/resolv.conf
两个文件,hosts
文件对应的是直接指定的DNS记录,而resolv.conf
文件对应的是域名服务器ip地址,先查找哪个文件,后查找哪个文件,是由/etc/nsswitch.conf
决定的,但默认情况下,/etc/nsswitch.conf
文件指定的是先查看/etc/hosts
文件:#hosts: db files nisplus nis dns
hosts: files dns
其中的
files
就是指/etc/hosts
文件,而“DNS”就是指DNS服务器(而DNS服务器是要从/etc/resolv.conf
中查找的),而files放在dns前面,就代表先从/etc/hosts
文件中搜索。
如果hosts文件中不存在这个域名,它才会去
resolv.conf
查找域名服务器地址,然后再去请求域名服务器,最终由域名服务器把请求的域名对应的实际ip返回给Linux系统。hosts
hosts文件路径是
/etc/hosts
,它其实是最早的用于实现“域名”这个概念的文件,就纯粹为了方便,在hosts文件中写了一个名称与ip的对应列表,比如我们最熟悉的localhost
就在hosts文件中被指向了回本的127.0.0.1ip:127.0.0.1 localhost
ifcfg-eth0
在Linux服务器中,设置ip地址是在以下文件中设置的:
其中的N是正整数,一般只有一个网卡时,这个N就是0,也就是
ifcfg-eth0
,如果有多个网卡(多个网卡就可以设置多个ip),就有ifcfg-eth1
、ifcfg-eth2
、……。
但是
ifcfg-eth0
除了可以设置ip信息,还能设置DNS(毕竟ip跟域名本身就有对应关系),一般是设置两个域名“DNS1”和“DNS2”:
修改“ifcfg-eth0”后,要重启网卡才能生效:
resolv.conf
刚开始讲nsswitch.conf时就说到,域名服务器ip就是从“resolv.conf”文件中读取的,那我们设置Linux的DNS,在“resolv.conf”中设置就好了吗?
答:是可以在“resolv.conf”中设置,但不提倡。因为“resolv.conf”文件经常是根据“ifcfg-eth0”中的配置的DNS1/DNS2自动生成的(重启网卡时就会生成),格式是这样的:
# Generated by SolusVM
nameserver 8.8.8.8
nameserver 8.8.4.4
如果你手动修改这个文件,修改后马上生效,不需要重启网卡。
如果你不想“resolv.conf”被覆盖,那么把“ifcfg-eth0”中的“PEERDNS”的值修改为“no”即可,当你设置使用DHCP的时候,PEERDNS默认值是yes的。