1. 概念

1.1. DNS: Domain Name Service, 应用层协议,占用53/udp, 53/tcp

1.2. tld(顶级域):Top Level Domain

  组织域:.com, .net, .org, .gov, .edu, .mil

  国家域:.iq, .tw, .hk, .jp, .cn, ...

1.3. DNS查询类型包括递归查询和迭代查询

1.4. DNS名称解析方式:正向解析(名称-->IP),反向解析(IP-->名称)

1.5. DNS服务器类型:负责解析至少一个域(主名称服务器,辅助名称服务器),不负责解析(缓存名称服务器)

主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;主服务器”通知“从服务器随时更新数据;
从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作

1.6. 区域传送:全量传送:axfr, 传送整个数据库;增量传送:ixfr, 仅传送变量的数据;

1.7. 区域(zone)和域(domain):比如abc.com是域,在这个域下面包括正向解析和反向解析,每个解析库都有很多的区域。

1.8. BIND:Berkeley Internet Name Domain,  现在在ISC.org下维护,bind是dns协议的一种实现,named是bind程序的运行的进程名

2. 区域文件详解:

2.1 配置文件注解

magedu.com. 	86400 	IN 		SOA 	magedu.com. 	admin.magedu.com.  (
2017010801 ; serial # 序列号:也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;
2H ; refresh # 刷新时间间隔:从服务器每多久到主服务器检查序列号更新状况;
10M ; retry # 重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;
1W ; expire # 过期时长:从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;
1D ; negative answer ttl # 否定答案的缓存时长:
)

  

2.2. 资源记录详解:Resource Record, 简称rr;

资源记录的定义格式:name  [TTL]  IN  RR_TYPE  value

SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
  name: 当前区域的名字;例如”mageud.com.”,或者“2.3.4.in-addr.arpa.”;
  value:有多部分组成
    (1) 当前区域的区域名称(也可以使用主DNS服务器名称);
    (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
    (3) (主从服务协调属性的定义以及否定答案的TTL)

例如

magedu.com. 	86400 	IN 		SOA 	magedu.com. 	admin.magedu.com.  (
2017010801 ; serial
2H ; refresh
10M ; retry
1W ; expire
1D ; negative answer ttl
)

  

NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
  name: 当前区域的区域名称
  value:当前区域的某DNS服务器的名字,例如ns.magedu.com.;
  注意:一个区域可以有多个ns记录;

例如:

magedu.com. 	86400 	IN 	NS  	ns1.magedu.com.
magedu.com. 86400 IN NS ns2.magedu.com.

  

MX:Mail eXchanger,邮件交换器;
  name: 当前区域的区域名称
  value:当前区域某邮件交换器的主机名;

  优先级:0-99,数字越小优先级越高;
  注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;

例如:

magedu.com. 		IN 	MX 	10  	mx1.magedu.com.
magedu.com. IN MX 20 mx2.magedu.com.

  

A:Address, 地址记录,FQDN --> IPv4;
  name:某FQDN,例如www.magedu.com.
  value:某IPv4地址;

例如:

www.magedu.com.		IN 	A	1.1.1.1
www.magedu.com. IN A 1.1.1.2
bbs.magedu.com. IN A 1.1.1.1

  

AAAA:地址记录, FQDN --> IPv6;
  name:FQDN
  value: IPv6

PTR:Pointer,IP --> FQDN
  name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;
  value:FQND

例如:

4.3.2.1.in-addr.arpa.  	IN  PTR	www.magedu.com.

  

CNAME:Canonical Name,别名记录;
  name:FQDN格式的别名;
  value:FQDN格式的正式名字;

例如:

web.magedu.com.  	IN  	CNAME  www.magedu.com.

  

注意

  (1) TTL可以从全局继承;
  (2) @表示当前区域的名称;
  (3) 相邻的两条记录其name相同时,后面的可省略;
  (4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

3. BIND的安装和配置:(使用yum即可)

3.1 BIND程序包及操作系统版本:

OS:Red Hat Enterprise Linux Server release 7.2 (Maipo)

Kernel:3.10.0-327.el7.x86_64

bind-libs.9.9.4-29.el7:被bind和bind-utils包中的程序共同用到的库文件;
bind-utils.9.9.4-29.el7:bind客户端程序集,例如dig, host, nslookup等;
bind.9.9.4-29.el7:提供的dns server程序、以及几个常用的测试程序;
bind-chroot.9.9.4-29.el7:选装,让named运行于jail模式下;

3.2 BIND主程序:

主配置文件:/etc/named.conf以及被包含进来的其他文件,/etc/named.iscdlv.key,/etc/named.rfc1912.zones,/etc/named.root.key

解析库文件:/var/named/目录下,一般名字为:ZONE_NAME.zone

注意:

  (1) 一台DNS服务器可同时为多个区域提供解析;
  (2) 必须要有根区域解析库文件: named.ca;
  (3) 还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库;
    正向:named.localhost
    反向:named.loopback

  (4)bind程序安装完成之后,默认即可做缓存名称服务器使用;如果没有专门负责解析的区域,直接即可启动服务;

    CentOS 6: service  named  start

    CentOS 7: systemctl  start  named.service

3.3. BIND主配置文件格式:

  全局配置段:options { ... }

  日志配置段:logging { ... }

  区域配置段:zone { ... } 那些由本机负责解析的区域,或转发的区域;

  注意:每个配置语句必须以分号结尾;

3.4. 缓存名称服务器的配置:

  监听能与外部主机通信的地址;

    listen-on port 53 { 172.16.100.67; };

  学习时,建议关闭dnssec

    dnssec-enable no;

    dnssec-validation no;

    dnssec-lookaside no;

  关闭仅允许本地查询:

    //allow-query  { localhost; };

3.5. 配置解析一个正向区域:

3.5.1. 定义区域:在主配置文件中或主配置文件辅助配置文件中实现;

zone  "ZONE_NAME"  IN  {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};

  注意:区域名字即为域名;

3.5.2.  建立区域数据文件:在/var/named目录下建立区域数据文件;

# cat /var/named/magedu.com.zone
$TTL 3600
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. (
2017010801
1H
10M
3D
1D )
IN NS ns1
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.16.100.67
mx1 IN A 172.16.100.68
mx2 IN A 172.16.100.69
www IN A 172.16.100.67
web IN CNAME www
bbs IN A 172.16.100.70
bbs IN A 172.16.100.71
# chgrp  named  /var/named/magedu.com.zone
# chmod  o=  /var/named/magedu.com.zone
# named-checkzone  ZONE_NAME   ZONE_FILE
# named-checkconf 
# rndc  reload

  

3.6. 配置解析一个反向区域

3.6.1. 定义区域:在主配置文件中或主配置文件辅助配置文件中实现;

zone  "ZONE_NAME"  IN  {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};

  注意:反向区域的名字,反写的网段地址.in-addr.arpa(100.16.172.in-addr.arpa)

3.6.2. 定义区域解析库文件(主要记录为PTR)

cat 100.16.172.in-addr.arpa
$TTL 3600
$ORIGIN 100.16.172.in-addr.arpa.
@ IN SOA ns1.magedu.com. nsadmin.magedu.com. (
2017010801
1H
10M
3D
12H )
IN NS ns1.magedu.com.
67 IN PTR ns1.magedu.com.
68 IN PTR mx1.magedu.com.
69 IN PTR mx2.magedu.com.
70 IN PTR bbs.magedu.com.
71 IN PTR bbs.magedu.com.
67 IN PTR www.magedu.com. # chgrp named /var/named/172.16.100.zone
# chmod o= /var/named/172.16.100.zone
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
# rndc reload

  

3.7. 主从服务器(Master/Slave):

On Master:

1)确保区域数据中间中为每个从服务器配置NS记录

2)在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录

3)此A后面的地址为真正的从服务器的IP地址

On Slave:

1)定义区域

// zone for cn.infra
// 养成写注释的好习惯 zone "cn.infra" IN {
type slave; //没啥好说的,类型为master,forward或者slave
file "slaves/cn.infra"; //同步主服务器配置的配置文件存放在本地的某个位置
//主服务的信息
masters {
10.29.248.11; //第一个master,可以写点服务器的信息
10.29.248.12; //第二个master
};
//允许同步文件的slave服务器
allow-transfer {
10.25.2.1; //SLAVE DNS IN WUHAN
10.24.195.1; //SLAVE DNS IN TIANJIN
10.26.2.30; //windows server
10.26.2.28; //windows server
};
//如果有变动需要通知的服务器
also-notify {
10.25.2.1; //SLAVE DNS IN WUHAN
10.24.195.1; //SLAVE DNS IN TIANJIN
};
};

  

2)named-checkconf

rndc reload或者systemctl  reload  named.service

3)注意时间要同步

3.8. 子域授权:

在父域上配置:

ops.magedu.com. 		IN 	NS  	ns1.ops.magedu.com. //NS记录
ops.magedu.com. IN NS ns2.ops.magedu.com. //NS记录
ns1.ops.magedu.com. IN A IP.AD.DR.ESS //被授权的子域的A记录
ns2.ops.magedu.com. IN A IP.AD.DR.ESS //被授权的子域的A记录

  

在子域上配置:

1)子域的服务器必须允许父域服务器做递归

2)定义区域转发:仅转发对某特定区域的解析请求;

zone  "ZONE_NAME"  IN {
type forward;
forward {first|only}; //first:首先转发;转发器不响应时,自行去迭代查询;only:只转发;
forwarders { SERVER_IP; };
};

  

3)定义全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;

options {
... ...
forward {only|first};
forwarders { SERVER_IP; };
.. ...
};

  

3.9. 安全相关的配置:

3.9.1. acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;

//mynet是acl的集合的名字
acl mynet {
172.16.0.0/16;
127.0.0.0/8;
};

  

内置的acl:

none:没有一个主机;
any:任意主机;
local:本机;
localnet:本机所在的IP所属的网络;

访问控制指令:
allow-query {}; 允许查询的主机;白名单;
allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;
allow-update {}; DDNS,允许动态更新区域数据库文件中内容;

3.10. view

			view  VIEW_NAME {
zone
zone
zone
} view internal {
match-clients { 172.16.0.0/8; };
zone "magedu.com" IN {
type master;
file "magedu.com/internal";
};
}; view external {
match-clients { any; };
zone "magecdu.com" IN {
type master;
file magedu.com/external";
};
};

  

4.常用命令:

4.1. named-chceckconf [/etc/named.conf] 检查配置文件语法错误

4.2. dig:

  dig  [-t RR_TYPE]  name  [@SERVER]  [query options]

    用于测试dns系统,因此其不会查询hosts文件;

    查询选项:

      +[no]trace:跟踪解析过程;

      +[no]recurse:进行递归解析;

    注意:反向解析测试

      dig  -x  IP

    模拟完全区域传送:

      dig  -t  axfr  DOMAIN  [@server]

4.3. host命令:

  host  [-t  RR_TYPE]  name  SERVER_IP

4.4. nslookup命令:交互式模式

  nslookup  [-options]  [name]  [server]

  nslookup>

    server  IP:以指定的IP为DNS服务器进行查询;

    set  q=RR_TYPE:要查询的资源记录类型;

    name:要查询的名称;

4.5. rndc命令:named服务控制命令

  rndc  status

  rndc  flush

【Linux】【Services】【DNS】bind基础的更多相关文章

  1. 第7章 DNS & bind从基础到深入

    本文目录: 7.1 DNS必懂基础 7.1.1 域的分类 7.1.2 主机名.域名.FQDN 7.1.3 域的分层授权 7.1.4 DNS解析流程 7.2 DNS术语 7.2.1 递归查询和迭代查询 ...

  2. 【Linux】DNS服务-BIND从服务器、缓存服务器及转发服务器配置(三)

    环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example. ...

  3. Linux搭建基于BIND的DNS服务器

    Linux搭建基于BIND的DNS服务器   实验目标: 通过本实验掌握基于Linux的DNS服务器搭建. 实验步骤: 1.安装BIND 2.防火墙放通DNS服务 3.编辑BIND的主配置文件 4.编 ...

  4. Linux最常用的基础命令

    Linux最常用的基础命令个人总结 计算机基础知识: 32bit和64bit系统的区别.系统运行机制 32bit=内存的最大寻址空间是2**32,也就是说最大只能使用4GB的内存64bit=内存的最大 ...

  5. Linux最常用的基础命令 下篇

    Linux最常用的基础命令个人总结 shell脚本 脚本就是:写一堆指令存成一个文本,用于完成一些小任务 a="123" linux中定义一个变量 echo $a echo $b ...

  6. linux基础-第十四单元 Linux网络原理及基础设置

    第十四单元 Linux网络原理及基础设置 三种网卡模式图 使用ifconfig命令来维护网络 ifconfig命令的功能 ifconfig命令的用法举例 使用ifup和ifdown命令启动和停止网卡 ...

  7. Linux下dns服务器搭建

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

  8. RedHat Linux AS4 DNS 配置

     RedHat Linux AS4 DNS配置   检查当前系统中安装 DNS功能组件bind情况 [root@svr01 /]# rpm -qa|grep bind* ypbind-1.17.2 ...

  9. Linux的DNS配置2-主从服务器

    1.实验背景 之前写了Linux的DNS配置1-DNS入门,其中只用了一台DNS服务器,但一般在大型网络中,都要通过配置辅助DNS服务器可以提高DNS服务的可靠性,本次实验即配置DNS主从服务器 2. ...

  10. Linux 搭建DNS

    Linux 搭建DNS 使用yum源安装 yum -y install bind* 修改主配置文件 [root@localhost ~]# cp /etc/named.conf /etc/named. ...

随机推荐

  1. Sonar规范扫描Java代码暴露的问题

    字符串和封装类型应使用 equals()进行比较 例如java.lang.Integer使用引用等于==或!=,因为它不是比较实际值,而是比较内存中的位置. String firstName = ge ...

  2. Git 修改已提交的commit注释

    两种情况: 1.已经将代码push到远程仓库 2.还没将代码push到远程仓库,还在本地的仓库中 这两种情况下的修改大体相同,只是第一种情况最后会多一步 下面来说怎么修改 先搞清楚你要修改哪次的提交注 ...

  3. 查看Git提交的代码统计

    1,提交Top5: git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5 2,某用户提交的代码统计 git log ...

  4. Jenkins执行 remote SSH 命令

    1.安装 SSH Pipeline Steps 插件 2.在凭据中添加remote server凭据,如下 3.Pipeline编写: def GetRemoteServer(ip){ def rem ...

  5. 尖端之作看逐浪-Zoomla!逐浪CMS python版发布

    免费下载:https://www.z01.com/down/3723.shtml Python是跻身于当代IT世界最流行和代码最高效的编程语言之一. 带着对技术的卓越追求.对客户的承诺.对品质的极致追 ...

  6. 大爽Python入门教程 3-3 循环:`for`、`while`

    大爽Python入门公开课教案 点击查看教程总目录 for循环 可迭代对象iterable 不同于其他语言. python的for循环只能用于遍历 可迭代对象iterable 的项. 即只支持以下语法 ...

  7. request模块做post请求时,body为json格式,并且带有中文,如何请求

    后台接口只能解析json,并且一定要是中文才能解析出来,如果是unicode编码的中文则会报错 看requests的源码.以下为解决方法: #将requests库中的models.py文件中的第461 ...

  8. 提升开发效率的notepad++一些快捷方法(实体类的创建和查询sql语句的编写)

    新手要创建数据库表中,对应字段名的实体类,是不是感觉很麻烦,可以用notepad++快速的把实体类中的字段名进行排版,随后直接粘入idea使用 下面是navicat的演示 选择一个表,右键选择设计表 ...

  9. 关于Cefsharp无法拖动Dom元素的解决方法

    如图所显示,Cefsharp在嵌入网页,页面有对Dom元素的拖动的操作,独立在浏览器上对网页元素的拖动是没有问题的,但是嵌入到Cefsharp上显示禁用的图标.排查了H5的代码,没有写入禁用拖动的操作 ...

  10. OpenShift 本地开发环境配置(基于 Minishift)

    本文要做什么? 很多为了验证应用在 OpenShift 平台的行为是否正常,或者组成一个简单的开发环境,直接搭建一个 OpenShift/Origin 环境可能太重了,而且运行在本机可能占用内存也太多 ...