写在前面:

博客书写牢记5W1H法则:What,Why,When,Where,Who,How。


本篇主要内容:

● tcp/ip回顾

● DNS协议/DNS服务相关概念

● bind安装配置

  正向解析区域

  反向解析区域

  主从服务器

   子域配置

   转发配置

● bind安全设置

  acl访问控制列表

● bind view智能DNS


相关概念回顾:

tcp/ip

通信子网--->内核中实现

传输层

添加源端口与目标端口等信息。

由于发送方与接收方的速率可能不同,这样可能会导致数据丢失,所以在传输层的tcp首部信息中设置有“window”(窗口)大小设置。

裸套接字:

应用层进程的报文自己有控制功能,不通过TCP和UDP支撑,直接调用互联网层的IP报文,这类报文称为裸套接字报文。

TCP:Transmission Control Protocol

面向连接的协议,双方通信之前需要实现建立虚连接。

UDP:User Datagram Protocol

用户数据报协议,双方通信之前无需建立虚连接。

sctp等其他协议

互联网层

添加IP等信息,完成网络通讯

物理层

添加MAC地址等信息,万层本地通讯,转发、中继

应用层

请求信息数据,包或包组

应用程序来实现各种协议

如:http/ftp/邮件发送smtp/邮件接收pop3/

tcp/ip协议中基于sockets的通讯一般为C/S结构的。

Server端需要时刻监听(listen)在IP:Port上,Client同样需要一组IP:Port信息与Server通信。

DNS:Domain Name Service,应用层协议

相关概念:

将域名与IP地址进行相互转换的协议。

C/S结构

默认端口为:53/udp、53/tcp

域名:FQDN(Full Qualified Domain Name)

层级结构:

根域:.

记录顶级域服务器信息,全球目前有13个根

顶级域:top level domain(tld)

记录二级域服务器信息

组织域:

.com商业机构 .net网络组织 .org非盈利组织 .gov政府部门 .edu教育机构 .mil军工部门

国家/行政区域:

.cn中国 .iq伊拉克 .tw台湾 .hk香港 .jp日本

二级域:

记录三级域服务器信息以及本地域主机信息

baidu.com域 magedu.com域 com.cn域等

...

DNS查询方式:

(1)递归查询

客户端向本地DNS查询记录,当本地DNS中没有对应条目时,DNS服务器去网络中查询,并将结果返回给客户端。

客户端-->本地DNS

|-->根域

|-->顶级域 tld

|-->二级域

|...

(2)迭代查询

客户端向本地DNS查询记录,当本地DNS中没有对应条目时,DNS返回根域地址给客户端,客户端依次去查询。

客户端-->本地DNS

|-->根域

|-->顶级域 tld

|-->二级域

|...

DNS名称解析方式:

以下两种解析方式,不是同一个名称空间、不是同一个目录树、也不是同一个解析库。

正向解析:FQDN-->IP

反向解析:IP-->FQDN

域名注册方式:

万网(国内,需备案)、godaddy(国外站点,无需备案)等代理注册站点。

注意,一般注册的是二级域名,如baidu.com,而www.baidu.com只是域中的一台主机。

DNS服务器类型

不负责解析域名:

缓存名称服务器

负责解析至少一个域(也会缓存条目)

主域名解析服务器

         从域名解析服务器

服务器返回的解析答案类型

肯定答案

否定答案

不存在查询的键,因此,不存在预期查询的键对应的值。

权威答案

返回本DNS服务器直接维护的条目,使用dig命令会有"aa"标识。

非权威答案

非本机维护的条目(缓存或转发)

主-辅DNS服务器

主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;

从DNS服务器:从主DNS服务器或其它从DNS服务器那里“复制”一份解析库;但只能进行读操作;(注意“复制”操作是以区域zone为单位的)

主从服务器协调属性

序列号:serial

也即是数据库的版本号;主服务器数据库内容发生变化时,手动设置其版本号递增;

刷新时间间隔:refresh

从服务器每多久到主服务器检查序列号更新状况;

重试时间间隔:retry

从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;

过期时长:expire

从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;

否定答案的缓存时长:

注意:时长对应的单位可以是M、H、D、W,对应分钟、小时、天、星期

另外,当主服务器数据变动时,主服务器会"主动通知"从服务器更新数据;

区域传送

全量传送:axfr, 传送整个数据库;一般第一次同步时使用。

增量传送:ixfr, 仅传送变动的数据;

区域(zone)和域(domain)

区域:

正向解析或反向解析的功能与数据库的集合。

域:

如baidu.com这个二级域,包含了正向解析和反向解析区域。

区域数据库文件zone格式:

资源记录Resource Record(rr)

语法:

name [TTL] IN RR_TYPE value

记录类型(RR_TYPE)

SOA

起始授权记录,必须为第一条,有且只能有一条。

name:当前区域名称

如“fredme.com.”或“4.3.2.in-addr.arpa.”

value

(1)当前区域名称(也可以使用主DNS服务器名称)

(2)当前区域管理员邮箱,其中"@"用"."代替

(3)主从服务器协调属性定义,放入()内

(4)“;”后为注释信息

例:

magedu.com.    86400    IN       SOA    magedu.com.    admin.magedu.com.  (2017010801   ; serial2H          ; refresh10M       ; retry1W         ; expire1D         ; negative answer ttl
)

NS

域名服务器条目

name:当前区域名称

value:当前区域某DNS服务器FQDN名,如ns1.fredme.com

例:

fredme.com.   86400   IN    NS       ns1.fredme.com.

MX

邮件服务器条目

name:当前区域名称

优先级:0-99,数字越小,优先级越高,即使只有一个mx服务器,也需要设置优先级

value:当前区域某邮件交换器的FQDN名

例:

fredme.com.   IN    MX    10   mx1.fredme.com.

 A

IPv4-->FQDN条目

name:FQDN

value:IPv4地址

例:

www.fredme.com.   IN    A    1.1.1.1

AAAA

IPv6地址条目

name:FQDN

value:IPv6

CNAME

FQDN别名

name:FQDN格式的别名

value:FQDN正式名称

例:

web.fredme.com.    IN    CNAME    www.fredme.com.

PTR

FQDN-->IPv4条目

仅反向区域文件中配置

例:

23    IN    PTR    www.gredme.com.

注意

(1)TTL可以全局继承。如头部定义$TTL 3600

(2)@表示当前区域名称

(3)相邻两条记录name相同时,后者可以省略name项

(4)正向解析区域文件中,各MX、NS记录中的FQDN应该有对应的A记录

bind安装配置:

BIND:

Berkeley Internet Name Domain,ISC.org

是DNS协议的一种实现软件程序,其主程序名称为named。

程序包:

bind-libs:被bind和bind-utils包中的程序共同用到的库文件;

bind-utils:bind客户端程序集,例如dig, host, nslookup等;

bind:提供的dns server程序、以及几个常用的测试程序;

bind-chroot:选装,让named运行于jail模式下;

配置文件:

主配置文件:/etc/named.conf

或包含进来其它文件;

/etc/named.iscdlv.key

/etc/named.rfc1912.zones

/etc/named.root.key

文件格式:

全局配置段:

options { ... };

日志配置段:

logging { ... };

区域配置段:

zone { ... };

定义那些由本机负责解析的区域,或转发的区域;

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

解析库文件:

/var/named/目录下;

一般名字为:ZONE_NAME.zone

注意:

(1) 一台DNS服务器可同时为多个区域提供解析;

(2) 必须要有根区域解析库文件: named.ca;

(3) 还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库;

正向:named.localhost

反向:named.loopback

rndc:remote name domain contoller

远程管理bind程序的软件

953/tcp,但默认监听于127.0.0.1地址,因此默认仅允许本地使用;

命令:

用于named服务控制

rndc  status

查看named服务状态

rndc  stats

查看统计信息

rndc  reload/stop/restart

重读配置文件/停止服务/重启服务

rndc  flush

清空named缓存

缓存名称服务器的配置:

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

监听地址配置:

修改为外卡IP,以供能够访问此IP的客户端访问DNS服务。

listen-on port 53;

listen-on port 53 { 172.16.100.67; };

关闭dnssec

初学者建议关闭dnssec

dnssec-enable no;

dnssec-validation no;

dnssec-lookaside no;

关闭仅允许本地查询:

//allow-query  { localhost; };

注意:

(1)"{}"左右有空格

(2)C语言格式的注释信息,单行注释//,多行注释/* */

检查配置文件语法错误

named-checkconf   [/etc/named.conf]

测试工具:

dig

用来测试DNS系统,所以不会查询hosts文件中的记录。

正向解析测试

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

query options:

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

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

反向解析测试

dig  -x  IP [@server]

模拟完全区域传送

dig  -t  axfr  DOMAIN  [@server]

host

host  [-t  RR_TYPE]  name  SERVER_IP

nslookup

nslookup  [-options]  [name]  [server]

交互式模式:

nslookup>

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

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

name:要查询的FQDN;

正向解析区域配置:

(1)修改主配置文件/etc/named.conf

options部分:

listen-on

修改监听IP地址,此地址为客户端能够访问的地址

allow-query

设定允许查询的主机。注释掉,不做限制

dnssec-enable

dnssec-validation

dnssec相关配置,关闭,设置为no

(2)根据主配置文件的include项,修改/etc/named.rfc1912.zones

一般自定义zone配置都写入到此文件

新建自定义zone条目:

zone  "ZONE_NAME"  IN  {

type  {master|slave|hint|forward};

file  "ZONE_NAME.zone";

};

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

(3)根据上步骤,新建zone文件

根据上步配置,假设指明的zone文件为grub2.com.zone,在/var/named/目录新建此文件,内容为:

$TTL 3600  ;单位为秒

$ORIGIN grub2.com. ;设定域名

@   IN       SOA      ns1.grub2.com.    admin.grub2.com. (

2016041001 ;标识符

10M ;同步时间

1H ;重试时间

1D ;过期时间

1D ;否定回答的过期时间

)

IN       NS       ns1

IN       MX       10 mx1  ;注意MX记录有优先级值

ns1   IN       A       192.18.31.7

mx1   IN       A       192.18.31.6

www   IN       A       192.168.31.7

IN       A       192.168.31.6 ;定义多个相同FQDN条目时,客户端每次访问显示顺序不同,相当于进行了负载均衡。省略FQDN表示与上一条目相同。

web   IN       CNAME    www

注意:需要修改权限信息以保证数据安全:

chgrp named grub2.com.zone

chmod o= grub2.com.zone

(4)检查配置文件与zone文件,重读配置文件

named-checkconf

named-checkzone grub2.com. /var/named/grub2.com.zone

rndc reload

反向解析区域配置:

(1)修改/etc/named.rfc1912.zones文件

自定义zone条目:

 zone  "ZONE_NAME"  IN  {

               type  master|slave|hint|forward;

               file  "FILE.zone"; 

            };

补充:

ZONE_NAME:

反写的网段地址.in-addr.arpa

31.18.172.in-addr.arpa

FILE.zone:

网段.zone即可

172.18.31.zone

(2)定义zone文件

假设为:172.18.31.zone

内容为:

$TTL 36000

$ORIGIN 31.18.172.in-addr-arpa

@ IN    SOA    ns1.grub2.com. admin.grub2.com. (

2016041001

10M

1H

1D

1D

)

IN    NS       ns1.grub2.com.

7   IN    PTR    ns1.grub2.com.

6    IN    PTR    mx1.grub2.com.

7    IN    PTR    www.grub2.com.

6    IN    PTR    www.grub2.com.

补充:

反向解析区域zone文件也可以设置CNAME条目,但与正向解析zone不同,应该填写IP

主从服务器:

从服务器是区域(zone)级别的同步。

其他从服务器仍然可以从从服务器同步,即级联

负载均衡:

即多台DNS服务器都发挥作用为客户端提供服务的实现。

(1)将本地客户端的DNS顺序修改一下,一部分将主服务器设置为主DNS,一部分将从服务器设置为主DNS

(2)由上级完成,告知上级DNS服务器有多台服务器,由上级分发到不同服务器上。

服务器原则:

(1)只给本地客户端递归查询

(2)非本地客户端只提供本地管理的域名的查询

从DNS配置方法:

(1)定义区域

指名类型为从服务器(slave)

zone "ZONE_NAME" IN {

type slave;

file "slave/ZONE_NAME.zone";

masters { MASTER_IP; };

};

注意:之所以将zone文件指定到salve目录下,是为了安全,默认/var/named/目录对named组没有写权限,而修改权限势必会有安全隐患,所以选择在salve子目录是非常明智的。

(2)检查配置文件,重载配置或重启服务

named-checkconf

rndc reload

注意:

a.需要确保主服务器的区域数据文件中为此从服务器配置了NS记录以及对应的A或PTR记录,修改区域文件后记得序列号修改一下。

b.主服务器应该设置访问控制,只允许从DNS进行区域传送。

c.需要注意系统时间需要同步,这样才能保证后续同步操作。

ntpdate命令。

子域配置:

(1)正向解析区域授权子域:

只需要在上级域中添加子域的NS记录以及对应的A记录即可。

子域名称 IN NS 子域域名服务器的FQDN

子域服务器FQDN IN A NS_IP

例:

ops.grub2.com.   IN    NS    ns1.ops.grub2.com.

ns1.ops.grub2.com. IN A 172.18.31.9

注意:如果子域有主从等多台服务器,需要在上级域中记录多条。

(2)子域服务器配置

正常配置属于此子域的主机或其子域即可。

定义转发:

当客户端从子域DNS服务器查询父域中定义的域名条目时,由于子域中没有相关记录,所以子域DNS默认会去根域服务器递归查询,而这样做显然没有必要。比如,客户端向ops.grub2.com的域服务器请求"www.grub2.com"域名对应IP地址。

当本地查询不到条目时,设置转发到其他特定服务器。

注意!只有允许递归查询的客户端请求才会被转发。参照下面访问控制指令。

区域转发

仅转发某特定区域的解析请求

zone "ZONE_NAME" IN {

type forward;

forward first|only;

forwarders { SEREVER_IP; ... };

};

first:首先转发。服务器不响应时,再去迭代查询

only:只转发。

全局转发

凡本地未定义区域,全部转发给其他服务器。

在/etc/named.conf配置文件的开头options {}中添加

forward only|first;

forwarders { SERVER_IP; ... };

bind安全相关配置:

acl:

访问控制列表

将1个或多个地址归并为一个集合,通过集合对集合中所有地址进行统一调用。

由于acl只能先定义再使用,所以建议放到配置文件最前端。

在主配置文件/etc/named.conf最前端定义:

acl ACL_NAME {

               IP;

NET/PRELEN;

            };

注意:网段只支持"/数字"的格式

如:

acl localnet {

172.18.31.0/24;

127.0.0.0/8;

172.18.30.7;

};

内置acl:

none:空

any:任意

local:本机

localnet:本机IP所属的网路

访问控制指令:

在主配置文件中options {  };中进行配置。

allow-query {  };

允许查询的主机,白名单

allow-transfer {  }; 

允许向哪些主机做区域传送,默认为所有主机,建议设置为仅允许从DNS服务器。

allow-recursion {  }; 

允许哪些主机可以向当前DNS服务器发起递归查询请求,默认允许所有主机。

使用时记得先注销掉options{};中"recursion yes;"条目,此条目表示为所有主机发起递归查询。

allow-update {  };

DDNS,允许动态更新区域数据库文件内容。

bind view

智能DNS。对不同来源的客户端解析为不同的IP地址。CDN就是利用这种原理。

view VIEW_NAME {

         zone

         zone

         ...

      };

如:

view internal  {

match-clients { 172.18.0.0/8; };

zone "grub2.com"  IN {

type master;

file  "grub2.com/internal";

};

};

view external {

match-clients { any; };

zone "grub2.com" IN {

type master;

file grub2.com/external";

};

};

注意:view条目是从上到下匹配的,所以,应该将小范围view放到前面。

转载于:https://blog.51cto.com/1036416056/1762469

DNS协议与DNS服务器搭建(bind)相关推荐

  1. 修改主从服务器,搭建BIND主从服务器

    参考 基础概念 主从服务 Primary DNS Server 一个域的主服务器保存着该域的zone文件. 该域所有的配置和更改都是在主服务器上进行. Secondary DNS Server 一个域 ...

  2. 计算机网络应用层(二):DNS协议详解

    DNS协议详解 前言 DNS协议概述 DNS工作原理 DNS缓存 DNS记录和报文 资源记录 DNS报文 总结 前言 DNS是计算机网络中应用层的一个协议,可能很多同学碰到过DNS被劫持的情况,我们现 ...

  3. 网络安全系列-四十五: DNS协议详细讲解

    本文针对DNS相关的概念.协议报文结构 及如何抓取DNS报文进行介绍,让你理解DNS协议.DNS的查询方式及报文结构. DNS介绍 DNS是一套分布式的域名服务系统.每个DNS服务器上都存放着大量的机 ...

  4. 自己动手实现DNS协议

    1. 主要内容 不说废话,直接进入正题.先说说本文本文的主要内容,好让你决定是否看下去: 介绍DNS是干什么的: 介绍DNS是如何工作的: 介绍DNS请求与响应的消息格式: 编程实现一个简单的DNS服 ...

  5. 计算机网络协议分析dns,DNS协议分析

    一直有一个愿望,能把知道的东西的原理搞明白:计算机网络.操作系统等等等等.今天好好研究了研究DNS协议. DNS协议是应用层协议,一般是基于UDP协议,不过我看了Golangnet 包里相关源码用的是 ...

  6. DNS协议的学习与实现

    http://www.cnblogs.com/dongkuo/p/6714071.html 1. 主要内容 不说废话,直接进入正题.先说说本文本文的主要内容,好让你决定是否看下去: 介绍DNS是干什么 ...

  7. 【安全牛学习笔记】DNS协议隧道、DNS协议隧道-dns2tcp

    DNS协议隧道 防火墙禁止TCP出站访问流量 - SSH隧道.端口准发全部失效 - 使用基于UPD协议的隧道 - DNS的工作原理适合用于实现隧道 DNS工作原理 - DNS隧道原理: 注册受自己控制 ...

  8. WireShark实战笔记之DNS协议分析

    DNS协议分析 DNS协议概述 DNS工作机理概述 dns报文 WireSahrk分析DNS协议 查看第一个包: 查看第四个包(响应包) DNS协议概述 DNS协议也可以称为DNS服务,全称是Doma ...

  9. 实验十一 DNS 协议分析实验

    实验十一 DNS 协议分析实验 1.DNS 协议简介 DNS 是域名系统 (Domain Name System)的缩写,是一种分层次的.基于域的命名方案, 主要用来将主机名和电子邮件目标地址映射成I ...

最新文章

  1. 取得cpu核心序号_cpu的性能指标有哪些?
  2. Unity3d游戏开发之漫游场景的制作
  3. 硬盘安装RHEL方法
  4. JAVA——JUNIT运行错误[No tests were found]
  5. java反序列化漏洞 tomcat_CVE-2020-9484 Apache Tomcat反序列化漏洞浅析
  6. hybris安装执行install.sh -r b2c_acc initialize遇到build错误 8983端口
  7. php系统函数代码,PHP自定义函数+系统函数库(代码示例)
  8. WAV格式中常见的压缩编码
  9. MD5加密以及产生唯一的ID
  10. 人工智能与深度学习实战(4)——口罩佩戴识别(CNN)
  11. linux 添加链接与删除链接(ln命令的用法)
  12. 澜起科技加速中国本土数据中心解决方案进程
  13. CDA的考试体系与人才能力模型
  14. 计算机英语摘要,跪求计算机论文摘要英文翻译
  15. 带超前进位的四位全加器
  16. dubbo配置timeout
  17. appcan java_AppCan项目源码
  18. [转] 怎样写好作文批语
  19. linux中常用的60个命令及作用详解
  20. 关键词提取——有监督方法

热门文章

  1. Javascript入门阶段——else if语句
  2. Rufus 制作 USB 启动盘简单教程
  3. 计算机中丢失tcalc.dll,修复tcalc.dll
  4. 95后女数据分析师的千字经验,都在这了
  5. 菜鸟教程—SQL测验
  6. Elasticsearch搜索辅助功能解析(十)
  7. scp 保留文件属组_scp 对拷文件夹 和 文件夹下的所有文件 对拷文件并重命名
  8. 重磅 | 李飞飞最新演讲:ImageNet后,我专注于这五件事——视觉理解、场景图,段落整合、视频分割及CLEVR数据集...
  9. OpenLayers 3 之 使用地理数据传输格式GeoJSON
  10. c语言 点运算符,C语言点运算符和箭头运算符