域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。
dns协议——53端口——tcp、udp协议——正向解析
bind :dns协议的一种开源实现
named:bind程序运行起来后的进程名

因特网的域名结构

由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。
域名只是逻辑概念,并不代表计算机所在的物理地点。分为三大类:

  1. 国家顶级域名:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)
  2. 通用顶级域名:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
  3. 基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。

发展

Hosts文件 ---------------需要不停地添加域名
1.周期性任务 ---------------在指定时间自动的去写(自动化)
2.server ---------------东西太多(性能)
3.分布式数据库 -------------全球各地分放

查找方式

  • 递归查询:
    也就是DNS客户端送出查询要求后,如果DNS服务器内没有需要的数据,则DNS服务器会代替客户端向其他的DNS服务顺查询。

  • 迭代查询:
    客户机向dns服务器发送请求,如果该服务器本地没有储存查询的DNS信息,那么它会告诉客户机另一台DNS服务器的地址,客户机在向这台DNS服务器查询DNS信息,依次循环直到返回结果。所以,客户机可能接触多个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服务器再返回给客户机。

正向解析

在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。

反向解析

在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,

DNS 服务类型:

  • 主DNS服务器:数据修改(接受用户请求返回数据) —— master
  • 辅助dns服务器: 定期请求数据同步 —— slave
  • 缓存dns服务器: 只缓存dns数据 —— hint
  • 转发服务器:缓存服务器去掉缓存功能 —— forward

bind相关的程序包

  • bind:提供dns server程序,以及几个常用的测试工具。
  • bind-utils:bind客户端程序集,例如提供dig, nslookup等工具。
  • bind-libs:提供bind和bind-utils包中的程序共同用到的库文件。
  • bind-chroot:选装,让bind程序(named进程)运行于jail进程之下。

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 (数据文件----资源记录文件)

配置文件详解:

dns的主配置文件,作为dns的设定档,将我自己的设定档案列出来然后逐部分进行解释。
注意格式:"//" “/* */” ";"结尾
该文件属主root,named用户组
###################################
#全局选项
options {
#定义监听端口,如果所有地址都监听,则只写端口
listen-on port 53 { 127.0.0.1; };
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; #允许递归
#allow-recursion { 192.168.0.0/16; } ;指定可以递归的范围
dnssec功能会对解析结果进行验证,是否为权威解答,不是就会报错,虽然不影响使用,但是看着不爽
logging { //指定日志记录分类和他们的目标位置
};
zone{ 定义区域,一个zone定义一个区域
type hint;
File named.ca
};

查看named.localhost文件:
[root@www ~]# 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 //关键就是这一条记录。

查看named.loopback文件:
[root@www ~]# cat /var/named/named.loopback
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
PTR localhost. //关键就是这一条记录。

配置案例

1.配置主从本地dns服务器,实现www.openlab.com域的正反向解析。
首先进行装包

[root@redhat ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@redhat ~]# yum install bind -y

本地dns服务器
配置配置文件

[root@redhat ~]# vim /etc/named.conf//正向解析
options {listen-on port 53 { 192.168.159.128; };directory       "/var/named";
};
zone "openlab.com" IN {type master;file "named.openlab.com";
};

创建资源文件

[root@redhat ~]# vim /var/named/named.openlab.com
//正向解析
@       IN     SOA     @    admin.admin.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      dns.openlab.com.
dns     IN      A       192.168.159.128www     IN      A       192.168.159.128

检测配置文件语法,如果出错会有提示

[root@redhat ~]# named-checkconf

重启服务、关闭防火墙、关闭selinux

[root@redhat ~]# systemctl restart named
[root@redhat ~]# systemctl stop firewalld
[root@redhat ~]# setenforce 0

客户端利用nslookup工具查看是否解析成功

[root@redhat ~]# nslookup
> server 192.168.159.128
Default server: 192.168.159.128
Address: 192.168.159.128#53
> www.openlab.com
Server:     192.168.159.128
Address:    192.168.159.128#53Name: www.openlab.com
Address: 192.168.159.128

反向解析
修改配置文件

[root@redhat ~]# vim /etc/named.confoptions {listen-on port 53 { 192.168.159.128; };directory       "/var/named";
};
//正向解析
zone "openlab.com" IN {type master; file "named.openlab.com";
};
//反向解析
zone "159.168.192.in-addr.arpa" IN {type master;file "named.fanxiang.com";
};

创建资源文件

[root@redhat ~]# vim /var/named/named.fanxiang.com@       IN     SOA      @         admin.openlab.com. (01D1H1W3H )    IN      NS      ns.openlab.com.144     IN     PTR      ns.openlab.com.
144     IN     PTR      www.openlab.com.

客户端测试

[root@bogon ~]# nslookup
> server 192.168.159.128
Default server: 192.168.159.128
Address: 192.168.159.128#53
> 192.168.159.128
Server:     192.168.159.128
Address:    192.168.159.128#53128.159.168.192.in-addr.arpa  name = www.openlab.com.

配置从dns服务器

从服务端下载安装

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

在服务器端的主配置文件定义完全区域传送 (主服务)

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

添加下面这个

重启主服务得服务

[root@redhat ~]# systemctl restart named

从服务端配置主配置文件

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


重启从服务、关闭防火墙、关闭selinux

[root@bogon ~]# systemctl restart named
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# setenforce 0

查看同步的主服务的区域数据文件

[root@bogon ~]# ll /var/named/slaves
total 8
-rw-r--r--. 1 named named 270 Aug 29 00:02 named.fanxiang.com
-rw-r--r--. 1 named named 247 Aug 29 00:02 named.openlab.com

配置增量区域传送
主服务器修改资源配置文件
新加一条


重启主从服务器

[root@redhat ~]# systemctl restart named[root@bogon ~]# systemctl restart named

查看结果
通过tail -f /var/log/message来查看从服务器的日志,注意传送过程

⒉配置转发服务器,通过上面所配置的主服务器可以查询解析结果。

新开一台虚拟机作为转发
首先装包

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

然后配置主配置文件

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

重启服务、关闭防火墙、关闭selinux

[root@bogon ~]# systemctl restart named
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# setenforce 0

测试

3.分离解析

Linux之DNS配置及案例相关推荐

  1. Linux的DNS配置2-主从服务器

    1.实验背景 之前写了Linux的DNS配置1-DNS入门,其中只用了一台DNS服务器,但一般在大型网络中,都要通过配置辅助DNS服务器可以提高DNS服务的可靠性,本次实验即配置DNS主从服务器 2. ...

  2. Linux bind DNS配置

    为什么80%的码农都做不了架构师?>>>    1,DNS服务 yum -y bind* cach BIND 提供DNS服务 libnss_file.so libnss_dns.so ...

  3. linux下DNS配置详解

    linux下DNS配置详解 DNS 是域名系统 (Domain Name Server) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务.在Internet上域名与IP地址之间是一一对应的 ...

  4. linux bind命令,Linux初学者DNS配置指南(一)安装Bind

    手把手教你如何配置Linux下的DNS(一)安装Bind 最近配置linux下DNS时,遇到些问题,查了网上的很多资料,内容都比较全面,但是没有一个能让linux初学者,按照所写的步骤一步一步执行下去 ...

  5. linux系统dns配置

    linux系统dns配置 DNS(Domain Name System,域名系统): 因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取 ...

  6. linux下dns配置方法与常用dns

    linux下dns配置方法: 1.修改网卡配置文件 echo 'DNS1="114.114.114.114" ' >> /etc/sysconfig/network-s ...

  7. linux配置dns 视频教程,linux下DNS配置视频

    yaoxinrisk 于 2013-12-02 20:07:11发表: 现在都打不开了 657129880@qq.co 于 2013-04-21 18:01:29发表: 谢谢分享!!! qwertpa ...

  8. linux下 DNS配置过程『罗斌原创』

    DNS配置过程 任务1:配置主DNS 1.检查是否安装了bind软件包,rpm -qa | grep bind 如果没有安装则挂载第四张光盘, mount -t iso9660 /dev/cdrom ...

  9. linux服务器dns配置丢失处理

    最近公司有服务器发现配置了dns后,检查/etc/resolv.conf中也已经修改了,但重启服务器后或者重启网络服务(services networkrestart)后,dns配置丢失. 通过检查发 ...

  10. linux 内核配置 dns,Linux的dns配置 - Linux操作系统基础进阶练习题_Linux教程_Linux公社-Linux系统门户网站...

    1.1)查询是否安装DNS软体 1.2)安装bind_chroot 1.3)编辑/etc/sysconfig/named,查看chroot的路径 1.4)注释掉/etc/resolv.conf中其它D ...

最新文章

  1. PYTHON编程导论群问题汇总(三)
  2. ef entity转json引起的Self referencing loop
  3. 微信小程序中用setData修改一个对象的属性值
  4. Category 特性在 iOS 组件化中的应用与管控
  5. java gson 工具类_GSON 实体 转换工具类
  6. 数学建模学习笔记(三)——插值算法
  7. 使用preparedStatement执行sql语句 20210411094249744
  8. Powershell 磁盘使用空间监控,并使用dbmail发送邮件
  9. 查看maven,JDK版本号
  10. 计算机开机提示dll,电脑开机提示dll文件出错怎么办
  11. Win7系统怎么开启远程桌面?Win7远程桌面怎么用(转)
  12. 如何阻止手机虚拟键盘弹起
  13. snap install cloudcompare碰到问题
  14. 蓝桥杯JAVA-32.二维数组(矩阵)实现旋转模板(JAVA实现)
  15. 如何查看office是否是永久激活
  16. 使用fs传真模块mod_fax的一点点经验
  17. java-集合框架库-ArrayList
  18. STM32F4-DMA及相关配置
  19. SpringBoot的个人博客管理系统(毕业论文范文)
  20. window系统下安装VS(Microsoft Visual Studio),及Visual Studio使用教程

热门文章

  1. 揭秘盒马鲜生,如何打破收益增长天花板!
  2. Python网络框架——Web服务器
  3. Linux下通过WebShell反弹Shell的技巧
  4. 常微分方程:初值问题与边值问题
  5. Android应用真机调试
  6. React 单文件上传和多文件上传的封装
  7. 力扣-1128 等价多米诺骨牌对的数量
  8. Vuex mutations的详细解读
  9. ubuntu 18.04忘记登录密码的破解方法
  10. Android Studio 导入项目时容易出现的问题汇总