1  什么是DNS? 

  DNS(Domain Name Server,域名服务器)即域名解析服务,是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。

2 DNS工作方式

  递归查询  #若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。
  迭代查询 #根据客户机向非权威域名服务器提交域名解析查询请求后,逐级进行查询直到查到结果或者没有得到结果,都将最终结果传送给客户机的行为。
  说明:假设你要寻找一家你从未去过的公司,你会有2种解决方案,1是找一个人替你问路,那可能是你的助手,2是自己问路,每走过一个路口,就问一个人,这就好比递归查询和迭代查询,递归查询在这里代表你的第1种解决方案,而迭代则是第2种解决方案。

3 DNS应用层协议及端口

  使用的协议有两种,TCP和UDP协议,端口是53,TCP协议负责主从服务器同步记录,UDP协议除了负责主从同步记录并且负责查询工作。

4  DNS服务器类型

  主DNS服务器:管理和维护所负责解析的域内解析库的服务器

  从DNS服务器:从主服务器或从服务器复制解析库副本

  序列号:解析库版本号,主服务器解析库变化时,其序列递增刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔                        重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔过期时长:从服务器联系不到主服务器时,多久后                         停止服务

  “通知”机制:主服务器解析库发生变化时,会主动通知从服务器

5 DNS解析流程

   一次完整的查询请求经过的流程:Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->         二级域名DNS…
  centos6.9版本里,提供DNS域名解析服务的默认组件是bind,可以用 yum info bind 查询当前安装包库里的bind版本信息,其服务名是named,主要文件如下:
 
 在/etc/named.conf文件里可以修改DNS相关参数
 
named-chkconf命令可以检测named.conf文件的语法错误。
/etc/resolv.conf           #文件里存的是本机的DNS服务器地址
 dig www.qq.com @127.0.0.1     #查询www.qq.com对应的IP地址,@后边跟地址意思是向那个地址的DNS服务器查询
 
区域数据库的增加及修改,此文件位置在/etc/named.rfc1912.zones,在相对应的格式下添加自己的域名,比如我们这里要添加一个chykj.com的主域名解析记录

 zone "chykj.com" IN {         #此处填上你的域名信息
type master;   #因为是主解析服务器,所以这里应该是master类型                                                                                
file "chykj.com.zone" #此处填你此域名数据库文件名字,相对应的在/var/named下边也要创建你的同名文件,格式参考/var/named/named.localhost文件
allow-update { none; };   #是否允许从解析服务器同步更新
};
 cp -p /var/named/named.localhost /var/named/chykj.com.zone  #将named.localhost作为模板,复制一份名字为chykj.com.zone,文件属性要相同所以这里-p

这两个文件改完了,可以用named-checkconf来检测有没语法错误。

解析库文件语法检查:
named-checkzone "chykj.com" /var/named/chykj.com.zone
rndc status|reload ;service named reload      

这两步都做完了,切记启动named服务,不然会报错,如果启动服务还报以下错误。

运行 rndc reload 提示 rndc: neither /etc/rndc.conf nor /etc/rndc.key was found

解决方法:  1  rndc-confgen -r /dev/urandom -a    #手动创建key

       2 chown root:named /etc/rndc.key     #修改rndc.key 文件属主

       3 chmod 644 /etc/rndc.key        # 修改rndc.key 读权限  

       4 /etc/init.d/named restart         # 重启named 服务

建立主从域名服务器:

1 yum install bind                  #安装bind服务
systemctl start named                #启动服务
systemctl enable named               #开启开机自启动

2 vim /etc/named.conf                #修改主配置文件
listen-on port 53 { localhost; };
allow-query { any; };                 #允许所有人查询

3 vim /etc/named.rfc1912.zones            #修改rfc配置文件

zone "chykj.com" IN {            
type master;                     #设置其为主域名服务器
file "chykj.com.zone";                 
};

4 vim /var/named/chykj.com.zone            #修改区域数据库文件
$TTL 1D                       #本段域,刷新周期为1天
@ 2D IN SOA dns1 admin.chykj.com. (          #SOA记录,声明dn1为主域服务器,邮件服务器为admin.chykj.com. (如果要添加域名后缀,需在后缀加.)
2017 ; serial                              #标签为2017
86400 ; refresh                    #主从服务器更新周期为86400秒即1D
1H ; retry                       #如果从主联系失败后,每隔1小时重新尝试连接更新
1M ; expire                       #
3H ) ; minimum
NS dns1
dns1 2D A 192.168.25.107
websrv A 192.168.25.106
www CNAME websrv

chgrp named /var/named/chykj.com.zone         #修改文件属组为named组

5
named-checkconf
named-checkzone chykj.com /var/named/chykj.com.zone   #此两项为检查配置文件语法正确与否
systemctl restart named                 #重启服务生效

测试命令dig

dig [-t type] name [@SERVER] [query options]
dig只用于测试dns系统,不会查询hosts文件进行解析
 查询选项:
+[no]trace:跟踪解析过程 : dig +trace chykj.com
+[no]recurse:进行递归解析
测试反向解析:
dig -x IP = dig –t ptr reverseip.in-addr.arpa
模拟区域传送:
dig -t axfr ZONE_NAME @SERVER
dig -t axfr chykj.com @10.10.10.11
dig –t axfr 100.1.10.in-addr.arpa @172.16.1.1
dig -t NS . @114.114.114.114
dig -t NS . @a.root-servers.net

========================================================================

域名反向解析

1 修改/etc/named.rfc1912.zones         #修改区域数据库

 zone  "40.18.172.in-addr.arpa" IN {      #建立一个172.18.40.0段的反向解析
type master;             
file "172.18.40.zone";
};

2  在/var/named目录下建立一个172.18.40.zone配置文件

 $TTL  1D
@ IN SOA dns1.chykj.com. admin.chykj.com. ( 10m 2m 1h 3h )
NS dns1.
PTR dns1.chykj.com.
PTR dns3.chykj.com.
PTR chykj.com.

=================================================

创建转发服务器

(1) 全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器
Options {
forward first|only;
forwarders { ip;};
};

#first选项:如果A向B提交一个域名解析请求,B会去网络找地址,如果找不到地址,则A机器会亲自去互联网或者根DNS找地址。

#only选项:如果A向B提交一个域名解析请求,B如果找不到地址,则此次解析任务就失败,A也不会去互联网继续找。

(2) 特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高
zone "ZONE_NAME" IN {
type forward;
forward first|only;
forwarders { ip;};
};

以上操作均是在/etc/named.rfc1912.zones修改

--------------------------------------------------------------

根服务器建立是在/var/named/named.ca 修改

然后将此文件都传到各自角色的机器里即可。

centos的DNS服务工作流程及搭建的更多相关文章

  1. KaliLinux常用服务配置教程DHCP服务工作流程

    KaliLinux常用服务配置教程DHCP服务工作流程 DHCP服务工作流程如图1.1所示. 具体的工作流程如下所示: (1)DHCP客户端以广播的方式发出DHCP Discover报文. (2)所有 ...

  2. 关于dns服务工作的原理,和配置的细节理解。

    dns服务器相关 1,dns原理,也就是迭代,和递归查询.将域名解析为ip的过程. 一次完整的查询请求经过的流程: Client -->hosts文件 -->DNS Service Loc ...

  3. struts2系列(一):struts2入门(struts2的产生、struts2的工作流程、搭建struts2开发环境)

    一. struts2的产生 struts1的缺点:                         1. ActionForm过多,而且这个ActionForm在很大程度上又和VO(POJO)重复  ...

  4. centos 构建dns服务 dnsmasq

    1 安装yum -y install dnsmasq开放udp tcp 53 端口2,修改配置文件 dnsmasq.conf# grep -Ev "^$|^[#;]" /etc/d ...

  5. 简单web服务工作流程梳理

       一.用户访问web基本流转过程梳理 二.web框架粗略概括

  6. centos搭建dns服务

    原文:(https://www.myjinji.top/articles/2020/04/02/1585800289945.html)[https://www.myjinji.top/articles ...

  7. 云原生学习筑基 ~ 组网必备知识点 ~ DNS服务

    @ 目录 一.为啥写这篇文章? 二.DNS的作用 三.域 四.DNS工作原理 五.搭建DNS服务器 5.1.Bind 5.2.系统环境准备 5.3.安装 5.4.查看bind的相关文件 5.5.查看b ...

  8. k8s中的dns服务发现

    一.dns服务 1.解决的问题 为了通过服务的名字在集群内进行服务相互访问,需要创建一个dns服务 2.k8s中使用的虚拟dns服务是skydns 二.搭建 1.创建并应用skydns-rc.yaml ...

  9. centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课

    centos  DNS服务搭建  DNS原理  使用bind搭建DNS服务器 配置DNS转发 配置主从  安装dig工具  DHCP  dhclient  各种域名解析记录  mydns DNS动态更 ...

随机推荐

  1. HDU-6668-Polynomial(数学)

    链接: https://vjudge.net/problem/HDU-6668 题意: 度度熊最近学习了多项式和极限的概念. 现在他有两个多项式 f(x) 和 g(x),他想知道当 x 趋近无限大的时 ...

  2. chrome scrollTop 获取失败问题及解决方案

    https://blog.csdn.net/h357650113/article/details/78384621

  3. 2019JAVA最新课程-React从入门到实战(新)

    1.准备工作 可以在yunp.top网站看webpack,node/npm,cnpm的相关使用视频教程 react有两种使用方式,一是在现有网站中添加:二是创建一个全新的 官网创建全新一个react ...

  4. C/C++运算符优先级关系

    C/C++优先级 从高到低 1~14梯队 1.  ()  []  .  -> 2.   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)   ...

  5. 如何使用dump文件进行调试

    转载[文尾出处链接] 1 简介第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个 ...

  6. DOM操作元素

    DOM 操作元素 JavaScript的DOM操作可以改变网页内容.结构和样式.我们可以利用DOM操作元素来改变元素里面的内容.属性等. DOM操作元素: 一.操作元素:(一)innerText .( ...

  7. html b标签 语法

    html b标签 语法 标签b是什么意思? b的意思是bold,b标签主要用于html中规定粗体文本,该标签内的字符将被设为粗体.B标签所传达的意思只是加粗,没有任何其它的作用. 作用:规定粗体文本. ...

  8. c++ STL map 用法

    map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时 ...

  9. ubuntu下,VSCode采用cmake编译C++工程

    首先在VSCode中下载CMake和CMake Tools两个插件. 选中CMake Tools,可以看到在VSCode中如何使用cmake编译C++工程的教程. 官网教程 最重要且最实用,看这个网址 ...

  10. PCL智能指针疑云 <三> 智能指针作为函数的传值参数和传引用参数

    一 函数的参数传递可以简单分类为“传值”和“传引用”. 声明函数时,形参带引用“&”,则函数调用时,是把实参所在的内存直接传给函数所开辟的栈内存.在函数内对形参的修改相当于对实参也进行修改. ...