DNS协议与DNS服务器搭建(bind)

写在前面:

博客书写牢记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   ; serial
   2H          ; refresh
   10M       ; retry
   1W         ; expire
   1D         ; 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放到前面。

时间: 2024-08-25 05:31:07

DNS协议与DNS服务器搭建(bind)的相关文章

SIP协议&开源SIP服务器搭建和客户端安装

1. SIP SIP 是一个应用层的控制协议,可以用来建立,修改,和终止多媒体会话,例如Internet电话 SIP在建立和维持终止多媒体会话协议上,支持五个方面: 1)   用户定位: 检查终端用户的位置,用于通讯. 2)   用户有效性:检查用户参与会话的意愿程度. 3)   用户能力:检查媒体和媒体的参数. 4)   建立会话: “ringing”,建立会话参数在呼叫方和被叫方. 5)       会话管理:包括发送和终止会话,修改会话参数,激活服务等等. 1.1 SIP基本组成要素 用户

http协议的svn服务器搭建(apache+subversion)

第一步:安装apache subversion yum install httpd yum install  httpd-devel       //用于开发Apache模块 yum install  subversion yum install  mod_dav_svn   //Subversion与Apache之间的接口(通过它,Apache就可以访问版本库,可以让客户端也使用HTTP的扩展协议 WebDAV/DeltaV进行访问) 验证 svn模块(mod_dav_svn)是否正确安装 l

DNS服务器搭建

一.DNS工作原理   1.计算机进行域名解析的时候,首先向本地DNS查找是否有地址记录:   2.如果找不到,则由本地DNS向根域"."发出解析请求,   3.从根域一次查找顶级域-->一级域-->二级域-->主机名:有点类似于邮件投递之类:   4.本地DNS经过一系列周折之后最终得到IP地址返回给客户端,并且保存记录一段时间: 二.DNS与bind   早期网络尚未流行的时候,计算机不多   通过/etc/hosts文件来存储主机名与IP对应关系:   随着互联

DNS笔记&主从服务器搭建实验

DNS笔记  DNS正反主从服务搭建 ==========================理论部分========================= DNS:Domain Name Service协议,属于应用层协议 使用端口53/TCP  53/UDP 作用:提供域名和IP的解析服务,在互联网中属于非常重要的基础服务 .  根域 .com  .edu  .gov  .org  等等  顶级域,用来指示某个国家或地区或组织使用的名称类型 baidu.com  qq.com    等等,二级域名,

自签名证书以及DNS服务器搭建

1.TSL链路通信 TLS: Transport Layer Security 安全传输协议,在应用层 传输层之间主要应用https 协议,ftps 协议等https大体流程客户端A 服务端BA ----> (连接请求 ) BA<---- (发送CA私钥加密过B的公钥,也就是安全证书)BA (用CA公钥解开证书得到B的公钥)A (生成对称秘钥key,并用B的公钥加密)A ---->(加密的秘钥key) BB (B用自己的私钥解密得到对称私钥key)A B后续通讯使用对称私钥加密通讯 2.

Linux之DNS服务器搭建及常见DNS攻击和防御

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53. 主机名到IP地址的映射有两种方式: 1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用: 2)动态映射,建立一套域名解析系统(DNS),只在

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

主dns服务器搭建 在本机上搭建一个管理hngd.com域名的域名服务器1. 确保安装好以下bind域名服务器 [[email protected]主人 ~]# rpm -qa |grep ^bindbind-chroot-9.8.2-0.17.rc1.el6.x86_64bind-libs-9.8.2-0.17.rc1.el6.x86_64bind-9.8.2-0.17.rc1.el6.x86_64bind-utils-9.8.2-0.17.rc1.el6.x86_64 2. 在主配置文件定义

Linux Red hat 5 DNS服务器搭建(一)域名缓存服务器

Linux Red hat 5 DNS服务器多实验详细搭建 所需软件包: ? bind-9.3.3-7.el5.i386.rpm ? 提供主要程序及相关文件 ? bind-utils-9.3.3-7.el5.i386.rpm ? 提供对dns服务器的测试工具(如nslookup.dig等) ? bind-chroot-9.3.3-7.el5.i386.rpm ? 提供一个伪装的根目录以增强其安全性(var/named/chroot/) ? caching-nameserver-9.3.3-7.e

Linux下DNS服务器搭建详解

 Linux下DNS服务器搭建详解 DNS  即Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种机制.其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析. 下面对DNS的工作流程及原理进行简要说明 DNS的查询流程:需要解析服务的Client先查看本机的/etc/hosts:若无结果,则client查看本地的DNS缓存服务器:若无结果,则查找所属域的首选DNS服务器:若此时本地首选DN