LINUX基础培训十九之常见服务dns介绍

前言、本章学习目标 
  1. 了解dns服务用途
  2. 掌握dns服务器的配置
  3. 掌握dns服务的使用

一、DNS服务概述

DNS是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

它是由解析器以及域名服务器组成的,域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域转换为IP地址功能的服务器。DNS使用TCP与UDP端口号都53,主要使用UDP,服务器之间备份使用TCP。
 

 二、DNS基础知识

以百度(www.baidu.com)和百度贴吧(tieba.baidu.com)来举例。

域名: 不论是 www.baidu.com 还是 tieba.baidu.com,它们的域名都是 baidu.com,严格地说是 “baidu.com.”。这是百度所购买的com域下的一个子域名。
主机名: 对于 www.baidu.com 来说,主机名是 www,对于 tieba.baidu.com 来说,主机名是 tieba。其实严格来说,www.baidu.com 和 tieba.baidu.com 才是主机名,它们都是 baidu.com 域下的主机。一个域下可以定义很多主机,只需配置好它的主机名和对应主机的IP地址即可。
FQDN: FQDN(Fully Qualified Domain Name),称为完整主机名,是指包含了所有域的主机名,其中包括根域。FQDN 可以说是主机名的一种完全表示形式,它从逻辑上准确地表示出主机在什么地方。例如 www.baidu.com 的 FQDN 是 “www.baidu.com.”,com 后面还有个点,这是根域;tieba.baidu.com 的 FQDN 是 “tieba.baidu.com.”。

DNS解析类型:

正向解析:FQDN-->IP

反向解析: IP --> FQDN

DNS的名称解析库:

在Linux系统中,DNS的名称解析库通常是一个文本文件(只能包含资源记录和宏定义),通常保存在/var/named/目录下。其中文本文件的每一行称作一个资源记录。每一个名称解析库称作”区域(zone)。说明:

区域(zone)与域之间的差异

区域zone是一个物理概念,一个区域就是一个DNS解析库;域是一个逻辑概念,一个域对应一个DNS域名称空间。正向解析与反向解析采用的是不同的解析库,一个配置了正向解析库和反向解析库的DNS意味着其包含了两个区域(正向zone和反向zone)

 三、DNS解析流程

正向解析流程:

 完整的查询请求经过的流程:

   Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

注:
     1.本机查找完缓存后如果没有结果,会先查找hosts文件,如果没有找到再把查询发送给DNS服务器,但这仅仅是默认情况,这个默认顺序是可以改变的。在/etc/nsswitch.conf中有一行" hosts: files dns"就是定义先查找hosts文件还是先提交给DNS服务器的,如果修改该行为"hosts: dns files"则先提交给DNS服务器,这种情况下hosts文件几乎就不怎么用的上了。
     2.由于缓存是多层次缓存的,所以真正的查询可能并没有那么多步骤,上图的步骤是完全没有所需缓存的查询情况。假如某主机曾经向DNS服务器提交了www.baidu.com的查询,那么在DNS服务器上除了缓存了www.baidu.com的记录,还缓存了 ".com" 和 "baidu.com" 的记录,如果再有主机向该DNS服务器提交ftp.baidu.com的查询,那么将跳过".“和”.com"的查询过程直接向baidu.com发出查询请求。
      3.DNS解析过程中存在两种查询类型:递归查询(从客户机到指定DNS服务器)、迭代查询(从DNS服务器至各个域),一般情况下,DNS服务器之间的查询方式都是迭代查询。如果要查询www.microsoft.com(microsoft.com域不是本地DNS负责的区域),那么本地DNS就需要向外迭代查询(迭代查询从根域开始,如此,本地DNS就必须知道根域的IP地址)。根提示的功能可以让本地DNS服务器查询根域DNS服务器。

反向解析流程:

    DNS查询中,客户端一般执行正向查询,正向查询是基于存储在地址(A)资源记录中的另一台计算机的DNS名称来搜索IP地址等信息。DNS也提供反向查询过程,允许客户端在名称查询期间使用已知的IP地址查询计算机名。反向查询采取问答形式进行,例如”您能告诉我使用IP地址192.168.1.20的计算机的DNS名称吗?在DNS标准中采用了一种叫”线索追踪的机制“,即定义了特殊域”in-addr.arpa“,并保留在Internet DNS名称空间中。为了创建名称空间,in-addr.arpa域中的子域是按照带句点十进制编号的IP地址的相反顺序构造的,且采用与正向解析完全不同的解析库。因此,创建in-addr.arpa域树的时候,IP地址八位字节的顺序必须倒置,并且定义一种新的资源记录类型”PTR“。

四、DNS分类

主DNS服务器:管理和维护所负责解析的域内解析库的服务器。
从DNS服务器: 使用自动更新方式从主DNS服务器同步数据的DNS服务器。也成辅助DNS服务器。

缓存DNS服务器(转发器): 不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。

转发器: 这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。   

五、Zone文件资源记录 

 1、zone关键字后面接的是域和类:

zone "test.com" IN{

    type master;

    file "cs.test.com"

};

file定义该域的区域数据文件Resource Record (RR)

2、区域文件的格式:

[name]  [ttl]  [class]  type  data    

如:

$TTL    604800

@       IN      SOA     localhost. root.localhost. (

                                   2         ; Serial

                         604800         ; Refresh

                           86400         ; Retry

                        2419200         ; Expire

                          604800 )       ; Negative Cache TTL

;

@       IN      NS      localhost.

@       IN      A       127.0.0.1

@       IN      AAAA    ::1

; 注释

@ 表示当前域

()允许数据夸行,通常用于 SOA 记录

* 仅用于 name 字符的通配符

name :字段说明资源记录引用的对象名,可以是一台单独的主机也可以是个域名。

对象名可以是相对域名或全域名,全域名应该以“.”结束

若几条连续的 RR 记录涉及同一个对象名,则第一条 RR 记录后的 RR 记录可以 省略对象名

若出现字段名字段,则必须出现在第一个字段

ttl:它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。通常省略该 字段,而使用位于文件开始处的 $TTL 语句所指定值。

class:字段用于指定网络类型,可选的值有:IN、CH 和 HS,其中 IN (Internet)是广泛使用的一种。虽然 IN 是该字段的默认值,但通常我们会显示 地指出。

type:字段用于说明 RR 的类型。常用的 RR 类型如下:

基本记录:

A (Address)    用于将主机名转换为 IP 地址,任何一个主机都只能有一个 A记录

PTR (PoinTeR)    将地址转换为主机名

MX (Mail eXchanger)    邮件交换记录。控制邮件的路由

安全记录:

KEY (Public Key)    储存一个关于DNS 名称的公钥

NXT (Next)    与 DNSSEC 一起使用,用于指出一个特定名称不在域中

SIG (Signatrue)    指出带签名和身份认证的区信息,细节见 RFC 2535

可选记录:

CNAME (Canonical NAME)    给定主机的别名,主机的规范名在A记录中给出

SRV (Services)    指出知名网络服务的信息

TXT (Text)    注释或非关键的信息

 RR的顺序:

SOA RR 应该放在最前面

通常 NS RR 紧跟在 SOA RR 之后

其他记录的顺序无关紧要

data:取决于RR的类型

3、区域资料记录详解:

(1)SOA 开始一个区,基本格式:

zone      IN      SOA   Hostname  Contact (

                        SerialNumber

                        Refresh

                        Retry

                        Expire

                        Minimum )

Hostname:存放本 Zone 的域名服务器的主机名

Contact:管理域的管理员的邮件地址

SerialNumber:本区配置数据的序列号,用于从服务器判断何时获取最新的区数据

Refresh:辅助域名服务器多长时间更新数据库

Retry:若辅助域名服务器更新数据失败,多长时间再试

Expire:若辅助域名服务器无法从主服务器上更新数据,原有的数据何时失效

Minimum:设置被缓存的否定回答的存活时间

 例如:

test.net.   IN  SOA  test.test.net.  root.test.test.net. (

                        2006012000       ;序列号

                        3H               ;3小时后刷新

                        15M              ;15分钟后重试

                        1W               ;1星期后过期

                        1D )             ;否定缓存TTL为1天

对 Contact 来说,因为“@”在文件中有特殊含义,所以邮件地址 root@test.test.net 写为 root.test.test.net.

对 SerialNumber 来说,它可以是 32 位的任何整数,每当更新区文件时都应该 增加此序列号的值,否则 named 将不会把区的更新数据传送到从服务器

缓存时间字段 Refresh、Retry、Expire、Minimum 可以使用时间单位字符 m、 h、d、w 分别表示分钟、小时、天、星期。

各个缓存时间字段的经验值为

Refresh — 1 到 6 小时

Retry — 20 到 60 分钟

Expire — 1 周 到 1 月

Minimum — 1 到 3 小时

Minimum 设置被缓存的否定回答的存活时间,而肯定回答(即真实记录)的默认 值是在区文件开始处用 $TTL 语句设置的。

(2)NS表示一个区的权威服务器:

存储的是该域内的 DNS 服务器相关信息。即 NS 记录标识了哪台服务器是 DNS 服务器。

例如:

name:当前域的名称。

value:当前域的某 DNS 服务器的名称,如 "ns.test.com."。

例如

test.com IN  NS  ns1.test.com

test.com IN  NS  ns2.test.com

注:一个域内可以有多个 ns 记录,即可以存在多台 DNS 服务器

 (3)A -- DNS数据库的核心,提供主机名到IP地址的映射

例如:

name:某 FQDN,如 "www.test.com."。

value:某 IPv4 地址。

例如:

www.test.com. IN  A  192.168.100.200

注:AAAA记录格式和A记录格式相似,但 value 是某 IPv6 地址。

 (4)PTR   提供了ip到主机的映射

name:  IP 地址,有特定格式,且加上特定后缀,如:"1.2.3.4" 的记录应该写为 "4.3.2.in-addr.arpa"。

value:某 FQDN

例如:

4.3.2.in-addr.arpa IN  PTR www.test.com.

(5) MX 用于邮件系统实现邮件路由

name:当前的域名

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

test.com.   IN MX 10 mx1.test.com.

test.com.  IN MX 20 mx2.test.com.

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

(6) CNAME:用于设置主机的别名

name: FQDN 格式的别名

value: FQDN 格式的初始名

例如:

web.test.com. IN CNAME www.test.com

 六、dns服务侧写

·类型: 系统V (System V) 管理的服务
·软件包: bind、bind-utils、bind-chroot
·守护进程: /usr/sbin/named,/usr/sbin/rndc
·脚本: /etc/init.d/named
·端口:53(domain)
·配置文件:(Under /var/named/chroot/) /etc/named.conf,/var/named/*,/etc/rndc.key
·相关软件包: caching-nameserver,openssl,nscd

dns服务主要配置文件

/etc/named.conf :

options { 段全部配置
listen-on port 53 { 127.0.0.1; };//表示BIND将在53端口监听,若需要对所有IP进行监听,则修改为// listen-on port 53 { any; };
directory "/var/named";//工作目录。
dump-file "/var/named/data/cache_dump.db";//缓存转储位置,需要配合rndc命令。
statistics-file "/var/named/data/named_stats.txt";//记录统计信息的文件,需要配合rndc命令。
emstatistics-file "/var/named/data/named_mem_stats.txt";//记录内存使用的统计信息。
allow-query { localhost; };//允许查询的主机,默认只允许本机查询若需要允许所有客户机查询,则修改为// allow-query { any; };
recursion yes;//允许递归查询。
notify yes;//区域数据文件更新发送通知。
querylog //启用日志
forwarders     { 168.95.1.1; 139.175.10.20; }; // 如果域名服务器无法解析时,将请求交由168.95.1.1; 139.175.10.20来解析 
allow-transfer { none; }; //指定允许接受区域传送请求的主机,比如辅dns的ip是192.168.139.5,那么可以这样定义{ 192.168.139.5; },要不然主辅dns不能同步,当然,{}里的也可以用下面提到的acl。
logging {//Loging段channel default_debug {file "data/named.run";//记录了一些named的信息,如监听/解析记录等。它的位置在/var/named /var/named/data下。
severity dynamic;//输出日志级别};};
zone "." IN {type hint;//type只有3种参数:hint/master/slave.只有"."对应的type为hint,其它zone的类型只能为master或slave,即DNS主机和DNS从机。
file "named.ca";//指定了root解析文件的位置,解析文件中记录着域名与IP的对应关系。它的位置在/var/named /var/named/data下。};
include "/etc/named.rfc1912.zones";//解析文件列表的位置
include "/etc/named.root.key"; //根区域的key文件,与事务签名相关。// 这里定义一个acl列表
acl "acl1" {        192.168.139.0/200; 192.168.1.0/200 };view localhost_resolver { //定义一个视图        match-clients      { any; }; //查询者的源地址,any表示localhost_resolver视图对任何主机开放,如果写成{ acl1; },那么就只有acl1表里的ip可以递归查询了        
match-destinations { any; }; //查询者的目标地址,这里也可以写成{ localhost; acl1; }}

七、dns服务的安装配置 

服务端主要配置步骤:
1.下载dns服务器 yum -y install bind
2.配置主配置文件 /etc/named.conf
3.配置正向解析文件
4.开启dns服务器 systemctl start named
5.关闭防火墙 systemctl stop firewalld.service
6.使用nslookup命令测试

客户端主要配置步骤:
1、添加域名服务器地址至/etc/resolv.conf
nameserver 192.168.129.100

八、DNS常用工具

1、dig 命令

说明:

(1)dig只用于测试dns系统,不会查询hosts文件进行解析。

(2)加"@server-ip":根据指定的DNS服务器来解析,绕过了本地解析库中设置的DNS服务器。

(2)dig命令不会查缓存,而是直接查服务器。

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

query options:

+[no]trace:跟踪解析过程 : dig +trace baidu.com

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

#测试反向解析

dig -x IP = dig –t ptr reverseip.in-addr.arpa

#模拟区域传送

dig -t axfr ZONE_NAME @SERVER

dig -t axfr baidu.com @10.10.10.11

dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1

#查询主机NS记录

dig -t NS . @114.114.114.114

dig -t NS . @a.root-servers.net

2、host命令

host [-t type] name [SERVER]

host -t NS baidu.com 172.16.0.1

host -t soa baidu.com

host -t mx baidu.com

host -t axfr baidu.com

host 1.2.3.4

3、nslookup命令

nslookup用于查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题。

1)直接查询

nslookup domain [dns-server]

 //如果没有指定dns服务器,就采用系统默认的dns服务器。

2)查询其他记录

nslookup -qt=type domain [dns-server]type:

    A -->地址记录

    AAAA   -->地址记录

    AFSDB Andrew    -->文件系统数据库服务器记录

    ATMA -->ATM地址记录

    CNAME   -->别名记录

    HINHO  -->硬件配置记录,包括CPU、操作系统信息

    ISDN   -->域名对应的ISDN号码

    MB   -->存放指定邮箱的服务器

    MG    -->邮件组记录

    MINFO   -->邮件组和邮箱的信息记录

    MR   -->改名的邮箱记录

    MX   -->邮件服务器记录

    NS  --> 名字服务器记录

    PTR    ->反向记录

    RP    -->负责人记录

    RT  -->路由穿透记录

    SRV    -->TCP服务器信息记录

    TXT   -->域名对应的文本信息

3) 查询更具体的信息

nslookup -d [其他参数] domain [dns-server]   

  //只要在查询的时候,加上-d参数,即可查询域名的缓存 。

4、rndc 命令

利用rndc工具可以实现管理DNS功能:

rndc 通过一个 TCP 连接与名字服务器通信,发送经过数字签名认证的命令。在当前版本的rndc 和 named 中,唯一支持的认证算法是 HMAC-MD5,在连接的两端使用共享密钥。它为命令请求和名字服务器的响应提供 TSIG类型的认证。所有经由通道发送的命令都必须被一个服务器所知道的 key_id 签名,监听端口:953/tcp。

安装后不能使用:

解决办法:

1)创建key

rndc-confgen -r /dev/urandom –a

2)更改权限

chown root:named /etc/rndc.key 

chmod 644 /etc/rndc.key 

3) 重启named服务。

rndc支持的COMMAND有:

status: 查看状态

reload: 重载主配置文件和区域解析库文件

reload zonename: 重载区域解析库文件

retransfer zonename: 手动启动区域传送,而不管序列号是否增加

notify zonename: 重新对区域传送发通知

reconfig: 重载主配置文件。

querylog: 开启或关闭日志功能。

trace: 递增debug一个级别

trace LEVEL: 指定使用的级别

notrace:将调试级别设置为 0

flush:清空DNS服务器的所有缓存记录

九、本章实验

1、配置一个dns服务器并添加一条域名解析记录。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/440315.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL-priority_queue

文档 目录 1.关于priority_queued1的定义 2.priority_queue的使用 1.关于priority_queued1的定义 1. 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。 2. 此上下文类似于堆,在堆中可以随时插入元…

主从数据库MySQL服务重启步骤与注意事项

主从数据库MySQL服务重启步骤与注意事项 实验环境: 172.20.26.34 (主应用服务器) 172.20.26.26 (备应用服务器) 172.20.26.37 (主库服务器) 172.20.26.38 (从库服务器&…

Android MediaCodec 简明教程(四):使用 MediaCodec 将视频解码到 Surface,并使用 SurfaceView 播放视频

系列文章目录 Android MediaCodec 简明教程(一):使用 MediaCodecList 查询 Codec 信息,并创建 MediaCodec 编解码器Android MediaCodec 简明教程(二):使用 MediaCodecInfo.CodecCapabilities 查…

kafka集群搭建需要做的事情

首先,虚拟机克隆好之后的步骤如下: 1. 修改IP、主机名,关闭防火墙;(reboot重启) 2. 在/etc/hosts文件中进行IP与主机名的映射配置,集群中每天都记得配置; 3. 安装JDK并进行分发&a…

力扣题目训练(5)

2024年1月29日力扣题目训练 2024年1月29日力扣题目训练345. 反转字符串中的元音字母349. 两个数组的交集350. 两个数组的交集 II96. 不同的二叉搜索树97. 交错字符串44. 通配符匹配 2024年1月29日力扣题目训练 2024年1月29日第五天编程训练,今天主要是进行一些题训…

用友GRP-U8 forgetPassword_old.jsp SQL注入漏洞(QVD-2023-31085)

0x01 产品简介 用友GRP-U8R10行政事业内控管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。 0x02 漏洞概述 用友GRP-U8R10行政事业内控管理软件 forgetPassword_old.jsp接口处存在SQL注入漏…

移动机器人正引领着高端芯片实现量产

在数字化时代,高端芯片已经成为推动各行各业创新发展的关键要素。而随着移动机器人技术的不断突破,高端芯片的量产也迎来了新的发展机遇。在这个过程中,移动机器人不仅为高端芯片提供了广阔的应用场景,还为其实现量产提供了强有力…

【Go】Viper读取配置文件

go get github.com/spf13/viper 1. 设置配置文件的信息 etcd:ip: "192.168.6.106"port: 2379dialTimeout: 3redis:ip: "192.168.6.107"port: 6379password: "root1028"2. 读取配置文件的信息 2.1 通过kv的方式 package mainimport ("fm…

【蓝桥杯日记】复盘篇二:分支结构

前言 本篇笔记主要进行复盘的内容是分支结构,通过学习分支结构从而更好巩固之前所学的内容。 目录 前言 目录 🍊1.数的性质 分析: 知识点: 🍅2.闰年判断 说明/提示 分析: 知识点: &am…

03:华为云管理|云主机管理|云项目实战

华为云管理|云主机管理|云项目实战 安全组配置部署跳板机配置yum源,安装软件包优化系统服务安装配置ansible管理主机 模版镜像配置配置yum源,安装软件包优化系统 网站云平台部署实战华为云的负载均衡 安全组配置 设置安全组 云…

基于JAVA+SpringBoot+Vue的前后端分离的美食分享推荐平台2

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 在当今社会&#xff0…

Python爬虫实践指南:利用cpr库爬取技巧

引言 在信息时代,数据是无价之宝。为了获取网络上的丰富数据,网络爬虫成为了不可或缺的工具。在Python这个强大的编程语言中,cpr库崭露头角,为网络爬虫提供了便捷而高效的解决方案。本文将深入探讨如何利用cpr库实现数据爬取的各…