DNS服务的协议讲解以及DNS服务搭建

1.什么是DNS服务?

DNS服务是实现把主机名或域名解析为一个IP的服务,或者这样理解,当你搜索一个网址时,你需要键入刚网站对应的ip地址(因为计算机更理解数字啊),但是大量的ip地址作为网址搜索时,无疑是一件很麻烦的事情,好比通讯录一样,因此我们就需要通过一个容易记忆的字符串记录,而DNS服务就是完成字符串与ip地址之间的转换。

2.了解一些基础概念:

FQDN:全限定域名,即逻辑上的主机名加上主机在域中的位置,

TLD:顶级域名,有两个词组成,中间有小数点,全球一共13个根节点

分类:

国家个地区的顶级域名

国际顶级域名

DNS:域名服务器

通过域名数据库记录的数据,进行域名与ip地址之间的转换,工作在udp/tcp的53号端口上

[扩展]tcp:传输控制协议:双方通信前需要事先建立虚连接的的面向连接的协议

udp:数据控制协议:双方通信前无需事先建立虚连接的协议

3.DNS查询的类型:

根据上图:简单的可以看出DNS的查询类型分为两种:

第一种:递归查询,即客户端到本地DNS服务器之间的通信

第二种:迭代查询,即本地DNS服务器与其他DNS服务器之间的查询

4.DNS的解析方式:

正向解析:名称到ip转换的操作

反向解析:ip到名称之间的转换操作

5.DNS解析的过程

递归查询:

客户端首先访问hosts文件查看是否有该条名称记录的ip地址,如果没有在本地的DNS服务进行查询,如果有,则直接返回给客户端,这样的过程就是递归,本地的dns只是传递给客户端最终的结果(有or没有)

迭代查询:首先访问hosts文件,如果没有,切换到本地的dns服务,本地客户端倘若也没有该条记录,则直接会询问跟节点,根节点会返回本地DNS服务器一个该名称对应的的二级域,dns会继续向该二级域查询该名称的地址,知道查询到该地址的权威服务器回应的权威答案ip,本地DNS服务器然后将结果返回给客户端,这就是完成了dns解析过程中迭代与递归的过程

6.DNS的配置文件

区域(物理概念)和域(逻辑概念)

正向解析库:    FQDN-IP

反向解析库 :      IP-FQDN

7.区域数据库文件

资源记录:Resource Record, 简称rr;

记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MX

SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;

NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;

A: Address, 地址记录,FQDN --> IPv4;

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

CNAME:Canonical Name,别名记录;

PTR:Pointer,IP --> FQDN

MX:Mail eXchanger,邮件交换器;

优先级:0-99,数字越小优先级越高;

资源记录的定义格式:

语法:name  [TTL] INRR_TYPE value

SOA:

name: 当前区域的名字;例如”linuxedu.com.”,或者“2.3.4.in-addr.arpa.”;

value:有多部分组成

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

(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;

(3) (主从服务协调属性的定义以及否定答案的TTL)

例如:

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

NS:

name: 当前区域的区域名称

value:当前区域的某DNS服务器的名字,例如ns.linuxedu.com.;

注意:一个区域可以有多个ns记录;

例如:

linuxedu.com. 	86400 	IN 	NS  	ns1.linuxedu.com.
linuxedu.com. 	86400 	IN 	NS  	ns2.linuxedu.com.

MX:

name: 当前区域的区域名称

value:当前区域某邮件交换器的主机名;

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

例如:

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

A:

name:某FQDN,例如www.linuxedu.com.

value:某IPv4地址;

例如:

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

AAAA:

name:FQDN

value: IPv6

PTR:

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.linuxedu.com.

CNAME:

name:FQDN格式的别名;

value:FQDN格式的正式名字;

8.概念那么多,我们来实践一下,如何实现DNS解析(centos7平台)

了解bind:Berkeley Internet Name Domain伯克利互联网名称域

bind是dns服务的一种实现

named:是bind程序运行的进程名

bind中包括的程序包:

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

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

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

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

首先安装bind程序包

[[email protected] yum.repos.d]# yum info bind
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: 
 * extras: mirrors.aliyun.com
Available Packages
Name        : bind
Arch        : x86_64
Epoch       : 32
Version     : 9.9.4
Release     : 29.el7
Size        : 1.8 M
Repo        : base/7/x86_64
Summary     : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
URL         : http://www.isc.org/products/BIND/
License     : ISC
Description : BIND (Berkeley Internet Name Domain) is an implementation of the DNS
            : (Domain Name System) protocols. BIND includes a DNS server (named),
            : which resolves host names to IP addresses; a resolver library
            : (routines for applications to use when interfacing with DNS); and
            : tools for verifying that the DNS server is operating properly.

安装bind程序包:

[[email protected] yum.repos.d]# yum install -y bind*

9.dns的配置文件

(1)主配置文件

/etc/named.conf或包含进来的其他文件/etc/named.iscdlv.key,/etc/named.rfc1912.zones,

/etc/named.root.key

(2)解析库文件

/var/named/目录下,一般为ZONE_NAME.zone

[注意]

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

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

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

正向:named.localhost

[[email protected] yum.repos.d]# cat /var/named/named.localhost 
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1

反向:named.loopback

[[email protected] yum.repos.d]# cat /var/named/named.loopback 
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	NS	@
	A	127.0.0.1
	AAAA	::1
	PTR	localhost.

rndc:远程名称域控制

工作在953/tcp端口,但默认监听于127.0.0.1地址,因此仅允许本地使用,不允许远程

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

CentOS 6: service  named  start

CentOS 7: systemctl  start  named.service

主配置文件的格式:每个语句必须使用分号结尾

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

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

区域配置段:zone{...}

options {#全局配置段
        listen-on port 53 { 127.0.0.1; };#缓存名称服务器只监听在本机,也可是一个ip范围
        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     { localhost; };#测试时建议关闭,表示仅允许贝斯查询

        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

缓存名称服务器的配置

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

listen-on port 53;

listen-on port 53 { 192.168.1.100 ;};

listen-on port 53 { 192.168.1.100,192.168.1.200 ;};

测试时建议关闭dnssec,需要时开启

 dnssec-enable no;
 dnssec-validation no;

建议关闭仅允许本地查询

#allow-query{localhost;};

检查语法错误命令

named-checkconf

开启服务,检查端口

[[email protected] ~]# systemctl start named.service
[[email protected] ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1355/named          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1094/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1096/cupsd          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1355/named          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1212/master         
tcp6       0      0 ::1:53                  :::*                    LISTEN      1355/named          
tcp6       0      0 :::22                   :::*                    LISTEN      1094/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1096/cupsd          
tcp6       0      0 ::1:953                 :::*                    LISTEN      1355/named          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1212/master         
udp        0      0 0.0.0.0:2294            0.0.0.0:*                           886/dhclient        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           837/chronyd         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1355/named          
udp        0      0 0.0.0.0:68              0.0.0.0:*                           886/dhclient        
udp6       0      0 ::1:323                 :::*                                837/chronyd         
udp6       0      0 :::13128                :::*                                886/dhclient        
udp6       0      0 ::1:53                  :::*                                1355/named

介绍几款测试工具

dig命令

格式:dig [-t RR_TYPE] NAME [@SERVER]  [query options]

主要是检测DNS系统,因此不会查询host文件;

注意两个选项:

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

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

反向解析:dig -x IP

模拟完全区域传送: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:要查询的名称;

rndc命令:named服务控制命令

rndc  status

rndc  flush

配置一个正向区域:

(1)定义区域

在主配置文件中或主配置文件辅助配置文件中实现/etc/named.rfc.1912.zones中追加

zone "linuxedu.top" IN {
        type master;
        file "linuxedu.top.zone";
}

(2)定义区域数据文件(主要记录为A或AAAA记录)路径为/var/named目录下

创建linuxedu.top数据文件

1) $TTL 变量,全局继承此处的缓存周期,单位是秒

2) @代替/etc/named.rfc1912.zones配置的ZONE_NAME,也可以自己定义补全宏:$ORIGIN  linuxedu.top.

3) 定义第二条记录,若写全称最后一个点绝对不能省略

简写时会自动补全/etc/named.rfc1912.zones配置的ZONE_NAME,此时一定不能有这个点

示例格式:ns1==ns1.linuxedu.top.

4) 同一个地址可以有两个名字

5) 一台DNS服务器上配置可以为正常的在互联网上运行的服务器解析,指向为www的具体地址

www IN A   [www服务器地址]

6) 可以定义别名类型:例如web IN CNAME www #定义别名

[[email protected] named]# cd /var/named/
[[email protected] named]# vim linuedu.top.zone
[[email protected] named]# cat linuedu.top.zone
$TTL 3600
@	IN	SOA	ns1.linuxedu.top.	1451032707.qq.com (
		2016050113	;serial
		3H		;refresh
		10M		;retry
		1W		;expire
		1D		;negative answer ttl
)
	IN	NS	ns1.linuxedu.top.
ns1	IN	A	192.168.1.100
www	IN	A	192.168.1.100

权限及数组修改:

# chgrp  named  /var/named/magedu.com.zone
# chmod  o=  /var/named/172.16.100.zone

检查语法错误:

# named-checkzone  ZONE_NAME   ZONE_FILE
# named-checkconf

让服务器重载配置文件和区域数据文件

# rndc  reload 
或者
# systemctl  reload  named.service

测试主机

[[email protected] named]# dig -t A www.linuxedu.top @192.168.168.128

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.linuxedu.top @192.168.168.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30492
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.linuxedu.top.		IN	A

;; ANSWER SECTION:
www.linuxedu.top.	3600	IN	A	192.168.168.128

;; AUTHORITY SECTION:
linuxedu.top.		3600	IN	NS	ns1.linuxedu.top.

;; ADDITIONAL SECTION:
ns1.linuxedu.top.	3600	IN	A	192.168.168.128

;; Query time: 1 msec
;; SERVER: 192.168.168.128#53(192.168.168.128)
;; WHEN: Sun May 01 14:09:46 CST 2016
;; MSG SIZE  rcvd: 95

配置解析一个反向区域

定义区域:

在主配置文件中或主配置文件辅助配置文件中实现

$TTL 3600
$ORIGIN 168.168.192.in-addr.arpa.
@       IN      SOA     ns1.linuxedu.top        1451032707.qq.com (
        2016050116      ;serial
        1H              ;reflush
        10M             ;retry
        3D              ;expire
        12H             ;ttl
)
        IN      NS      ns1.linuxedu.top.
129     IN      PTR     ns2.linuxedu.top.
129     IN      PTR     www.linuxedu.top.

其他步骤,与正向解析一样

时间: 2024-12-28 18:28:28

DNS服务的协议讲解以及DNS服务搭建的相关文章

【基础服务】简单理解DNS的递归、迭代查询 - DNS(一)

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53.在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明. 简单理解DNS的递归.迭代查询过程: 客户端发

CentOS6服务管理之DNS-RNDC管理DNS的实现

RNDC管理DNS的实现 rndc:(Remote NameDomain Controller)基于套接字与named服务通信,控制named服务完成特定操作.是指通过bind 软件引进的远程控制通道,代替unix 信号来控制 named 进程,可以用来对配置进行重新载入,是一款安全软件. rndc 通过一个 TCP 连接与域名服务器通信,发送经过数字签名认证的命令.在当前版本的rndc 和 named 中,唯一支持的认证算法是 HMAC-MD5,在连接的两端使用共享密钥.它为命令请求和名字服务

根据DNS的A记录负载均衡web服务请求

做为论坛站点:有两种类型的数据要处理:  1.结构化的数据:  如:用户名.用户发表的评论等,这些可以存储在关系型数据库中:  2.非结构化的数据:如:用户上传的附件.则存储到文件系统中. 论坛的架构: 使用两台httpd服务器来服务用户的访问请求.使用DNS的A记录做客户访问轮循到这两台服务器上.php做为httpd的模块工作. 论坛架构如下图所示: 一.搭建NFS文件共享服务器. 要点:保证192.168.60.99与192.168.60.40两台httpd服务器的进程能够往共享文件系统(目

CentOS6服务管理之DNS-主从DNS服务器的搭建

接上一篇:CentOS6服务管理之DNS-本地DNS服务器的搭建 下面我们来搭建主从DNS服务器 实验环境: CentOS release 6.6(Final)  两台 IP地址: 172.16.31.3      DNS1        主DNS服务器端 172.16.31.4      DNS2        从DNS服务器端 我们要架设一个DNS服务器一般需要下面三个软件程序包: bind-libs.x86_64      #提供库文件 bind-utils.x86_64     #提供工

应用层协议FTP、DNS协议、HTTP协议分析

分析所用软件下载:Wireshark-win32-1.10.2.exe 一.阅读导览 1.分析FTP协议 2.分析DNS协议 3. 分析HTTP协议 二.分析要求 (1)ftp部分: 学习 Serv-U FTP Server 服务软件的基本配置和FTP 客户端命令的使用 设计应用以获取ftp报文 分析ftp报文的格式与内容(分析至少5个报文,并理解它们之间的关系) 观察 FTP 协议的工作过程,分析FTP 客户是以 PORT 模式还是 PASV 模式连接服务器,观察两种连接 的建立过程和释放过程

SSDP 简单服务发现协议

SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一.它为网络客户端(network client)提供了一种发现网络服务(network services)的机制,采用基于通知和发现路由的多播方式实现. SSDP多播地址:239.255.255.250:1900(IPv4),FF0x::C(IPv6) 两种类型的SSDP请求消息会通过SSDP多播地址发送: 1. 发现请求(Discovery request 或查询请求).SSDP客户端向此地址发送HTTP

DNS 中的协议字段详细定义

DNS中的协议字段定义 Table of Contents 1 概述 2 DNS Classes 3 DNS OpCodes 4 DNS RCODEs 5 DNS Label Types 6 DNS资源记录 7 EDNS Version 8 DNS EDNS0 Option Codes (OPT) 1 概述 总结DNS协议中各字段的取值 2 DNS Classes Decimal Name Reference 0 Reserved RFC6895 1 Internet(IN) RFC1035 2

第4章3节《MonkeyRunner源码剖析》ADB协议及服务: ADB协议概览SYNC.TXT翻译参考(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 本文档的目的是去文档化一个客户端请求ADB服务器往adbd守护进程发送文件相关的请求.请查看OVERVIEW.TXT文档去查看(ADB服务器和adbd守护进程)相关信息,查看SERVICES.TXT去学习其他更多的可用

第4章1节《MonkeyRunner源码剖析》ADB协议及服务: ADB协议概览OVERVIEW.TXT翻译参考(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 关于ADB的实现记录. I. 概览 安卓调试桥(ADB)是用来: 跟踪管理所有连接上或者运行在开发主机上的安卓设备或者模拟器实例. 其实现了各种控制命令(比如: "adb shell","