一、主DNS的搭建,通过bind包实现正向解析和反向解析
1、安装bind包
[root@localhost yum.repos.d]# clear
[root@localhost yum.repos.d]# yum -y install bind
[root@localhost ~]# rpm -qa |grep bind
rpcbind-0.2.0-11.el6.x86_64
bind-9.8.2-0.37.rc1.el6.x86_64
bind-libs-9.8.2-0.37.rc1.el6.x86_64
samba-winbind-3.6.23-20.el6.x86_64
bind-utils-9.8.2-0.37.rc1.el6.x86_64
samba-winbind-clients-3.6.23-20.el6.x86_64
ypbind-1.20.4-31.el6.x86_64
PackageKit-device-rebind-0.5.8-25.el6.x86_6
2、修改named.conf配置文件
[root@localhost ~]# vim /etc/named.conf
listen-on port 53 { localhost; }; 默认是127.0.0.1,改成 localhost,监听本机IP
allow-query { any; }; 默认是localhost,只允许本机查询,改为 any,允许所有查询
dnssec-enable no;
dnssec-validation no; 这两项默认开启,都给关闭
3、修改区域配置文件并检查配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
增加区域 qq.com,文件格式以前面配置格式写
type master;主区域
file “qq.com”;这个名称要和区域数据库文件一样,路径在 /var/named/
用此命令检查配置文件,没有报错,文件语法没出问题
4、新建区域数据库
[root@localhost ~]# vim /var/named/qq.com
TTL:可从全局继承 @:可引用当前区域名称
SOA:起始授权记录,一个数据库有且仅有一个SOA记录,必须写在数据库第一条
NS:用于标明当前区域的DNS服务器
A:IPv4地址正向解析,FQDN--IP
CNAME:别名记录
5、检查区域数据库,重启named服务,测试域名解析是否成功
数据文件OK,说明格式正确
重启named服务,关闭防火墙
通过dig工具和ping域名,能够解析成功,正向DNS服务搭建完成
6、搭建反向DNS服务,反向解析很少用,没有反向解析,用IP地址解析域名,显示超时
[root@localhost ~]# clear
[root@localhost ~]# nslookup
> www.qq.com
Server:172.16.18.5
Address:172.16.18.5#53
www.qq.comcanonical name = web.qq.com.
Name:web.qq.com
Address: 172.16.18.6
> 172.16.18.6
;; connection timed out; trying next origin
;; connection timed out; no servers could be reached
7、在区域配置文件增加反向区域
[root@localhost ~]# vim /etc/named.rfc1912.zones
8、新增反向解析数据库文件
[root@localhost named]# vim 172.16.18.zone
PTR:反向解析记录。IP--FQDN
9、检查配置文件,并且重读配置文件
经过测试,反向解析成功,反向DNS搭建成功。
二、主从DNS搭建
1、在另外一个虚拟机上安装bind包
[root@localhost ~]# yum -y install bind
2、修改named.conf配置文件
[root@localhost ~]# vim /etc/named.conf
allow-query { any; }; 允许所有主机查询
allow-transfer { none;}; 不允许区域传输,加上这条可以防止其他机器从这台机器上抓数 据库文件
在主DNS上也的加上一条策略
allow-transfer { 172.16.18.3;}; 只允许从DNS在这上面抓取数据库文件
3、在区域配置文件添加区域qq.com
zone "qq.com" 这个区域和主DNS必须一致
type slave; 类型为从区域
masters { 172.16.18.5;}; 主DNS的IP地址
file "slaves/qqbackup.com"; 数据库文件存放位置 /var/named/slaves/
4、在主DNS区域数据库文件添加NS记录
5、重启named服务,从DNS将从主DNS上抓取区域数据库文件
[root@localhost slaves]# service named restart
6、把主DNS停止,客户端上在添加备用DNS172.16.18.3 ,在测试这些域名能否解析
[root@localhost named]# service named stop
Stopping named:
通过测试,主DNS已经无法解析,备用DNS可以解析,主从DNS搭建成功,但备用DNS无法修改数 据库,只能通过主DNS推送或者自己抓取数据库文件,如果主DNS上添加新纪录,必须修改版本 号,主DNS才能把最新的数据库文件推送到备用DNS上来。
三、子域授权
1、同一台机器上创建子域
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "sport.qq.com" IN {
type master;
file "sport.qq.com";
};
创建子域配置文件
root@localhost named]# rndc reload 重读配置文件并测试
子域解析成功,子域授权完成
2、不同机器上创建子域
[root@localhost named]# clear
[root@localhost named]# vim qq.com 修改区域数据库文件
在另外一个机器上区域配置里创建子区域
[root@localhost ~]# vi /etc/named.rfc1912.zones
zone "jok.qq.com" IN {
type master;
file "jok.qq.com";
};
创建子区域数据库文件
[root@localhost ~]# vim /var/named/jok.qq.com
在子域和父域上重读配置文件,并进行测试
[root@localhost named]# rndc reload
server reload successful
通过测试,父域将域名委派给子域解析,解析成功。
两种情况的子域授权已经全部OK。
四、智能DNS view
1、安装bind
[root@localhost named]# yum -y install bind
2、修改named.conf配置文件
acl "host1" { 定义主机1的acl
172.16.18.3;
};
acl "host2" { 定义主机2的acl
172.16.18.7;
}; 这两个acl要定义在options前面
options {
listen-on port 53 { localhost; };
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; };
recursion yes;
dnssec-enable no;
dnssec-validation no;
view "host1view" {
match-clients { 172.16.18.3;};
include "/etc/host1.zones"; 主机1区域文件名称及路径
};
view "host2view" {
match-clients { 172.16.18.7;};
include "/etc/host2.zones"; 主机2区域文件名称及路径
};
view "otherview" {
match-clients { any;};
include "/etc/named.rfc1912.zones"; 其他主机
};
include "/etc/named.root.key";
3、创建区域配置文件
root@localhost named]# vim
zone "jok.com" {
type master;
file "host1.com";
};
[root@localhost named]# vim /etc/host2.zones
zone "jok.com" {
type master;
file "host2.com";
};
4、创建区域数据库
[root@localhost named]# vim host1.com 主机1数据库文件
$TTL 1D
@ IN SOA ns1.jok.com. admin.jok.com. (
2016070804
1D
5M
1W
2H
)
IN NS ns1
ns1 IN A 172.16.18.5
web IN A 1.1.1.1
www IN CNAME web
[root@localhost named]# vim host2.com 创建主机2数据库文件
$TTL 1D
@ IN SOA ns1.jok.com. admin.jok.com. (
2016070804
1D
5M
1W
2H
)
IN NS ns1
ns1 IN A 172.16.18.5
web IN A 2.2.2.2
www IN CNAME web
5、加载配置文件并测试
[root@localhost named]# rndc reload
server reload successful
在主机172.16.18.3上用dig工具测试
[root@localhost ~]# dig -t A www.jok.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -t A www.jok.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5110
; ; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.jok.com. IN A
;; ANSWER SECTION:
www.jok.com. 86400 IN CNAME web.jok.com.
web.jok.com. 86400 IN A 1.1.1.1
;; AUTHORITY SECTION:
jok.com. 86400 IN NS ns1.jok.com.
;; ADDITIONAL SECTION:
ns1.jok.com.
86400 IN A 172.16.18.5
在主机172.16.18.7上用dig工具测试
[root@localhost ~]# dig -t A www.jok.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -t A www.jok.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7901
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.jok.com. IN A
;; ANSWER SECTION:
www.jok.com. 86400 IN CNAME web.jok.com.
web.jok.com. 86400 IN A 2.2.2.2
;; AUTHORITY SECTION:
jok.com. 86400 IN NS ns1.jok.com.
;; ADDITIONAL SECTION:
ns1.jok.com. 86400 IN A 172.16.18.5
通过上面测试,主机1访问www.jok.com解析的是1.1.1.1,主机2访问www.jok.com解析的是2.2.2.2,实现了view定义的要求,view搭建完成。
};