一、理论层面

1. DNS的出现及演化

  网络出现的早期是使用IP地址通讯的,那是就几台主机通讯。但是随着接入网络主机的增多,这种数字标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和Windows也继承保留了这个文件)。这个文件中记录着主机名称和IP地址的对应表,这样只要输入主机名称,系统就会加载hosts文件并查找对应关系,找到对应的IP,就可以访问这个IP的主机了。 但是后来主机太多了,无法保证所有人都能拿到统一的最新的hosts文件,就出现了在文件服务器上集中存放hosts文件,以供下载使用。互联网规模进一步扩大,这种方式也不堪重负,而且把所有地址解析记录形成的文件都同步到所有的客户机似乎也不是一个好办法。这时DNS系统出现了,随着解析规模的继续扩大,DNS系统也在不断的烟花,直到现今的多层架构体系。

2.DNS概述入门

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户方便的访问互联网,而不用去记住能够被机器读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析),DNS协议运行在UDP协议之上,使用端口号53 DNS的分布式数据库是以域名为索引的,每个域名实际上就是一颗很大的逆向数中路径,这棵逆向树成为域名空间(domain name space) 树的最大深度不超过127层,树种每个节点都有一个可以长达63个字符的文本符号。

3、DNS域名解析过程

首先,客户端现在本地缓存查找有没有域名缓存,如果没有,客户端发送DNS请求翻译IP地址或主机名,DNS服务器在收到客户机的请求后: 
(1)检查Local DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息 
(2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户端发出应答信息。 
(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级域查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在的网络的DNS服务器发出应答信息,DNS服务器收到应该后先在缓存中存储,并解析结果发给客户及 
(4)若没有找到,返回错误信息

4.DNS的分类

主DNS服务器:就是一台存储着原始资料的DNS服务器 。
从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器,也称辅助DNS服务器 。
缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器,同时缓存查询回来的结果,也叫递归服务器。 
转发器:这台DNS发现非本机负责的请求后,不再向根发起请求,而是直接转发给指定的一台或多台服务器,自身并不保存查询结果。

SOA: 可以理解为一段自己dns做备注说明的文本,一般与ns一致

实例:

a.shifen.com .                579            IN          SOA            dns.baidu.com.  sa.baidu.com.            (
1408010001 ; serial number
5 ; refresh 5s
5; retry 5s
86400 ; expire 1d
3600 ;min TTL 1h
)

相关解释: 
1、Serial:只是一个序号,但这个序号可被用来作为slavemaster更新的依据。举例来说,master序号为100但slave序号为90时,那么这个zone file的资料就会被传送到slave来更新了。由于这个序号代表新旧资料,通常我们建立你可以利用日期来设定! 
举例来说,如果资料是在2018/03/21所修改的第一次,所以用2018032101作为序号代表!(yyymmddnn,nn代表这一天是第几次修改) 
2、Refresh:除了根据Serial来判断新旧之外,我们可以利用这个refresh(更新)命令slave多久进行一次主动更新; 
3、Retry:如果到了Refresh的时间,但是slave却无法连接到master时,那么在多久之后,slave会再次的主动尝试与主机连线; 
4、Expire:如果slave一直无法与master连接上,那么经过多久的时间之后,则命令slave不要再连接master了!也就是说,此时我们假设master DNS可能遇到重大问题而无法上线,则等待系统管理员处理完毕后,再重新来到slave DNS重新启动bind吧! 
5、Minimun:这个就有点像是TTL

NS 域的授权名称服务器

NSDName:DNS的FQDN
a.shifen.com. 611 IN NS ns4.a.shifen.com.
a.shifen.com. 611 IN NS ns3.a.shifen.com.
a.shifen.com. 611 IN NS ns2.a.shifen.com.
a.shifen.com. 611 IN NS ns1.a.shifen.com.
a.shifen.com. 611 IN NS ns5.a.shifen.com.

MX 域的邮件交换器,要跟这一个优先级值,越小越高

baidu.com.      7200    IN  MX      20    jpmx.baidu.com.
baidu.com. 7200 IN MX 20 mx50.baidu.com.
baidu.com. 7200 IN MX 10 mx.n.shifen.com.
baidu.com. 7200 IN MX 20 mx1.baidu.com.

A记录: 将域名指向一个IPv4地址(例如:10.10.10.10),需要增加A记录 
CNAME记录:如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记录 
MX记录: 建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录 
NS记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录 
TXT记录: 可任意填写(可为空),通常用做SPF记录(反垃圾邮件)使用 
AAAA记录: 将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录 
SRV记录: 记录了哪台计算机提供了哪个服务。格式为:服务的名字.协议的类型(例如:_example-server._tcp) 
显性URL:将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址(例如:将www.net.cn显性转发到www.hichina.com后,访问www.net.cn时,地址栏显示的地址为:www.hichina.com)。 
隐性URL: 与显性URL类似,但隐性转发会隐藏真实的目标地址(例如:将www.net.cn隐性转发到www.hichina.com后,访问www.net.cn时,地址栏显示的地址仍然为:www.net.cn)。

6.DNS命名规范

1、26个英文字母 
2、“0.1.2.3.4.5.6.7.8.9”十个数字 
3、“-”(英文中的连词号) 
4、最多63字节长度

7.DIG、NSLOOKUP、HOST的介绍

host命令是大多数系统软件库调用的解析命令,比如php中

[root@www ~]# host baidu.com
baidu.com has address 220.181.57.217
baidu.com has address 111.13.101.208
baidu.com has address 123.125.114.144
baidu.com has address 180.149.132.47
baidu.com mail is handled by 20 mx50.baidu.com.
baidu.com mail is handled by 20 jpmx.baidu.com.
baidu.com mail is handled by 10 mx.n.shifen.com.
baidu.com mail is handled by 20 mx1.baidu.com.

Nslookup能够反映出是那个dns server返回的结果

[root@www ~]# nslookup baidu.com
Server: 100.100.2.136
Address: 100.100.2.136#53
Non-authoritative answer:
Name: baidu.com
Address: 180.149.132.47
Name: baidu.com
Address: 123.125.114.144
Name: baidu.com
Address: 111.13.101.208
Name: baidu.com
Address: 220.181.57.217

dig返回整个解析过程的详细描述,类似traceroute

[root@localhost ~]# dig abcdocker.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.5 <<>> abcdocker.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46079
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 16 ;; QUESTION SECTION:
;abcdocker.com. IN A ;; ANSWER SECTION:
abcdocker.com. 5 IN A 59.110.69.51 ;; AUTHORITY SECTION:
abcdocker.com. 5 IN NS dns10.hichina.com.
abcdocker.com. 5 IN NS dns9.hichina.com. ;; ADDITIONAL SECTION:
dns9.hichina.com. 5 IN A 140.205.81.25
dns9.hichina.com. 5 IN A 106.11.141.115
dns9.hichina.com. 5 IN A 106.11.141.125
dns9.hichina.com. 5 IN A 106.11.211.55
dns9.hichina.com. 5 IN A 106.11.211.65
dns9.hichina.com. 5 IN A 140.205.41.15
dns9.hichina.com. 5 IN A 140.205.41.25
dns9.hichina.com. 5 IN A 140.205.81.15
dns10.hichina.com. 5 IN A 140.205.41.26
dns10.hichina.com. 5 IN A 140.205.81.16
dns10.hichina.com. 5 IN A 140.205.81.26
dns10.hichina.com. 5 IN A 106.11.141.116
dns10.hichina.com. 5 IN A 106.11.141.126
dns10.hichina.com. 5 IN A 106.11.211.56
dns10.hichina.com. 5 IN A 106.11.211.66
dns10.hichina.com. 5 IN A 140.205.41.16 ;; Query time: 336 msec
;; SERVER: 192.168.222.2#53(192.168.222.2)
;; WHEN: Wed Mar 21 10:41:13 2018
;; MSG SIZE rcvd: 350

 二、单台DNS服务器部署

1、环境准备

centos6.7

yum源配置:https://opsx.alibaba.com/mirror

 yum install bind-utils bind bind-devel bind-chroot -y

2、vim /etc/named.conf   主配置文件

[root@hermes ~]# >/etc/named.conf
[root@hermes ~]# vim /etc/named.conf DNS首先加载的文件 更多ban9管理员
options {
version "1.1.1";
listen-on port 53 {any;};
directory "/var/named/chroot/etc/";
pid-file "/var/named/chroot/var/run/named/named.pid";
allow-query { any; };
Dump-file "/var/named/chroot/var/log/binddump.db";
Statistics-file "/var/named/chroot/var/log/named_stats";
zone-statistics yes;
memstatistics-file "log/mem_stats";
empty-zones-enable no;
forwarders {202.106.196.115;8.8.8.8; };
};
key "rndc-key" {
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
logging {
channel warning {
file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
severity warning;
print-category yes;
print-severity yes;
print-time yes;
};
channel general_dns {
file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default {
warning;
};
category queries {
general_dns;
};
};
include "/var/named/chroot/etc/view.conf";

相关注释:

options {
version "1.1.1";
listen-on port 53 {any;}; #监控端口
directory "/var/named/chroot/etc/"; #A记录等配置文件所在的目录
pid-file "/var/named/chroot/var/run/named/named.pid"; 服务器来的进程号
allow-query { any; }; #允许谁访问{}可以写IP
Dump-file "/var/named/chroot/var/log/binddump.db";
Statistics-file "/var/named/chroot/var/log/named_stats"; #可以看到DNS解析记录的数量,成功率有多少域(可以做监控)DNS状态等
zone-statistics yes; #配成yes之后上面才会写入
memstatistics-file "log/mem_stats"; #内存状态
empty-zones-enable no;
forwarders {202.106.196.115;8.8.8.8; }; 转发(如果我这没有域名就转发)
};
key "rndc-key" { 认证的密钥
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
logging { 日志 警告路径 (日志分2种)
channel warning { 日志的相关信息
file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
severity warning;
print-category yes;
print-severity yes;
print-time yes;
};
channel general_dns { 访问日志相关信息
file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default { #默认日志警告级别
warning;
};
category queries { #访问日志级别
general_dns;
};
};
include "/var/named/chroot/etc/view.conf"; 其他域的配置文件目录(view.conf可以实现简单的只能DNS的功能,为以后的只能DNS做准备)

编辑认证

vim /etc/rndc.key
key "rndc-key" {
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};

 

编辑/etc/rndc.conf

key "rndc-key" {
algorithm hmac-md5;
secret "Eqw4hClGExUWeDkKBX/pBg==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};

vim /var/named/chroot/etc/view.conf

view "View" {    #“View 说明 以后可以修改为电信 联通”
zone "lnh.com" { #zone配置
type master; #此处为master 还有一个slave
file "lnh.com.zone"; #通过这个view进行来找file 找哪一个
allow-transfer { #允许谁来找我要数据(在named.conf(allow-quey)配置) 允许谁来向我发送请求
10.255.253.211;
};
notify yes; #当我的master文件发生变更了,去通知下面的IP,如
also-notify {
10.255.253.211;
};
};
};
如果有多个需要一zone"lnh.com开头"以};结尾
view "View" {
zone "lnh.com" {
type master;
file "lnh.com.zone";
allow-transfer {
10.255.253.211;
};
notify yes;
also-notify {
10.255.253.211;
};
};
};

编辑vim /var/named/chroot/etc/lnh.com.zone

$ORIGIN .
$TTL 3600 ; 1 hour
lnh.com IN SOA op.lnh.com. dns.lnh.com. (
2000 ; serial
900 ; refresh (15 minutes)
600 ; retry (10 minutes)
86400 ; expire (1 day)
3600 ; minimum (1 hour)
)
NS op.lnh.com.
$ORIGIN lnh.com.
shanks A 1.2.3.4
op A 1.2.3.4

  

注释:

$ORIGIN .     #zone文件生效的域
$TTL 3600 ; 1 hour #域名生存周期(内网可以调节端,外网长)
lnh.com 对外说明我是那个zone IN SOA op.lnh.com. dns.lnh.com. ( 对
2000 ; serial #如果新同步数据需要调节此处的大小
900 ; refresh (15 minutes) #当我slave向我同步数据,同步失败多久响应
600 ; retry (10 minutes) #10分钟之后我在发出请求
86400 ; expire (1 day) 1年没有响应我就认为他宕机了
3600 ; minimum (1 hour)
)
NS op.lnh.com. 此处A记录的相关信息
$ORIGIN lnh.com. #上面NS配置的域名在下面一定要有一个A记录
shanks A 1.2.3.4
op A 1.2.3.4

修改目录权限,并启动服务

 cd /var && chown -R named.named named/
/etc/init.d/named start
chkconfig named on

测试解析结果 

dig @127.0.0.1 a.lnh.com

如果不指定DNS要看本次的dns server服务器

[root@localhost ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.222.2

本文参考:http://blog.csdn.net/linuxlsq/article/details/52606477

												

单台DNS服务器搭建(BIND)的更多相关文章

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

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

  2. Service系统服务(四):搭建单区域DNS服务器、特殊DNS解析、配置DNS子域授权、搭建并测试缓存DNS

    一.搭建单区域DNS服务器 目标: 本例要求要求为DNS区域tedu.cn搭建一台DNS服务器,以便用户能通过域名的方式访问网站.测试阶段主要提供以下正向记录: svr7.tedu.cn ---> ...

  3. 搭建单区域DNS服务器

                                                          搭建单区域DNS服务器 案例1:搭建单区域DNS服务器 案例2:特殊DNS解析 案例3:配置 ...

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

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

  5. DNS服务器搭建(主、从、缓)

    主dns服务器搭建 在本机上搭建一个管理hngd.com域名的域名服务器1. 确保安装好以下bind域名服务器 [root@主人 ~]# rpm -qa |grep ^bindbind-chroot- ...

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

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

  7. Linux下dns服务器搭建

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

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

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

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

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

随机推荐

  1. DAGDGC特殊调弦

    DAGDGC 特殊调弦 重要知识点: 1)音高从高到低排序为:BAGFEDC 2)吉他标准音是(1到6弦) EBGDAE 3)吉他同一弦,每相差一个品级,相差是半个音 调弦方法:1)第一弦(E-> ...

  2. JS基本动画

    <style type="text/css"> .color_red { background: red; } div { position: absolute; to ...

  3. html表格中的tr td th用法

      表格是html中经常使用到的,简单的使用可能很多人都没问题,但是更深入的了解的人恐怕不多,下面我们先来看一下如何使用. <table>是<tr>的上层标签 <tr&g ...

  4. Egret3D学习笔记一 (Unity插件使用)

    一 官方教程: http://developer.egret.com/cn/github/egret-docs/Engine3D/getStarted/getStarted/index.html 大部 ...

  5. 纯HTML自动刷新页面或重定向(http-equiv属性的refresh)

    refresh 属性值  --  刷新与跳转(重定向)页面 refresh出现在http-equiv属性中,使用content属性表示刷新或跳转的开始时间与跳转的网址 refresh示例一:5秒之后刷 ...

  6. OC开发_Storyboard——AutoLayout

    一.autolayout 自动布局: 1. 设置所有视图框架的三种方法,可以通过代码创建也可以storyboard设置 = 规则 (1 蓝线+约束:(位置) 使用蓝线,根据蓝线拖动控件,只是告诉Xco ...

  7. SQL SERVER大话存储结构(5)_SQL SERVER 事务日志解析

          本系列上一篇博文链接:SQL SERVER大话存储结构(4)_复合索引与包含索引    1 基本介绍 每个数据库都具有事务日志,用于记录所有事物以及每个事物对数据库所作的操作. 日志的记录 ...

  8. linux漏洞扫描工具【lynis】

    Lynis是一款Unix系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议.这款软件会扫描一般系统信息,脆弱软件包以及潜在的错误配置. 特征: 漏洞 ...

  9. Python爬虫框架Scrapy实例(二)

    目标任务:使用Scrapy框架爬取新浪网导航页所有大类.小类.小类里的子链接.以及子链接页面的新闻内容,最后保存到本地. 大类小类如下图所示: 点击国内这个小类,进入页面后效果如下图(部分截图): 查 ...

  10. 10.Git远程仓库

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了.可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Git ...