DNS:是因特网的通信协议的名称

BIND:DNS服务器,提供这个DNS服务的软件

早期    /etc/hosts:主机名称与IP的映射文件

现在   DNS系统

主机名称和域名:举例 www.baidu.com  主机名是:www  域名是:baidu.com,主机全名:www.baidu.com

DNS的查询过程:递归式和迭代式

DNS正解:由主机名查找IP的过程,可以自行设置

反解:由IP查找主机名,必须请上层管理员设置

Zone:一个正解或反解的设置就是一个Zone

DNS安装包:

bind-utils:包含一些配置和测试工具,客户端搜索主机名称的相关指令

bind :DNS服务器主程序

bind-chroot:是一个安全增强工具,用来改变bind服务器的默认目录

caching-nameserver:用于建立高速缓存DNS服务器

BIND的设置需要以下文件:

1,/etc/named.conf :配置文件,规范主机的设置,zone file和权限的设置等

2,/var/named/:数据库文件默认放在此目录中,记录主机名称与IP对应等

3,/etc/sysconfig/named:由该文件控制是否启动chroot及额外参数

4,/var/run/named:named程序执行时默认将pid-file放置在此目录

vi /etc/sysconfig/named
ROOTDIR=/var/named/chroot

我们将named chroot,并且变更的更目录为/var/named/chroot,由于根目录变更到/var/named/chroot,但是bind的相关程序是需要/etc/,var/named,/var/run,所以bind的相关程序所需要的全部数据会存放在以下目录中:
/var/named/chroot/etc/named.conf
/var/named/chroot/var/named/zone_file1
/var/named/chroot/var/named/zone_file2
/var/named/chroot/var/run/named
事实上/etc/sysconfig/named是由/etc/init.d/named启动时读入,所以你可以直接修改/etc/init.d/named脚本
另外还需要注意,/var/run/named/这个目录是要让bind的程序写入的,所以它的权限必须让named用户可以写入才行。

DNS Server 端的设定

DNS的服务类型

1、主域名服务器(Master)
这种类型的DNS 本身含有域名配置文件 (就是有Zone),这个文件就是设置正解或反解 的“数据库”,所以它本身具有提供Internet 查询所需的数据。

2、辅助域名服务器(Slave)

如果我需要有4 台主机提供DNS 服务,且4 台主机的内容相同,那 么只要指定一台主机为Master,其它3 台为该Master 的Slave 主机,当修改一个IP与名 称的对应时,只要手动修改Msater 那台主机上的配置文件然后重 BIND 服务,其他三台 Slave就会自动被通知更新了。这样依赖就解决了维护管理工作量大的问题。

3、Cache-Only
Cache-Only 这种类型的DNS 主机没有自己的数据库,仅用于帮助Client 端向外部DNS 主机请求数据。简单来说,可以把它看着一个代理人,通常设置在防火墙上。

DNS Master 的设置
1,主机配置文件是/etc/namd.conf
2,每个正解,反解都需要一个文件,而这个文件名是由/etc/named.conf设置的
3,目前的bind程序已经进行了chroot了,可以查看/etc/sysconfig/named,知道根目录
4,当dns查询时,如数据库本身没有数据库,则前往root(.) 或forwarders主机查询
5,dns服务器的架设需要上层dns的授权才可以成为合法的dns服务器(如果配置的是内部DNS服务器,则不需要外部授权)
6,判断named是否启动成功,务必要查阅/var/log/messages内的信息。

/etc/named.conf配置文件
/etc/named.conf配置文件是整个LINUX上dns的核心,这个文件主要包括三方面的内容:
1,规范dns服务器的使用权限,包括能否查询,forward与否,master/slave架构
2,设置zone以及zonefile的所在
3,设置dns主机管理接口以及先关的金钥文件(keyfile)

对设置方面,你需要注意以下几点:

在整体服务器的环境与使用权限方面,主要通过options{….}设置处理的
在named.conf中批注使用”//“,而每一个设置项目最后需要分号”;“

#vi /etc/named.conf
Options
{
Directory “/var/named”;
Dump-file “/var/named/data/cache_dump.db”;
Statistics-file “/var/named/data/named_stats.txt”;
Pid-file “/var/run/named/named.pid”;
Fowarders {168.95.11;139.175.10.20;};
Allow-query {any;};
Allow-transfer{none;};
};
Zone “.”
{
Type hinet;
File “named.root”;
};
Zone “localhost”
{
Type master;
File “named.localhost”;
};
Zone “0.0.127.in-addr.arpa”
{
Type master;
File “named.127.0.0”;
};
Zone “vbird.tsai”
{
Type master;
File “named.vbird.tsai”;
};
Zone “1.168.192.in-addr.arpa”
{
Type master;
File “named.192.168.1”;
};
Options 内相关参数说明:
Directory :这个设置值用于指定zonefile要放在哪个目录,与下面的zone设置项目的file配合而形成完整的文件名
Dump-file:如果想要见目前的缓存记录下来,就可用这个设置值指定文件。
Statistics-file:dns的一些统计数据列出时就需要吸入到这个设置值所指定的文件。
Pid-file :用于记录named程序的pid文件,此文件可以再named启动,关闭时提供正确的pid
Forwarders
Allow-query:是否允许客户端查询,查询的终点就是读取数据库的内容。内可以填 any ip/网段(IP/NETMASK)格式。
Allow-transfer:是否允许slavedns的整个领域数据传送。这个设置值与master/slave服务器之间的数据库传递有关。除非你有slave dns 否则不需要开放。

在options之外是每个正,反解的文件,每个正反解都是利用zone这个设置值来处理的

zone 内的相关参数说明

type:该 zone 的类型,主要的类型有: master, slave 及 hinet。 其中需要注意最上层的 DNS (.) 使用的是 hinet 的类型,然后 master 主机用 master , slave 主机就用 slave 。

file:即 zone file ,完整的 zone file 在这里:[chroot_dir]/[options 内的 directory]/[file 设定值]

所以说,root (.) 配置文件就在:
/var/named/chroot/var/named/named.root

反解 zone:反解的 zone 就如同 linux.vbird.org 要追踪时是由 org -> vbird -> linux 一样,至于反解,则例如 192.168.1.1: 192 -> 168 -> 1 -> 1。 由于 DNS 的领域名都是由后往前找,且反解是个特殊的领域,所以必需要 将 IP 反过来写,同时在最后面加上”in-addr.arpa“来表示反解宣告!所以 192.168.1 这个 zone 就得要写成 1.168.192.in-addr.arpa

最上层的dns(root)数据库文件的设置
#vi /var/named/chroot/var/named/name.root

正解数据库文件的设置
1,关于本领域的基础设置方面,例如缓存记忆时间(TTL),域名(ORIGIN)等
2,关于master/slave的认证方面(SOA)
3,关于本领域的域名服务器所在的主机名称与ip对应(NS,A,PTR)
4,其他正解,反解相关的资源记录(RR)

反解数据库文件的设置

DNS 的启动与观察

[root@linux ~]# /etc/init.d/named start <==也可能是需要 restart 喔

但是这个启动可不见得是成功的!你『务必』要去 /var/log/messages 观察过才行!

[root@linux ~]# tail -n 20 /var/log/messages | grep named

如果出现问题怎办?通常出现问题的原因是因为:

1,语法设定错误:
这个问题好解决,因为在 /var/log/messages 里面有详细的说明,按照内容去修订即可;

2,逻辑设定错误:
这个就比较困扰了!为什么呢?因为他主要发生在您设定 DNS 主机的时候,考虑不周所产生的问题!例如忘记加上 (.) , 系统不会显示错误讯息,但是却会造成查询的误判,而 MX 设定的主机名错误,也不会出现有问题的讯息,但是 mail server 就是会收不到信等等~这些错误都需要很详细的 DNS client 的测试才能知道问题的所在。 ,

数据库的更新

数据库需要更新时,应该做哪些举动啊? 举例来说,你的某个主机 IP 或者主机名要变更,也可能是新增某个主机名与 IP 的对应呢! 进行下述操作即可:

  1. 先针对要更改的那个 zone 的数据库档案去做更新,就是加入 RR 的标志即是!
  2. 更改该 zone file 的序号 (Serial) ,就是那个 SOA 的第一个数字, 因为这个数字会影响到 master/slave 的判定更新与否喔!
  3. 重新启动 named ,或者是让 named 重新读取配置文件即可。

就这么简单啊!不过大家常常会忘记第二个步骤啦!就是将序号变大啊! 如果序号没有变大,那 master/slave 的数据库可能不会主动的更新, 会造成一些困扰喔!

测试

测试配置是否正确运行!测试有两种方式,一种是通过 client 端的查询功能, 目的是检验你的数据库设定有无错误;另外你也可以连上这个网站:http://www.dnsreport.com/

这个网站可以帮你检验你的 DNS 服务器的主要设定是否有问题!不过,这个网站的检验主要是以合法授权的 zone 为主,我们自己架设的 DNS 是没有办法检查的啦!真是可惜~ 接下来,请查阅 在 Client 端的测试 吧!

master DNS 权限的开放(允许slave DNS 进行 zone 的传送)

slave DNS 的设定

slave DNS 的 /etc/named.conf 与 master DNS 几乎一模一样啊! 唯一的差异在于两个 zone 的类型 (type) 而已。

DNS client的设置

/etc/hosts :最早的 hostname 对应 IP 的档案;

/etc/resolv.conf : DNS 主机的 IP;

/etc/nsswitch.conf:这个档案则是在『决定』先要使用 /etc/hosts 还是 /etc/resolv.conf 的设定!

测试 DNS 主机的设置是否正确

DNS 的查询指令: host, nslookup, dig

host

语法: [root@linux ~]# host [-a] [FQDN] [server] [root@linux ~]# host -l [domain] [server] 参数说明: -a :代表列出该主机所有的相关信息,包括 IP、TTL 等等 -l :若后面接的那个 domain 设定允许 allow-transfer 时,则列出该 domain 所管理的所有主机名对应数据! server:这个参数可有可无,当想要利用非 /etc/resolv.conf 内的 DNS 主机来查询主机名与 IP 的对应时,就可以利用这个参数了! 范例一:强制以 192.168.1.254 这部 DNS 主机来查询 [root@linux ~]# host www.vbird.tsai 192.168.1.254 Using domain server: Name: 192.168.1.254 Address: 192.168.1.254#53 <==这里重要!告知这笔记录是哪部 DNS 服务器去找的! Aliases: www.vbird.tsai is an alias for linux.vbird.tsai. linux.vbird.tsai has address 192.168.1.254 nslookup 语法: [root@linux ~]# nslookup [FQDN] [server] [root@linux ~]# nslookup 参数说明: 1. 可以直接在 nslookup 加上待查询的主机名或者是 IP ,[server] 可有可无; 2. 如果在 nslookup 后面没有加上任何主机名或 IP ,那将进入 nslookup 的查询功能 范例一:直接搜寻 winxp.vbird.tsai 的 IP 信息 [root@linux ~]# nslookup winxp.vbird.tsai 192.168.1.254 Server: 192.168.1.254 Address: 192.168.1.254#53 <==同样的,请注意搜寻的 DNS IP 喔! Name: winxp.vbird.tsai Address: 192.168.1.100 dig 语法: [root @test root]# dig [@server] [FQDN] [type] 参数说明: @server :如果不想以 /etc/resolv.conf 来作为 DNS 主机,则可在此填入其他的 IP type :默认是查询 A 标志,你可以在这里入其他的标志,如 mx, ns 等。 此功能亦可使用 [-t type] 来处理。 范例一:查询 linux.vbird.tsai 吧! [root@linux ~]# dig @192.168.1.254 linux.vbird.tsai