我们晓得主机名对应到 IP 有两种方法,早期的方法是直接写在档案里面来对应, 后来比较新的方法则是透过 DNS 架构!那么这两种方法分别使用什么配置文件?可不可以同时存在? 若同时存在时,那个方法优先?嗯!我们先来谈一谈几个配置文件吧!
* /etc/hosts :这个是最早的 hostname 对应 IP 的档案;
* /etc/resolv.conf :这个重要!就是 ISP 的 DNS 服务器 IP 记录处;
* /etc/nsswitch.conf:这个档案则是在决定先要使用 /etc/hosts 还是/etc/resolv.conf
一般而言, Linux 的预设主机名与 IP 的对应搜寻都以 /etc/hosts 为优先,为什么呢?你可以查看一下 /etc/nsswitch.conf ,并找到 hosts 的项目:
[root@lcl ~]# cat /etc/nsswitch.conf |grep hosts
#hosts: db files nisplus nis dns
hosts: files dns
上面那个 files 就是使用 /etc/hosts,而最后的 dns 则是使用 /etc/resolv.conf的 DNS 服务器来进行搜寻啦!因此,你可以先以 /etc/hosts 来设定 IP 对应!当然啦,你也可以将他调换过来,不过,总是 /etc/hosts 比较简单,所以将他摆在前面比较好啦!
我们来了解一下/etc/resolv.conf文件
[root@lcl ~]# cat /etc/resolv.conf
nameserver 168.95.1.1
nameserver 139.175.10.20
DNS 服务器的 IP 可以设定多个,为什么要设定多个呢?因为当第一部 (照设定的顺序)DNS 挂点时,
我们客户端可以使用第二部 (上述是 139.175.10.20) 来进行查询,这多少有点像 DNS 备援功能。 通常建议至少填写两部 DNS 服务器的 IP,不过在网络正常使用的情况下,永远只有第一部 DNS 服务器会被使用来查询,其他的设定值只是在第一部出问题时才会被使用。
Tips:尽量不要设定超过 3 部以上的 DNS IP 在 /etc/resolv.conf 中,因为如果是你的区网出问题,导致无法联机到 DNS 服务器,那么你的主机还是会向每部 DNS 服务器发出联机要求,每次联机都有timeout 时间的等待,会导致浪费非常多的时间喔!
-------------
DNS主配置文件/etc/named.conf
options {
listen-on port 53 { any; }; //监听本地地址的53端口,any表示本地所有地址
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt"; //数据文件
memstatistics-file "/var/named/data/named_mem_stats.txt"; //内存的数据文件
allow-query { any; }; //允许哪些地址可以进行dns查询
recursion yes; //允许使用递归
/*
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
*/
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
forward only;
forwarders {
168.95.1.1; //先用中华电信的 DNS 当上层
139.175.10.20; //再用 seednet 当上层
};
};
• listen-on port 53 { any; }; 监听在这部主机系统上面的哪个网络接口。预设是监听在 localhost,亦即只有本机可以对 DNS 服务进行查询,那当然是很不合理啊! 所以这里要将大括号内的数据改写成 any。记得,因为可以监听多个接口,因此 any 后面得要加上分号才算结束喔! 另外,这个项目如果忘记写也没有关系,因为默认是对整个主机系统的所有接口进行监听的。
• directory "/var/named"; 意思是说,如果此档案底下有规范到正、反解的 zone file 档名时,该档名预设应该放置在哪个目录底下的意思。预设放置到 /var/named/ 底下。由于 chroot 的关系,最终这些数据库档案会被主动链接到 /var/named/chroot/var/named/ 这个目录。
• dump-file, statistics-file, memstatistics-file 与 named 这个服务有关的许多统计信息,如果想要输出成为档案的话,预设的档名就如上所述。鸟哥自己很少看这些统计资料, 所以,这三个设定值写不写应该都是没有关系的。
• allow-query { any; }; 这个是针对客户端的设定,到底谁可以对我的 DNS 服务提出查询请求的意思。原本的档案内容预设是针对 localhost 开放而已, 我们这里改成对所有的用户开放 (当然啦,防火墙也得放行才行)。不过,默认 DNS 就是对所有用户放行,所以这个设定值也可以不用写。
• forward only ; 这个设定可以让你的 DNS 服务器仅进行 forward,即使有 . 这个 zone file 的设定,也不会使用 . 的数据, 只会将查询权交给上层 DNS 服务器而已,是 cache only DNS 最常见的设定了!
• forwarders { 168.95.1.1; 139.175.10.20; } ; 既然有 forward only,那么到底要对哪部上层 DNS 服务器进行转递呢?那就是 forwarders (不要忘记那个 s) 设定值的重要性了!由于担心上层 DNS 服务器也可能会挂点,因此可以设定多部上层 DNS 服务器喔!每一个 forwarder 服务器的 IP 都需要有『 ; 』来做为结尾!