简介

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP/TCP端口53。当前,对于每一级域名长度的限制是63个字符域名总长度则不能超过253个字符。

1、因特网的域名结构

由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。
域名只是逻辑概念,并不代表计算机所在的物理地点。分为三大类:
(1)国家顶级域名采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)
(2)通用顶级域名最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。

现如今全球一共投放13个根服务器 服务器主要用来管理互联网的主目录,全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。 这13台根服务器可以指挥Firefox或互联网 Explorer这样的Web浏览器和电子邮件程序控制互联网通信。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。

2 DNS域名解析的过程

客户端发出的查询都是递归查询,DNS服务器向外发出的查询一般都是迭代查询

查找方式:
递归 ------计算机只发送一次请求
迭代 -----多次
实际解析分为两段,一段递归一段迭代

1.在浏览器中输入www.qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2.如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3.本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性

4.如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性

5.如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理qq.com的DNS服务器地址给本地DNS服务器当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。

6.如果用的是转发模式,本地DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把请求转至上上级,以此循环。找到最后把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS

8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用

正向解析:FQDN -------->  IP
域名   ----->   IP
反向解析:IP  --------------> FQDN
IP    ----->  域名
(一个ip可以有多个域名)DNS 服务类型:
主DNS服务器:数据修改(接受用户请求返回数据)       master
辅助dns服务器:定期请求数据同步                  slave
缓存dns服务器: 只缓存dns数据                    hint
转发服务器:缓存服务器去掉缓存功能               forward

DNS解析答案

当DNS客户端向DNS服务器发出解析请求时,不管是否能够查询到想要的结果,都会返回一个解析答案。根据是否能够查询到想要的结果,可分为肯定答案和否定答案;根据解析答案是否由直接负责的DNS服务器返回,可分为权威答案和非权威答案。
根据是否能够查询到想要的结果:
①肯定答案:存在查询的键(key),并且存在与其查询键对应的值(value)。
②否定答案:不存在查询的键(key),因此,自然不存在与其查询键(value)对应的值。
根据解析答案是否由直接负责的DNS服务器返回:
①权威答案:由直接负责的DNS服务器返回的答案。
②非权威答案:不是由直接负责的DNS服务器返回的答案。这种情况下一般是由其他DNS服务器直接返回缓存的解析结果。

DNS协议的一种开源实现----bind 端口为:53
提供dns服务的套件叫bind但执行服务名称的是named
我们说DNS是一种协议,而对于每一种协议的实现都需要程序员开发出遵循这种协议规范的软件程序来实现,这里要介绍的BIND就是DNS协议的一种开源实现。据统计,使用bind作为DNS服务器软件的DNS服务器大约占所有DNS服务器的九成。BIND全称为Berkeley Internet Name Domain,因为当今互联网上的通信几乎都必须借助于DNS服务器来解析主机名,得到通信对方的IP地址,而在DNS服务器上最常用的软件就是bind,所以,bind这款软件几乎可以说是当今互联网上常用的软件了。目前bind由ISC.org(Internet Systems Consortium,互联网系统协会)负责开发与维护。
学习bind这款软件之前,务必掌握以下基本概念:
1、dns:协议 53 tcp udp 正向解析 ------- 域名–ip
2、 bind:dns协议的一种开源实现
3、 named:bind程序运行起来后的进程名
4、 bind相关的程序包
bind不仅提供了主包,还提供了各种bind的支包,它们用于实现不同的功能。而在众多bind支包中,最常用到的有:bind-utils, bind-libs, bind-chroot等。
bind相关的程序包如下:
1 bind:提供dns server程序,以及几个常用的测试工具。
2 bind-utils:bind客户端程序集,例如提供dig, nslookup等工具。
3 bind-libs:提供bind和bind-utils包中的程序共同用到的库文件。
4 bind-chroot:选装,让bind程序(named进程)运行于jail进程之下。



yum install bind -y //安装资源包
rpm -ql bind 查看
bind的相关配置文件
/etc/named.conf 主配置文件
/etc/rndc.conf: 相关配置文件
区域数据文件,需要手动创建
/var/named/zidingyi.zone
配置检查脚本工具
/usr/sbin/named-checkconf
区域配置检查工具
/usr/sbin/named-checkzone
全球十三个根服务器的相关信息
/var/named/named.ca 区域文件dns数据库
解析库文件:存放于/var/named/目录下,一般名字为ZONE_NAME.zone



要点:

(1)一台DNS服务器可同时为多个区域提供解析。dns
(2)DNS服务器必须要有根区域解析库文件:named.ca.
(3)DNS服务器还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库,这两个文件分别如下:
①正向解析库文件:/var/named/named.localhost
②反向解析库文件:/var/named/named.loopback

rndc的全称是Remote Name Domain Controller,它可以帮助用户更方便地管理DNS服务器,包括可以检查DNS服务器的状态与统计信息、重载配置文件及zone或单独重载某个区域而不需要重新启动整个DNS服务,还有查看已存在DNS缓存当中的资料等。
DNS在53端口上监听请求并提供响应的服务。出于性能的考虑,DNS查询请求用UDP协议交互并且每个请求的大小小于512字节,但是如果返回的请求大小大于512字节,交互双方会协商使用TCP协议。
rndc服务默认监听在tcp的953端口,且默认监听于127.0.0.1地址,因此默认仅允许本地使用。
rndc的常见用法:
rndc reload:在不重新启动DNS服务的情况下,重新加载配置文件及zone.
rndc reload zone:重新加载指定的zone.
rndc status:查看当前DNS服务器的状态。
rndc stats:将当前系统的DNS统计数据记录下来,默认会将数据存储为一个文件:/var/named/data/named_stats.txt.
rndc dumpdb:将当前DNS高速缓存中的数据记录下来,与stats类似,默认会将数据存储为一个文件:/var/named/data/cache_dump.db
rndc flush:清空当前DNS服务器上的所有缓存。
Usage: rndc [-b address] [-c config] [-s server] [-p port]
[-k key-file ] [-y key] [-V] command


资源记录名称:(数据库中的每一个条目)

SOA(起始授权记录)记录提供有关dns区域工作方式的信息 -----具体负责哪个区域的解析 (指定权威服务器)这代表着master/salve相关的认证,授权资料。不论有没有设定master/salve的架构都需要设定好。

NS 标记dns服务器 将域名最终映射到哪一台主机(标记本地 dns服务器)

A (ipv4地址记录) 资源记录将主机名映射到ipv4地址。

CNAME (规范名称)记录域别名

MX 邮件交换记录 —标记邮件服务主机名

PTR 指针记录 将IPV4 IPV6地址映射到主机名 (用于反向DNS)

AAAA (IPV6 地址记录) 资源记录(四A记录)将主机名映射到ipv6地址。

/var/named/named.ca (数据文件----资源记录文件)

TTL值

(当外部DNS服务器对你的DNS这个域进行查询时,这个记录会放置在对方的DNS服务器几秒钟)
五种定义的信息
serial number: 序列号 定义当前使用的数据序列号 sn遵循“年+月+日+编号” ·主和从的更新依据
refresh: 定义检查间隔时间 (上次和这次变化的时间)
retry: 重试时间 < 检查时间>
expire: 过期时间 (什么时候通过从服务器解析)
negative answer ttl: 否定答案的缓存时长 (没有指定生存期的数据可以保存在数据中的时间及TTL值)
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒


实现正向解析:

资源记录包含的元素:
owner-name          TTL              class             type                    date
主机名         资源记录生存时间         INTERNET            A               记录存储数据(主机ip)

首先安装bind包
[root@localhost ~]# yum install bind -y


准备工作
[root@localhost ~]# systemctl stop firewalld //关闭防火墙
[root@localhost ~]# setenforce 0 //关闭seLinux
[root@localhost ~]# systemctl restart named.service //开启服务

编辑配置文件

[root@localhost ~]# vim /etc/named.conf

重启服务
[root@localhost named]# systemctl restart named(如果报错请检查配置信息)
在客户端进行测试(必须保证两台主机在同一个网络模式)

[root@localhost ~]# nmcli device show//查看当前主机的ip参数

[root@localhost ~]# cat /etc/resolv.conf

更改dns(不是永久生效)
[root@localhost ~]# vim /etc/resolv.conf







实现反向解析:

更改配置文件

[root@localhost ~]# cat /etc/named.rfc1912.zones
复制下面的配置文件写好的配置信息我们做更改

把复制的东西粘贴到下面的配置文件,然后在做一些更改

复制[root@localhost named]# vim /var/named/named.loopback里面的配置文件

把刚刚粘贴的配置信息复制到这个文件下[root@localhost named]# vim /var/named/named.192.168.229

重启服务
[root@localhost named]# systemctl restart named
在客户端测试


实现从服务器:

当我们的主服务挂了之后我们就可以激活我们的从服务器工作
区域传送

将一个区域文件复制到多个服务器上的过程叫做区域传送。将主服务器上的信息复制到辅助服务器上来实现。
两种区文件复制方式:
完全区域传送:axfr,all transfer,全部区域文件复制,复制整个区域文件
增量区域传送:ixfr,incremental transfer,仅复制区域里变化的文件

实现完全区域传送:

安装bind的包
[root@localhost ~]# yum install bind -y

关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

编辑配置文件

因为从服务器实现的是同步所以在主服务器里面还要添加一条信息
[root@localhost named]# vim /etc/named.conf
[root@localhost named]# systemctl restart named//配置完重启一下服务

在从服务器上检测
[root@localhost ~]# cd /var/named/slaves/ //进入这个目录

[root@localhost slaves]# watch ls检测ls的执行结果每两秒1次

在开一个从服务器重启服务
[root@localhost slaves]# systemctl restart named

使用nslookup测试我们的从服务器

实现增量区域传送:

当你主服务器当中的资源发生了更新,主要是判断版本号

更改主服务器的配置文件
[root@localhost named]# vim /var/named/named.openlab.com


配置完成后重启服务
[root@localhost named]# systemctl restart named

在从服务器上测试
[root@localhost slaves]# tail -f /var/log/messages

查看日志信息
[root@localhost slaves]# tail -f /var/log/messages

实现转发服务器:

在开一台服务器来实现

安装bind服务

[root@localhost ~]# yum install bind -y

更改配置信息
[root@localhost ~]# vim /etc/named.conf

重启服务,关闭防火墙关闭selinux
[root@localhost ~]# systemctl restart named
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
测试

我们没有在转发服务器上做任何配置,是转发到主服务器上做的查询结果

Linux搭建DNS服务相关推荐

  1. 搭建DNS服务,正向解析域名

    搭建DNS服务,实现正向解析功能;根据域名查询ip地址,即将指定的域名解析成相对应的ip,域名的正向解析是DNS服务器最基本的功能. 配置文件: 主配置文件:作用于服务器本身/etc/named.co ...

  2. centos7搭建DNS服务(use)

    参考:centos7搭建DNS服务完整版 CentOS 7 配置DNS服务 Centos7 DNS 服务器配置步骤 --use DNS服务类型 主机记录 记录类型 记录值 ns1 A 192.168. ...

  3. 搭建DNS服务,正向解析和反向解析搭建DNS服务器

    搭建DNS服务器 DNS系统在网络中的作用:维护着一个地址数据库,其中记录了各种主机域名与IP地址的对于关系,以方便为客户程序提供正向或反向的地址查询服务,即正向解析与方向解析. 正向解析:将指定的域 ...

  4. linux 搭建dns

    简介:DNS服务器的作用就是就好比生活中的电话簿.114查号台一样,为各种网络程序找到对应目标主机的IP地址或对应的主机域名. DNS系统的作用: 正向解析:根据主机名称(域名)查找对应的IP地址(实 ...

  5. linux 单机安装yum,Linux搭建Nacos服务(单机版)

    Linux搭建Nacos服务(单机版) 1.下载Nacos安装包 2.安装JDK 3.解压文件 4.启动nacos 5.服务注册&发现和配置管理 6.停止服务 7.开启nacos持久化 8.重 ...

  6. linux bind 分离 DNS,Linux智能DNS服务搭建之Bind服务(一)

    一.准备工作 1.DNS学前准备 学习目标: 1.了解原理:dns实现原理及实际dns应用 2.动手搭建:掌握Bind服务的搭建过程及DNS测试方法 3.深入学习:dns负载均衡实现 4.掌握应用:只 ...

  7. Linux之DNS服务

    DNS服务 DNS: Domain Name Service,协议(C/S, 53/udp, 53/tcp)应用层协议 BIND:BekerleyInternatName Domain, ISC (w ...

  8. Linux下DNS服务管理

    DNS(Domain Name System)域名系统 1.DNS的定义 网络中为了区别各个主机,必须为每台主机分配一个惟一的地址,这个地址即称为"IP地址".但这些数字难以记忆, ...

  9. 使用unbound在RHEL7上搭建DNS服务

    1.概念: DNS (Domain Name Server)域名解析服务,使用TCP&UDP的53号端口(主从DNS之间用TCP,客户端查询使用UDP).它可以完成域名与IP地址的互换,可以通 ...

最新文章

  1. python networkx绘制图
  2. PCL:基于PCL绘制包围盒代码实现(2)
  3. Windows中SQLite的编译及编程
  4. jfinal js 拦截_jfinal 使用拦截器处理繁琐的前置条件判定
  5. hs300 quant
  6. 静止的单摄像机无法得到像点的三维坐标详解
  7. bootstrap 树形表格渲染慢_layUI之树状表格异步加载组件treetableAsync.js(基于treetable.js)...
  8. mysql安装,数据库连接
  9. 数据库分表处理设计思想和实现
  10. matlab 图线动画,Matlab绘制简单动画
  11. FireMonkey动画进度条实现
  12. 尼康单反AF自动对焦模式与AF区域模式详解
  13. 听说crmeb多商户增加了种草功能?
  14. Power bi_商品销售案例分析
  15. 【redis源码学习】持久化机制(2):AOF
  16. 5-22近期工作总结、下一步工作安排及技术知识
  17. YOLOX: Exceeding YOLO Series in 2021 论文阅读笔记
  18. 你真的理解了MVC, MVP, MVVM吗?
  19. 1083 Windy数(数位dp)
  20. python3 QT5 端口转发工具 增加最小化隐藏 托盘显示 点击托盘恢复及托盘菜单

热门文章

  1. PPT的三种抠图方法-演示
  2. PTA 07-图6 旅游规划 (25 分)
  3. printk在应用层的设置方式及读取内核打印信息的方法
  4. 干货:明确数据分析目标的 3 个步骤,很多人还搞不清楚
  5. python字典序列化是什么意思_python序列化中的字符串,列表,字典,类的序列化解释...
  6. vue+node.js手把手教你搭建一个直播平台(二)
  7. 如何用C++实现一个简易数据库(九)
  8. PHP代码审计DVWA[JavaScript]
  9. 茶旅云团建之旅,就选安化云台山风景区
  10. 阿里 P9 开源分享内部 Java 核心开发手册(2022 版)覆盖 P5 到 P8