一. 主、从域名服务器 Master/Slave架构

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

从服务器:Slave
假设您的DNS服务器出故障down掉了,那么它所负责解析的域,主机名与ip的对应都将失效。所以我们至少要有两台服务器提供dns服务。但是这样做,当数据更新时,管理员需要手动更新两台服务器的内容。Master/Slave架构就解决了此问题,一主一从,两台数据的内容一样。当主服务器数据改变,自动同步从服务器。

现在我们搭建一个主、从域名服务器
Master(主):192.168.0.181/24 hostname: ns1.magedu.com
Slave(从) :192.168.0.182/24 hostname: ns2.magedu.com
Domain: magedu.com

包含以下记录: www ftp mail mail2 pop3 www2
主配置文件是/etc/named.conf
每一个正解、反解都需要一个文件,而文件名是由/etc/named.conf设置的
所需软件包bind

步骤如下: 首现搭建主域名服务器
第一把最基本的dns配置做出来
ns1 ]#hostname ns1.magedu.com <=修改主机名,当前有效
]#vim /etc/sysconfig/network <=编辑配置文件修改主机名,永久有效
NETWORKING=yes
NETWORKING=yes
HOSTNAME=ns1.magedu.com <=配置文件中的内容

ns1 ]#getenforce <=查看selinux状态,输出Enforcing为开启状态,Permissive为关闭状态
]#setenforce 0 <=关闭selinux ,选项0为关闭,1为开启

ns1 ]#vim /etc/yum.repos.d/server.repo <=配置yum源,一会通过yum安装我们所需要的软件包
[base]
name=Server
baseurl=ftp://192.168.0.254/pub/Server
gpgcheck=0
ns1 ]#yum list bind* <=查询与bind相关的软件包,dns是协议bind是软件named是进程
]#yum –y install bind <=安装bind软件包

当我们安装完bind后自动就有了利用rndc命令管理dns的功能,可以检查已经存在的dns缓存中的资料、重新更新某个zone而不需要重新启动整个dns,以及检查dns的状态与统计资料 等。

ns1 ]#rndc-confgen > /etc/rndc.conf <=建立rndc key相关数据,通过输出重定向到rndc.conf

ns1]#vim /etc/rndc.conf <=将rndc.conf中的带#号的key与controls的项目粘贴到/etc/named.conf中去并去掉#号得以生效,vim /etc/named.conf通过%s@^# @@g一次性去掉前面的#号

ns1]#vim /etc/named.conf <=继续编辑named.conf 添加全局选项options与区域选项zone
options {
directory “/var/named”; <=定义工作目录
querylog yes;
version “How are you.”;
};

zone “.” IN {
type hint; <=定义区域类型:跟线索域
file “named.ca”; <=定义工作目录下的正解数据文件
};

zone “localhost” IN {
type master; <=定义区域类型:主区域
file “localhost.zone”
};

zone “0.0.127.in-addr.arpa” IN {
type master;
file “named.local”;
};

ns1]#chmod 640 /etc/named.conf <=更改权限
ns1]#chgrp named /etc/named.conf <=更改属组

ns1]#dig –t NS . > /var/named/named.ca <=创建跟数据库文件,全球13个根节点dns

ns1]#vim localhost.zone <=创建本地正解数据库文件
$TTL 86400
@ IN SOA localhost. root.localhost. (
2011121001
3H
15M
2W
1H )
IN NS localhost.
localhost. IN A 127.0.0.1

ns1]#vim /etc/named/named.local <=创建本地反解数据库文件
@ IN SOA localhost. root.localhost. (
2011121001
3H
15M
2W
1H )
IN NS localhost.
1 IN PTR localhost.

ns1]#chown :named localhost.zone named.* <=更改属组为named

ns1]#named-checkconf <=检查主配置文件语法错误,无信息输出为正确语法
ns1]#named-checkzone “localhost” localhost.zone <=检查域所对应的区域文件
ns1]#named-checkzone “0.0.127.in-addr.arpa” named.local

ns1]#service named start <=启动named 进程,ok为正常启动

]#tail /var/log/messages <=查看信息日志,running为正在运行
]#netstat –tunlp | grep “53\>” <=netstat查看网络状态,-tunlp查看TCP/UDP监听状态的套接字.

以上是最基本的,有了这几项就可以通过互联网的13个跟节点进行迭代查询。

rndc命令:
rndc reconfig 只重新读取主配置文件/etc/named.conf
rndc reload 重新读取主配置文件与数据库文件/etc/named.conf与/var/named/*
rndc flush 清空dns缓存 在windows上是ipconfig/flushdns
rndc status 显示dns服务器状态
rndc notrace 关闭debug调试。开启后会有大量信息记录到系统日志,浪费资源。出现问题时才启用
rndc stop 停止dns服务
rndc retransfer zone 不修改序列号,强制重传来更新区域数据


基本的dns正常运转后,再配置我们所在的域
ns1]#vim /etc/named.conf
options { ``` ```
``` ```
};
zone “magedu.com” IN {
type master; <=在主配置文件中添加新正解的域
file “magedu.com.zone”;
};

ns1]#vim /var/named/magedu.com.zone <=创建并编辑正解区域数据文件
$TTL 86400
@ IN SOA ns1.magedu.com. admin.magedu.com. (
2011121001
1H
10M
7D
1H )
IN NS ns1
IN NS ns2
IN MX 10 mail
IN MX 20 mail2
ns1 IN A 192.168.0.181
ns2 IN A 192.168.0.182
mail IN A 192.168.0.254
mail2 IN A 192.168.0.1
www IN A 192.168.0.1 <=www有两个服务器,负载均衡
www IN A 192.168.0.2
pop3 IN A 192.168.0.254
ftp IN A 192.168.0.254
www2 IN CNAME www

ns1]#rndc reload
]#rndc status

ns1]#vim /etc/resolv.conf <=编辑此文件,dns解析指向自己
nameserver 192.168.0.181

DNS测试命令:dig
ns1]#dig –t NS magedu.com <= 利用dig命令测试 NS记录
]#dig –t MX magedu.com <= 利用dig命令测试 MX记录
]#dig –t A www.magedu.com <=利用dig命令测试 A 记录
]#dig –t CNAME www2.magedu.com

]#host –t A www.magedu.com 也可以进行测试
]#nslookup 可在交互模式下也可在非交互模式下,也可以在windows中应用
>server 192.168.0.181 <=指定dns解析服务器
>set q=MX
>magedu.com
>set q=A <=利用set q= 指向各个记录
>mail.magedu.com
>exit

正解配置完毕,正常解析后配置反解
ns1]#vim /etc/named.conf
options { ``` ```
``` ```
};
zone “0.168.192.in-addr.arpa” IN {
type master; <=在主配置文件中添加新的反解域
file “192.168.0.zone”;
};

ns1]#vim /var/named/192.168.0.zone <=创建并编辑反解区域数据文件
$TTL 86400
@ IN SOA ns1.magedu.com. admin.magedu.com. (
2011121001
1H
10M
7D
1H )
IN NS ns1.magedu.com.
IN NS ns2.magedu.com.
181 IN PTR ns1.magedu.com.
182 IN PTR ns2.magedu.com.
254 IN PTR mail.magedu.com.
1 IN PTR mail2.magedu.com.
1 IN PTR www.magedu.com.
2 IN PTR www.magedu.com.
254 IN PTR pop3.magedu.com.
254 IN PTR ftp.magedu.com.

ns1]#rndc reload
ns1]#rndc status
ns1]#dig –x 192.168.0.181 @192.168.0.181
ns1]#chkconfig –list named <=查看服务是否开机自动启动
]#chkconfig named on <=设为开机自动启动named

ns1]#chomod o-r 192.168.0.zone magedu.com.zone <=取消其他用户的读权限
]#chown :named magedu.com.zone 192.168.0.zone <=更改数据库文件属组为named
主域名服务器完成。

搭建从域名服务器开始。
配置好从服务器的网络环境,确保主从之间能ping通。然后照着主服务器那样,把最基本的配置搭建起来,就是dns可以通过13个根节点进行迭代查询。基本配置我就不在演示,按照我上面的方法你自己搭建一下就OK了.注意从服务器hostname是ns2.magedu.com 并且解析指向自己
可以通过scp命令将named.ca named.local localhost.zone拷贝过来,记得改属组为named
例如ns2]#cd /var/named/
ns2]#scp 192.168.0.181:/var/named/name.ca ./

接下来将它配置成从区域
]#dig –t AXFR magedu.com @192.168.0.181
]#dig –t AXFR 0.168.192.in-addr @192.168.0.181 <=确保区域传送可以在两服务器间进行数据传递

]#vim /etc/named.conf <=编辑主配置文件
options { ```` `````
```` ``````
};
zone “magedu.com” IN { <=添加一个正解区域
type slave; <=定义区域类型:从区域slave
file “slaves/magedu.com.zone”; <=工作目录下的正解数据文件位置
masters { 192.168.0.181; }; <=指定主服务为192.168.0.181
};
zone “0.168.192.in-addr.arpa” IN {
type slave;
file “slaves/192.168.0.zone”
masters { 192.168.0.181; };
};

配置文件配置完毕,接下来检验。
ns2]#named-checkconf
]#rndc reload <=此时没有数据文件,执行此命令,会与主服务器同步,更新数据文件,没有则会自动创建

ns2]#tail /var/log/messages
]#ll /var/named/slaves/ <=查看数据文件在此文件中

ns2]#vim /etc/resolv.conf <=编辑此文件,dns解析指向自己
nameserver 192.168.0.182

主从服务器配置到此完毕,每当主服务器数据修改本都会同步更新,dig命令进行检测
ns2]#dig –t NS magedu.com

 

 

二、父域下的子域授权

万一我们的网络很大,是一个大的公司。我们有一个magedu.com的域名,我们公司有10000台主机.如果这些主机都来找我给他们设置,那我就会疯掉的.那我可以这样,根据各个部门,各分配一个子域.技术部分一个tech.magedu.com域 市场部分一个market.magedu.com域,各个部门有自己的dns服务器与管理员,我只需要将各部门的dns服务器的NS记录写入到magedu.com域的数据文件中即可.员工到自己部门的管理员那添加记录去.如此一来,在各部门的设置上会比较灵活,我也省去了很多麻烦.

例如: magedu.com 公司计算机中心DNS负责的域
tech.magedu.com market.magedu.com 各部门DNS
www.tech.magedu.com ftp.tech.magedu.com www.market.magedu.com ftp.market.magedu.com

DNS: magedu.com域 在ns1.magedu.com (ip :192.168.0.181)
tech.magedu.com域 在ns.tech.magedu.com (ip :192.168.0.183)
market.magedu.com 域 在 ns.market.magedu.com (ip :192.168.0.184)

技术部DNS服务器tech.magedu.com域下又有
www.tech.magedu.com 技术部web服务器A记录
ftp.tech.magedu.con 技术部ftp服务器A记录

市场部DNS服务器market.magedu.com域下又有
www.market.magedu.com 市场部web服务器A记录
ftp.market.magedu.com 市场部ftp服务器A记录


步骤很简单,,如下配置:
先确保父域dns服务器与子域dns服务器网络通畅,然后
ns1.magedu.com]#vim /var/named/magedu.com.zone <=在父域编辑正解区域数据文件
$TTL 86400
@ IN SOA ns1.magedu.com. admin.magedu.com. (
2011121001
1H
10M
7D
1H )
IN NS ns1
IN NS ns2
IN MX 10 mail
IN MX 20 mail2
ns1 IN A 192.168.0.181
ns2 IN A 192.168.0.182
mail IN A 192.168.0.254
mail2 IN A 192.168.0.1
www IN A 192.168.0.1
www IN A 192.168.0.2
pop3 IN A 192.168.0.254
ftp IN A 192.168.0.254
www2 IN CNAME www

tech.magedu.com. IN NS ns.tech.magedu.com.
ns.tech.magedu.con. IN A 192.168.0.183

market.magedu.com IN NS ns.market.magedu.com.
ns.market.magedu.com IN A 192.168.0.184

我们先在父域DNS服务器上对子域DNS服务器进行授权。然后配置各个子域DNS服务器就行了。

配置子域dns服务器与配置主域名服务器相同,只是域不同而已。
子域dns配置步骤我就不说了,按照主域名服务器那样配就行了。

当我们完成了父域与子域的正常解析时,通常父域是知道子域,而子域是不知道父域的,我们可以通过给子域添加一个magedu.com的转发域forward ,从而使得子域可以直接从父域解析记录,而不必要向根节点查询。

DNS类型:主Master 从Slave 转发Forward
转发域forward DNS:
这种类型的DNS主机没有自己的数据库,仅用于帮助客户端向外部DNS主机请求数据。简单的来说,可以把它看作是一个代理人,通常设置在防火墙。

建立转发域forward的方法:
在主配置文件/etc/named.conf中添加一个转发的区域即可,我们给子域tech.magedu.com与market.magedu.com的主配置文件中添加一个区域
ns.tech.magedu.com]#vim /etc/named.conf
添加以下内容
zone “magedu.com” IN {
type forward;
forwarders { 192.168.0.181; };
forward only; 或者forward first;
};

forward only为进行递归转发,你不给我返回结果,我就宣告失败,然后结束。
forward first为先进行递归转发,你不返回我结果,我就去找根,进行迭代查询。