DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
Bind不是唯一能够提供域名服务的DNS服务程序,可以运行在大多数linux和UNIX主机中。官方:www.isc.org/
bind软件包安装完毕以后,会自动增加一个名为named的系统服务,通过脚本文件/etc/init.d/named或service工具都可以控制DNS域名服务的运行。默认监听端口:53
准备工作:首先开启两台服务器,配置静态IP地址,关闭防火墙和selinux并查看系统中所包含bind的rpm包。
1)bind:提供了域名服务的主要程序及相关文件
2)bind-utils:提供了对DNS服务器的测试工具程序,如nslookup等。
3)bind-libs:提供了bind。bind-utils需要使用的库函数
4)bind-chroot为bind服务提供了一个伪装的根目录,已提供安全性。
默认已经安装了bind-utils和bind-libs,所以只需要安装bind和bind-chroot即可。
[root@localhost Packages]# mkdir /media/cdrom
[root@localhost Packages]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost Packages]# cd /media/cdrom/Packages/
[root@localhost Packages]# ls | grep "^bind"
bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
bind-dyndb-ldap-2.3-5.el6.x86_64.rpm
bind-libs-9.8.2-0.17.rc1.el6_4.6.i686.rpm
bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
[root@localhost Packages]#
[root@localhost Packages]# rpm -qa | grep "^bind"
bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64
bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64
[root@localhost Packages]# rpm -ivh bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
warning: bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
1:bind ########################################### [100%]
[root@localhost Packages]# rpm -ivh bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
warning: bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
1:bind-chroot ########################################### [100%]
[root@localhost Packages]#
复制代码
主配置文件named.conf通常位于/etc/目录下,在named.conf文件中,主要包括全局配置、区域配置两个部分,每一条配置记录的行尾以分号“;”表示结束,以“#”号或“//”开始的部分表示注释文字。
全局配置参数包括“option { };”的大括号中,可以设置监听的地址和端口、区域数据文件存放的目录、允许哪些客户机查询等。
区域配置参数使用“zone ...... { };”的配置格式,一台DNS服务器可以为多个区域提供解析,因此在named.conf文件中也可以有很多个zone配置段。
每个zone区域都是可选的,包括根域、回环域、反向域,具体根据实际需要而定,zone配置部分的“IN”关键字也可以省略。
反向区域的名称由倒序的网络地址和“.in-addr.arpa”组合而成。
file配置项用于指定实际的区域数据文件,文件名称由管理员自行设置。
区域配置中的部分参数也可以放在全局配置中。
touch named.beifen
cp named.conf named.beifen
[root@localhost etc]# vim /etc/named.conf
options {
directory "/var/named"; #定义区域数据文件的默认存储位置
};
zone "jt.com" IN { #正向区域
type master; #类型为master(主服务器)
file "jt.com.zone"; #区域数据文件名为jt.com
allow-update { none; };
};
zone "3.168.192.in-addr.arpa" IN { #反向区域
type master; #类型为master(主服务器)
file "192.168.3.arpa"; #区域数据文件名为192.168.3.arpa
};
复制代码
cd /var/named
[root@localhost named]# vim jt.com.zone
$TTL 86400 //TTL配置用于设置默认生存周期。即缓存解析结果的有效时间。
@ SOA jt.com. admin.jt.com. ( //SOA记录部分用于设置区域名称,管理邮箱,以及为从域名服务器指定更新参数。
20181202 //更新序列号
4H //刷新时间:重新下载数据的间隔
30M //重试延时:下载失败后的重试间隔
12H //失效时间:超过该时间仍无法下载则放弃
1D //无效解析记录的生存周期
)
@ IN NS jt.
www IN A 192.168.3.111 #这里要写DNS服务器的IP地址,也可以是主机名。
hhh IN A 192.168.3.112
[root@localhost named]# vim 192.168.3.arpa
$TTL 86400
@ SOA jt.com. admin.jt.com. (
20181202 //更新序列号
4H //刷新时间:重新下载数据的间隔
30M //重试延时:下载失败后的重试间隔
12H //失效时间:超过该时间仍无法下载则放弃
1D //无效解析记录的生存周期
)
IN NS jt.
111 IN PTR www.jt.com.
112 IN PTR hhh.jt.com.
复制代码
在/etc/resolv.conf文件中“服务地址”改为本地IP,配置完成后,用named-checkconf检查,启动named服务,并进行验证域名解析(正向和反向)
[root@localhost named]# vim /etc/resolv.conf
# Generated by NetworkManager
domain localdomain
search localdomain
nameserver 192.168.3.111
[root@localhost named]# named-checkconf -z /etc/named.conf
zone jt.com/IN: loaded serial 20181202
zone 3.168.192.in-addr.arpa/IN: loaded serial 20181202
[root@localhost named]# service named start
Generating /etc/rndc.key: [确定]
启动 named: [确定]
[root@localhost named]# nslookup www.jt.com
Server: 192.168.3.111
Address: 192.168.3.111#53
Name: www.jt.com
Address: 192.168.3.111
[root@localhost named]# nslookup hhh.jt.com
Server: 192.168.3.111
Address: 192.168.3.111#53
Name: hhh.jt.com
Address: 192.168.3.112
[root@localhost named]# nslookup 192.168.3.111
Server: 192.168.3.111
Address: 192.168.3.111#53
111.3.168.192.in-addr.arpa name = www.jt.com.
[root@localhost named]# nslookup 192.168.3.112
Server: 192.168.3.111
Address: 192.168.3.111#53
112.3.168.192.in-addr.arpa name = hhh.jt.com.
[root@localhost named]#
复制代码
[root@localhost named]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.3.111 jt
192.168.3.110 Python
复制代码
cd /var/named
[root@localhost named]# vim 192.168.3.arpa
$TTL 86400
@ SOA jt.com. admin.jt.com. (
20181202
4H
30M
12H
1D
)
IN NS jt.
IN NS python.
1111 IN PTR www.jt.com.
1112 IN PTR hhh.jt.com.
[root@localhost named]# vim jt.com.zone
$TTL 86400
@ SOA jt.com. admin.jt.com. (
20181202
4H
30M
12H
1D
)
@ IN NS jt.
@ IN NS python.
www IN A 192.168.11.111
hhh IN A 192.168.11.112
复制代码
[root@localhost named]# vim /etc/resolv.conf
# Generated by NetworkManager
domain localdomain
search localdomain
nameserver 192.168.3.111
nameserver 192.168.3.110
复制代码
[root@localhost named]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "jt.com" IN {
type slave;
masters { 192.168.3.111; };
file "slaves/jt.com.zone";
};
zone "3.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.3.111; }
file "slaves/192.168.3.arpa";
};
复制代码
[root@localhost slaves]# service named restart
停止 named:. [确定]
启动 named: [确定]
[root@localhost slaves]# ls
192.168.3.arpa jt.com.zone
复制代码
注意:关闭防火墙和selinux
在主服务器上停止named服务,用nslookup检查解析是否已经更改到从服务器。
在主服务器上开启named服务,用nslookup检查解析是否已经更改到主服务器。
[root@localhost slaves]# nslookup www.jt.com
Server: 192.168.3.111
Address: 192.168.3.111#53
Name: www.jt.com
Address: 192.168.3.111
[root@localhost slaves]# service named stop
停止 named:. [确定]
[root@localhost slaves]# nslookup www.jt.com
Server: 192.168.3.110
Address: 192.168.3.110#53
Name: www.jt.com
Address: 192.168.3.111
[root@localhost slaves]# service named start
启动 named: [确定]
[root@localhost slaves]# nslookup www.jt.com
Server: 192.168.3.111
Address: 192.168.3.111#53
Name: www.jt.com
Address: 192.168.3.111
[root@localhost slaves]#