主dns服务器搭建

在本机上搭建一个管理hngd.com域名的域名服务器
1. 确保安装好以下bind域名服务器

[root@主人 ~]# rpm -qa |grep ^bind
bind-chroot-9.8.2-0.17.rc1.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6.x86_64
bind-9.8.2-0.17.rc1.el6.x86_64
bind-utils-9.8.2-0.17.rc1.el6.x86_64

2. 在主配置文件定义hngd.com正向区域和反向区域,定义完成后使用named-checkconf检查语法是否正确。

[root@主人 ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.100.20; }; //监听ip为192.168.100.20的网卡
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 yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};
zone "hngd.com" IN{ //配置域名hngd.com正向解析
type master;
file "hngd.zones";
allow-update { none; }; //是否允许客户机对dns配置进行更新,none表示不允许
};

zone "100.168.192.in-addr.arpa" IN{ //配置域名hngd.com的反向解析
type master;
file "192.168.100.zone";
allow-update{ none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

[root@主人 ~]# named-checkconf /etc/named.conf //检测/etc/named.conf文件有没有语法错误
[root@主人 ~]#

3. 在/var/named目录下编辑正、反解析数据文件,要注意域名必须以‘.’结尾

[root@主人 ~]# cat /var/named/hngd.zones //hngd.com的正向解析数据文件
$ORIGIN hngd.com. //声明该文件属于哪个域名
$TTL 1D
@ IN SOA dns.hngd.com. admin.hngd.com. ( //在‘(’前需要留一个空格
2016032011
1D
1H
1W
3H
)
NS dns.hngd.com. //名字服务器
MX 5 mail.hngd.com. //邮件服务器
dns IN A 192.168.100.20
mail IN A 192.168.100.10
www IN A 192.168.100.11
bbs IN CNAME www

[root@主人 ~]# cat /var/named/192.168.100.zone //反向解析文件
$ORIGIN 100.168.192.in-addr.arpa.
$TTL 1D
@ IN SOA dns.hngd.com. admin.hngd.com. (
2016032011
1D
1H
1W
3H
)
NS dns.hngd.com.
20 IN PTR dns.hngd.com.
10 IN PTR mail.hngd.com.
11 IN PTR www.hngd.com.

4. 用named-checkzone检测正、反解析数据文件语法的正确性

[root@主人 ~]# named-checkzone hngd.com /var/named/hngd.zones
zone hngd.com/IN: loaded serial 2016032011
OK

[root@主人 ~]# named-checkzone 100.168.192.in-addr.arpa /var/named/192.168.100.zone
zone 100.168.192.in-addr.arpa/IN: loaded serial 2016032011
OK

5.做完上面这些我们还要更改/etc/resolv下面的域名服务器
[root@主人 ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
#nameserver 114.114.114.114
nameserver 192.168.100.20

6. 虽然现在重启named服务不会报错,但如果我们去查看/var/log/messages文件会发现权限问题,我们需要将/var/named目录下所有文件的属主和属组改为named,selinux记得也要关闭
#/var/logmessages
Mar 20 14:20:20 主人 named[3186]: none:0: open: /etc/rndc.key: permission denied
Mar 20 14:20:20 主人 named[3186]: couldn't add command channel 127.0.0.1#953: permission denied

[root@主人 ~]# chown named:named /var/named/*

7. 现在因该没问题了,让我们来重启named服务,发现卡在Generating /etc/rndc.key:上很长时间
解决方法:
执行以下命令:rndc-confgen -r /dev/urandom -a
然后再重启DNS服务:service named start 服务正常启动

8. 查看53号端口有没有打开
[root@主人 ~]# lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
named 3288 named 20u IPv4 17544 0t0 TCP localhost:domain (LISTEN)
named 3288 named 21u IPv4 17546 0t0 TCP 10.0.6.77:domain (LISTEN)
named 3288 named 22u IPv4 17548 0t0 TCP dns.hngd.com:domain (LISTEN)
named 3288 named 23u IPv6 17550 0t0 TCP localhost:domain (LISTEN)
named 3288 named 512u IPv4 17543 0t0 UDP localhost:domain
named 3288 named 513u IPv4 17545 0t0 UDP 10.0.6.77:domain
named 3288 named 514u IPv4 17547 0t0 UDP dns.hngd.com:domain
named 3288 named 515u IPv6 17549 0t0 UDP localhost:domain

[root@主人 ~]# netstat -anptlu |grep named //这个命令也可以获得同样的效果

9. 用nslookup来检测dns
[root@主人 ~]# nslookup
> www.hngd.com
Server: 192.168.100.20
Address: 192.168.100.20#53

Name: www.hngd.com
Address: 192.168.100.11
> 192.168.100.20
Server: 192.168.100.20
Address: 192.168.100.20#53

20.100.168.192.in-addr.arpa name = dns.hngd.com.
> set type=MX
> 192.168.100.10
Server: 192.168.100.20
Address: 192.168.100.20#53

10.100.168.192.in-addr.arpa name = mail.hngd.com.


从DNS域名服务器的搭建

构建辅助域名服务器
辅助域名服务器也可以向客户机提供域名解析功能,但它与主域名服务器不同的是,它的数据不是直接输入的,而是从其他服务器(主域名服务器或其他辅助域名服务器)中复制过来的,只是一份副本,所以辅助服务器中的数据无法被修改

在一个区域设置多台辅助域名服务器具有以下优点:
1. 提供容错功能。当主域名服务器发生故障时,由辅助域名服务器提供服务
2. 分担主域名服务器的负担。在DNS客户端较多的情况下,通过假设辅助域名服务器完成对客户端的查询服务,可以有效的减轻主域名服务器的负担
3. 加快查询的速度

Slave端的配置
1. 辅助域名服务器的主配置文件的配置
[root@lcl ~]# cat /etc/named.conf
options {
listen-on port 53 { 192.168.100.2; };
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;

bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};
zone "hngd.com" IN {
type slave; //声明从域名服务器
masters { 192.168.100.20; }; //指明主服务器地址
file "slaves/hngd.zones"; //从域名服务器的区域文件存放位置
};
zone "100.168.192.in-addr.arpa" IN {

type slave;
masters { 192.168.100.20; };
file "slaves/192.168.100.zone";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

2. 将/etc/resolv.conf的nameserver指向192.168.100.2
3. 关闭防火墙和selinux
4. 重启named服务,再查看/var/named/slaves,发现自动生成正、反解析数据文件
[root@lcl ~]# ls /var/named/slaves/
192.168.100.zone hngd.zones
5. 测试是否能进行dns解析
[root@lcl ~]# nslookup www.hngd.com
Server: 192.168.100.2
Address: 192.168.100.2#53

Name: www.hngd.com
Address: 192.168.100.11

6. 现在我再来做个测试,我将主域名服务器的正、反解数据文件进行更新,将序列号加1,并添加slave这个域名,如下所示:
[root@主人 ~]# cat /var/named/hngd.zones
$ORIGIN hngd.com.
$TTL 1D
@ IN SOA dns.hngd.com. admin.hngd.com. (
2016032012
1D
1H
1W
3H
)
NS dns.hngd.com.
NS slave.hngd.com.
MX 5 mail.hngd.com.
slave IN A 192.168.100.2
dns IN A 192.168.100.20
mail IN A 192.168.100.10
www IN A 192.168.100.11
bbs IN CNAME www
[root@主人 ~]# cat /var/named/192.168.100.zone
$ORIGIN 100.168.192.in-addr.arpa.
$TTL 1D
@ IN SOA dns.hngd.com. admin.hngd.com. (
2016032012
1D
1H
1W
3H
)
NS dns.hngd.com.
20 IN PTR dns.hngd.com.
10 IN PTR mail.hngd.com.
11 IN PTR www.hngd.com.
2 IN PTR slave.hngd.com.

7. 由于更新时间太长,所以我直接将从域名服务器下的正、反解析数据文件删除,再重启named服务,再查看发现那两个文件也进行了更新
[root@lcl ~]# cd /var/named/slaves/
[root@lcl slaves]# rm -rf *
[root@lcl slaves]# service named restart
停止 named:. [确定]
启动 named: [确定]
[root@lcl slaves]# ls
192.168.100.zone hngd.zones
[root@lcl slaves]# cat 192.168.100.zone
$ORIGIN .
$TTL 86400 ; 1 day
100.168.192.in-addr.arpa IN SOA dns.hngd.com. admin.hngd.com. (
2016032012 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dns.hngd.com.
$ORIGIN 100.168.192.in-addr.arpa.
10 PTR mail.hngd.com.
11 PTR www.hngd.com.
2 PTR slave.hngd.com.
20 PTR dns.hngd.com.
[root@lcl slaves]# cat hngd.zones
$ORIGIN .
$TTL 86400 ; 1 day
hngd.com IN SOA dns.hngd.com. admin.hngd.com. (
2016032012 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dns.hngd.com.
NS slave.hngd.com.
MX 5 mail.hngd.com.
$ORIGIN hngd.com.
bbs CNAME www
dns A 192.168.100.20
mail A 192.168.100.10
slave A 192.168.100.2
www A 192.168.100.11


cache only DNS服务器

配置缓存Cache-only服务器

Cache-only服务器是很特殊的DNS服务器,它本身并不管理任何区域,但是DNS客户端仍然可以向它请求查询。Cache-only服务器类似于代理服务器,它没有自己的域名数据库,而是将所有查询转发到其他DNS服务器处理。当Cache-only服务器收到查询结果后,除了返回给客户机外,还会将结果保存在缓存中。当下一个DNS客户端再查询相同的域名数据时,就可以从高速缓存里查出答案,加快DNS客户端的查询速度。如果在局域网中建立一台这样的DNS服务器,就可以提高客户机DNS的查询效率并减少内部网络与外部网络的流量。

架设Cache-only服务器非常简单,只需要建立好主配置文件named.conf即可。架设Cache-only服务器的主配置文件/etc/named.conf也需要设置服务器的选项,方法与设置主要名称服务器的方法相同,这里就不再重复了。下面通过实例来讲解各项配置。

案例:将当前ip为192.168.100.254的主机配置为缓存域名服务器

1. 建立named.conf主配置文件

[root@dns ~]# cat /etc/named.conf
options {
listen-on port 53 {192.168.100.254; };
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; //是否允许递归

forward only; //仅转发;forward first :首先使用转发,如果 forwarders list 中的DNS主机不应答,该主机将自己去找应答
forwarders { 192.168.100.20; }; //将收到的所有dns请求转发给192.168.100.20服务器
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};

2. 用named-checkconf检测named.conf的语法
[root@dns ~]# named-checkconf /etc/named.conf
[root@dns ~]#

3. 将/etc/resolv.conf的nameserver指向缓存域名服务器
[root@dns ~]# cat /etc/resolv.conf
nameserver 192.168.100.254

4. 重启named服务
5. 现在如果检测,会发现不能进行域名解析,会出现这个问题的原因可能是192.168.100.20域名服务器的防火墙和selinux没有关闭
6. 解决完以上问题后,我们再来检测
[root@dns ~]# nslookup
> server 192.168.100.254
Default server: 192.168.100.254
Address: 192.168.100.254#53
> www.hngd.com
Server: 192.168.100.254
Address: 192.168.100.254#53

Non-authoritative answer:
Name: www.hngd.com
Address: 192.168.100.11
>

上面的缓存域名服务器是转发所有的域名解析请求,当然我们也可以针对一个域名进行转发,如:
zone IN "qq.com" {
type master;
forwarders{ 192.168.100.20; };
}

我们知道 DNS 会同时启用 UDP/TCP 的 port 53,而且是针对所有接口,因此上面的数据并没有什么特异的部分。不过,怎么会有 port 953 且仅针对本机来监听呢?其实那是 named 的远程控制功能,称为远程名称解析服务控制功能 (remote name daemon control, rndc)。预设的情况下,仅有本机可以针对 rndc 来控制。我们会在后续的章节再来探讨这个 rndc 啦,目前我们只要知道 UDP/TCP port 53 有启动即可
(5) 测试:如果你的 DNS 伺服器具有连上因特网的功能,那么透过『 dig www.baidu.com @127.0.0.1 』这个基本指令执行看看, 如果有找到 baidu 的 IP ,并且显示『 SERVER: 127.0.0.1#53(127.0.0.1) 』的字样, 那就代表应该是成功啦!


问题:

什么时候有架设 cache-only DNS 的需求?

在某些公司行号里头,为了预防员工利用公司的网络资源作自己的事情,所以都会针对 Internet 的联机作比较严格的限制。当然啦,连 port 53 这个 DNS 会用到的 port 也可能会被挡在防火墙之外的~这个时候, 你可以在『防火墙的那部机器上面,加装一个 cache-only 的 DNS 服务!』
这是什么意思呢?很简单啊!就是你自己利用自己的防火墙主机上的 DNS 服务去帮你的 Client 端解译 hostname <--> IP 啰!因为防火墙主机可以设定放行自己的 DNS 功能,而 Client 端就设定该防火墙 IP 为 DNS 服务器的 IP 即可!哈哈!这样就可以取得主机名与 IP 的转译啦!所以,通常架设 cache only DNS 服务器大都是为了系统安全啰。
Address: 192.168.100.20#53

10.100.168.192.in-addr.arpa name = mail.hngd.com.

DNS服务器搭建(主、从、缓)的更多相关文章

  1. Linux下dns服务器搭建

    Linux下dns服务器搭建1-环境Red Hat Enterprise Linux Server release 6.7 (Santiago)2-配置本地yum源安装dns相关包yum -y ins ...

  2. 架构师成长之路6.6 DNS服务器搭建(构建企业级DNS)

    点击返回架构师成长之路 架构师成长之路6.6 DNS服务器搭建(构建企业级DNS) 采用LVS-DR模式负载均衡,多IDC,多套DNS集群,通过master-slave技术保证dns配置的一致性. 1 ...

  3. 架构师成长之路6.5 DNS服务器搭建(添加记录、负载均衡、DNS视图)

    点击返回架构师成长之路 架构师成长之路6.5 DNS服务器搭建(添加记录.负载均衡.DNS视图)  部署主DNS : 点击 部署从DNS : 点击 1.添加A记录.CNAME记录.MX记录.PTR记录 ...

  4. 架构师成长之路6.4 DNS服务器搭建(部署主从DNS)

    点击返回架构师成长之路 架构师成长之路6.3 DNS服务器搭建(部署主从DNS)  部署主DNS : 点击 部署从DNS : 如下步骤 1.与主DNS一样,安装bind yum -y install ...

  5. 架构师成长之路6.3 DNS服务器搭建(部署单台DNS)

    点击返回架构师成长之路 架构师成长之路6.3 DNS服务器搭建(部署单台DNS) 1.安装bind yum -y install bind-utils bind bind-devel bind-chr ...

  6. Linux下DNS服务器搭建详解

    Linux下DNS服务器搭建详解 DNS  即Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种机制.其中通过域名解析 ...

  7. CentOS6.5下DNS服务器搭建与配置

    一.安装机器情况 192.168.1.70(dns 主节点) 192.168.1.71(dns 从节点) 二.主节点DNS的安装及配置 1. DNS服务器所需的软件包安装 yum -y install ...

  8. DNS服务器搭建与配置

    DNS服务器搭建与配置目录 1.DNS查询方式 2.DNS服务器类型 3.DNS主要配置文件组 4.name.conf文件配置介绍 5.DNS的资源记录格式 6.DNS服务器和客户端配置 7.简单搭建 ...

  9. Linux:DNS服务器搭建

    DNS简介 DNS(Domain Name System)域名系统: 是一种采用客户端/服务器机制,负责实现计算机名称与IP地址转换的系统.DNS作为一种重要的网络服务,既是国际互联网工作的基础,同时 ...

随机推荐

  1. 2.1 sikuli 中编程运行

    1.用sikuli编程时,多用wait()语句,因为很多时候没有给它一定的识别时间,就容易出错. 比如下图,保证页面加载时间 1.Sikuli中 ,可以加# 进行注释 但是注释有的时候也会不起作用,比 ...

  2. 【bfs】 poj 3984 maze 队列存储

    #include <iostream> #include <stdio.h> #include <cstring> #define Max 0x7f7f7f7f u ...

  3. weak和assign区别

    weak比assign多了一个功能,当对象消失后自动把指针变成nil haofanazenmeban[4002:406590] controller:<SecondViewController: ...

  4. PHP中级篇 Apache配置httpd-vhosts虚拟主机总结及注意事项[OK]

    经常使用Apache虚拟主机进行开发和测试,但每次需要配置虚拟主机时都习惯性的ctrl+c和ctrl+v,这次由于重装系统,需要配置一个新的PHP开发环境虚拟主机,于是总结一下Apaceh配置http ...

  5. 使用React Native一年后的感受

    转载自:http://www.dobest.me/blog/2016/06/12/%E4%BD%BF%E7%94%A8React%20Native%E4%B8%80%E5%B9%B4%E5%90%8E ...

  6. centos yum源问题

    在配置CentOS-6.0-x86_64-bin-DVD2.iso作为本地yum源的时候,碰到相当多的问题: -----------------------------------------  问题 ...

  7. JS-DOM操作应用高级(三)

    appendChild   1.先把元素从原有的父级上删除    2.添加到新的父级 <title>无标题文档</title> <script> window.on ...

  8. lucene3.6.1 经典案例 入门教程 (包含从文件中读取content)

    转载http://liqita.iteye.com/blog/1676664 第一步:下载lucene的核心包 lucene-core-3.6.1-javadoc.jar (3.5 MB) lucen ...

  9. ubuntu 下重装mysql若干问题

    最近由于种种原因需要重装mysql.打开终端开始卸载 sudo apt-get remove mysql-comm sudo apt-get auto remove 重新开始安装mysql sudo ...

  10. 【项目笔记】拿宽高前measure(widthMeasureSpec, heightMeasureSpec)的使用技巧

    我们知道获取宽高一般写法是: view.measure(0, 0); view.getMeasuredHeight(); 拿宽高前什么时候可以直接用measure(0, 0);而什么时候不能用meas ...