前言:总结一下bind的域名管理,可能只是简单的总结,理解的也可能不够透彻,如有纰漏望大家批评指正,Linux玩的就是分享,分享无处不在。分下面几个步骤来写:

  • BIND的编译安装
  • BIND的配置实现域名解析
  • BIND利用远程控制
  • BIND实现依不同客户端解析为不同域名
  • BIND主从协同作业
  • BIND子域授权
  • BIND实现域名的动态解析
  • BIND日志

一.BIND的编译安装

本文的环境的操作系统为 Redhat 5.8,编译的BIND为bind-9.9.2,编译需要的工具Development Tools,编译需要的库Development Libraries已安装,为了简易,请先关闭iptables,SElinux。

1,添加系统用户与组named,并指定shell为/sbin/nologin       ##named是以named用户运行的 

2,解压bind-9.9.2,并到目录里面

tar xvf bind-9.9.2.tar.gz;cd bind-9.9.2

3,根据需要配置生成Makefile

./configure --prefix=/usr/local/named --sysconfdir=/etc/named --disable-openssl-version-check

说明: --prefix指明程序安装的目录

--sysconfdir指明配置文件安装的目录

--disable-openssl-version-check避免因安装的openssl版本低导致的停止安装

4,编译安装 make&&make install

如果途中没报错,BIND就编译安装完毕了,ls /usr/local/named看看有没有生成的目录与文件

二.BIND的配置实现域名解析

网络环境规划:

域:laoguang.me

ns:172.16.1.1        ##主DNS服务器

ns2:172.16.1.2      ##从DNS服务器

www:172.16.1.3    ##web服务器

ftp:172.16.1.4      ##ftp服务器

mail:172.16.1.5    ##mail服务器

子域:linux.laoguang.me

ns:172.16.100.1    ##子域DNS服务器

bbs:172.16.100.2  ##子域下面的bbs

 

1,在/etc/named/下面建立配置文件named.conf, 如下           ##安装时指定的配置文件存放处

options {
directory "/var/named"; ##指定数据目录
};
zone "." IN {                                   ##定义根域数据文件
type hint;
file "named.ca";
};
zone "localhost" IN {                       ##localhost正解区域
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {     ##localhost反解区域
type master;
file "0.0.127.zone";
};
zone "laoguang.me" IN {                ##laoguang.me正解区域
type master;
file "laoguang.me.zone";
};
zone "1.16.172.in-addr.arpa" IN {   ##laoguang.me反解区域
type master;
file "1.16.172.zone";
};
 

保存退出,更改权限与属主数组;  ##named的运行时以named运行的

chmod 640 /etc/named/named.conf

chown root:named /etc/named/named.conf

2,根据主配置文件在/var/named下面分别建立各个区域文件。

     1)建立 named.ca 文件;

此文件可以从网上下载,也可以生成,生成方法:

/usr/local/named/bin/dig -t NS . > /var/named/named.ca

说明:dig –t NS .   查看根区域的DNS服务器,重定向到named.ca中

    2)建立 localhost.zone 文件,并编辑如下:

$TTL 5000
@                       IN      SOA     @       admin (                 ##SOA区域描述
2012102201      ##序列号
2H                      ##更新时间
5M                      ##重试时间
7D                      ##失效时间
5H )                   ##否定回答时间
IN      NS      @               ##NS记录
IN      A       127.0.0.1     ##NS 的A记录

  3)建立 0.0.127.zone文件,并编辑如下

$TTL 86400
@               IN      SOA     @       admin   (
2012102201
2H
5M
7D
2H )
                 IN      NS       localhost.
1               IN      PTR      localhost.          ##反解PTR记录

  4)建立laoguang.me.zone文件,并编辑如下

$TTL 86400
@                      IN      SOA     ns      admin   (
2012102201
2H
5M
7D
2H )
                        IN      NS        ns
                        IN      NS        ns2
                         IN      MX  10  mail
ns                     IN      A         172.16.1.1
ns2                   IN      A         172.16.1.2
www                 IN      A         172.16.1.3
ftp                     IN      A         172.16.1.4
mail                   IN      A         172.16.1.5

  5)建立 1.16.127.zone文件,并编辑如下

$TTL 86400
@               IN      SOA     ns      admin   (
2012102201
2H
5M
7D
2H )
IN      NS      ns.laoguang.me.       ##各个主机的反解PTR
1               IN      PTR     ns.laoguang.me.
2               IN      PTR     ns2.laoguang.me.
3               IN      PTR     www.laoguang.me.
4               IN      PTR     ftp.laoguang.me.
5               IN      PTR     mail.laoguang.me.

3,更改权限,环境,并测试

  1)更改刚才建立文件的权限与属组属主

cd /var/named;
chown root:named *
chmod 640 *

  2)为了方便管理named重新设定PATH环境变量,设定 /root/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/named/sbin:/usr/local/named/bin
source /root/.bash_profile      ##使配置文件立刻生效

  3)以named名义启动named程序,并查看是否启动起来监听53端口,查看是否以named用户运行,查看/var/log/messages有没有错误。

named –u named;
netstat –tlnp | grep 53;
ps aux | grep named;
tail /var/log/messages

  4) 如果没有错误,测试是否能正确解析,正确反向解析

dig –t A localhost                               ##测试正解
dig –t A www.laoguang.me @127.0.0.1
dig –t NS laoguang.me @127.0.0.1
dig –t MX laoguang.me @127.0.0.1
dig –t A ftp.laoguang.me @127.0.0.1
dig –x 127.0.0.1                                ##测试反解
dig –x 172.16.1.1
dig –x 172.16.1.3

如果都没问题Ok,DNS构建完毕。

 

.BIND利用RNDC远程控制

目标:本地与远程客户端通过rndc控制DNS服务器,启动,停止,重新加载配置文件等等。

被控主机:172.16.1.1 ##刚才建立的DNS服务器

主控客户端:(1) localhost  (2) 远程客户端 172.16.1.2 (这是我们将来的从DNS服务器,且DNS及rndc工具已安装,环境安装方法与主一致)

1,利用本机的rndc控制dns服务器

1)利用rndc-keygen生成/etc/named/rndc.conf 配置文件

rndc-confgen >/etc/named/rndc.conf

2) 查看密钥

cat /etc/named/rndc.conf   ##如下所示
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "cLUy7wY3Al05PhSxZfRnWg==";
};

options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#     algorithm hmac-md5;
#     secret "cLUy7wY3Al05PhSxZfRnWg==";
# };
#
# controls {
#     inet 127.0.0.1 port 953
#         allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

3)把下部分区域复制到/etc/named/named.conf的options区域下并去掉开头的#

部分代码如下:
options {
directory "/var/named";
};
# Use with the following in named.conf, adjusting the allow list as needed:key "rndc-key" {
algorithm hmac-md5;
secret "cLUy7wY3Al05PhSxZfRnWg==";
};

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf
zone "." IN {
type hint;
file "named.ca";
};

.........

4)重启named服务,rndc reload测试能否正常运行

killall named;
named –u named;
rndc reload;

如果有成功的字样表示本机已ok。

2,远程主机通过rndc控制dns服务器

   1) 再次生成rndc密钥,不过名字得换一下了

rndc-confgen > /etc/named/rndc2.conf
cat /etc/named/rndc2.conf  ##如下

# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "0WjLJgZhFlYeltjdrai9gQ==";
};

options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf

2) 把刚新生成的下面的key复制到/etc/named/named.conf上个key下,key “rndc-key”改为key “rndc-key2”,修改controls的inet,allow,keys选项

key "rndc-key" {
algorithm hmac-md5;
secret "cLUy7wY3Al05PhSxZfRnWg==";
};
key "rndc-key2" {                                     ##key名字不能重名对吧
algorithm hmac-md5;
secret "0WjLJgZhFlYeltjdrai9gQ==";
};
controls {
inet 0.0.0.0 port 953
allow { 172.16.1.2; 127.0.0.1; } keys { "rndc-key"; "rndc-key2"; };                ##允许远程控制吧,      允许的key加进去;

};

3) 把新生成的rndc.conf2传到客户机/etc/named/目录下,修改名字为rndc.conf,修改key名,并修改其默认控制server如下:

key "rndc-key2" {
algorithm hmac-md5;
secret "0WjLJgZhFlYeltjdrai9gQ==";
};

options {
default-key "rndc-key2";
default-server 172.16.1.1;
        default-port 953;
};

4)重启DNS被控服务器,测试远程能否控制

killall named ;
named –u named;
客户端上运行:rndc reload 是否有成功字样

到此rndc介绍完毕,远程或本地皆可以通过rndc控制dns服务器。

 

四,BIND实现依不同客户端解析为不同域名

目标:根据客户端来源不同(主要是IP不同),域名解析的IP也不相同,比如内网IP我解析为www的内网IP,外网访问我解析为外网的IP。或者,中国联通的客户端iP我解析为联通服务器的IP,中国电信的客户端IP解析为电信服务器的IP,如此妙用可解决,中国网络南北互通的问题。以第一个为例,

假设我的ns主机即DNS服务器还有一个公网IP:2.2.2.2,www服务器也有一个公网IP为,2.2.2.3

 

当内部主机B访问www时,DNS解析为 172.16.1.3

当外部主机A访问www时,DNS解析为  2.2.2.3

   1,/etc/named/named.conf创建访问控制列表,创建视图,基于原来的配置文件修改:

acl "intranet" {
172.16.1.0/24;
127.0.0.0/8;
};
options {
directory "/var/named";
};
key "rndc-key" {
algorithm hmac-md5;
secret "cLUy7wY3Al05PhSxZfRnWg==";
};
key "rndc-key2" {
algorithm hmac-md5;
secret "0WjLJgZhFlYeltjdrai9gQ==";
};
controls {
inet 0.0.0.0 port 953
allow { 172.16.1.2; 127.0.0.1; } keys { "rndc-key"; "rndc-key2"; };
};
view "lan" {                                            ##创建lan视图
match-clients { intranet; };
        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 "0.0.127.zone";
};
zone "laoguang.me" IN   {
type master;
file "laoguang.me.lan"; ##原来的laoguang.me.zone重命名
};
zone "1.16.172.in-addr.arpa" IN {
type master;
file "1.16.172.zone";
};
};
view "wan" {                               ##创建wan视图
match-clients { any; };        ##其它IP段的都以这个解析
zone "laoguang.me" IN {
type master;
file "laoguang.me.wan";
};
};

2,把原来的/var/named/laoguang.me.zone 重命名为laoguang.me.lan,并新建laougang.me.wan

mv /var/named/laoguang.me.zone /var/named/laoguang.me.lan
vi /var/named/laoguang.me.wan   ##如下
$TTL 86400
@        IN    SOA    ns    admin    (
2012102301
2H
5M
7D
2H )
                IN    NS    ns
ns            IN    A    2.2.2.2
www        IN    A    2.2.2.3

3,测试是否能正确解析。因为我的DNS没在网上注册,所以你懂得,以2.2.2.2为DNS是不行的,那么我们分别在客户机上A:172.16.1.10 B:192.168.1.10上以172.16.1.1为dns测试,是否能正确解析www.laoguang.me 。第一个图为在DNS服务器上测试(172.16.1.1),第二个图在客户机(192.168.0.219)测试

到此基于客户端的分类解析实验完毕,其实在生产环境中,我们一般用来是实现电信联通的分网解析,只要把电信的IP(可网上搜集)写到一个acl表里面,把来自电信客户端的解析请求,回复为电信服务器的IP地址,其它的解析为网通的。

接下一章http://laoguang.blog.51cto.com/6013350/1035272