Linux中的DNS服务

目录

一、DNS简介

1.1DNS名词介绍

域名管理系统DNS(Domain Name System)是域名解析服务器的意思,应用层协议,是互联网的一项服务。它在互联网的作用是:把域名转换成网络可以识别的ip地址,在通过IP地址访问主机。 种由文字组成的名称,显而易见要更容易记忆。

实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区 域(包含 IP 地址到域名的解析记录)。

1.2DNS系统的作用

  • 正向解析:根据域名查找对应的IP地址
  • 反向解析:根据IP地址查找对应的域名
  • DNS系统的分布式数据结构:
    Linux中的DNS服务

1.3DNS服务器类型

  • 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。
  • 主域名服务器:管理和维护所负责解析的域内解析库的服务器
  • 从域名服务器 从主服务器或从服务器"复制"(区域传输)解析库副本 序列号:解析库版本号,主服务器解析库变化时,其序列递增
    刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
    重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
    过期时长:从服务器联系不到主服务器时,多久后停止服务
    通知机制:主服务器解析库发生变化时,会主动通知从服务器

IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1

IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从

1.4DNS查询类型及原理

  • 主要的一级DNS服务器:负责一级域名的解析
一级域名
.com 工商企业
.cn 中国国家域名
.org 团体组织
  • 二级DNS服务器:专门负责二级域名的解析

二级域名:
.net.cn
.com.cn
.edu.cn

  • 子域名DND服务器:专门负责子域名的解析也称为三级域名

三级域名:
ina.com.cn
.pku.edu.cn

  • 主机站点

主机名:
tts9
tts6
www
mail

1.5 查询方式

  • 递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,
    ​ 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得 到最终的肯定或否定的结
    ​ 果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
  • 迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)

1.6本地域名解析文件

Linux: /etc/hosts
windows:c/windows/system32/drivers/etc/hosts
[root@localhost ~]#vim /etc/nsswitch.conf
#修改dns的优先级
hosts:      files dns myhostname
#修改 files和 dns的先后  优先级就不同。如果files在前面,那么file优先级就比较高
[root@localhost ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

2.此时DNS服务器生效

[root@localhost ~]# vim /etc/hosts
[root@localhost ~]# ping www.baidu.com
PING www.wshifen.com (103.235.46.39) 56(84) bytes of data.
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=1 ttl=128 time=207 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=2 ttl=128 time=209 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=3 ttl=128 time=208 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=4 ttl=128 time=209 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=5 ttl=128 time=211 ms
^C
--- www.wshifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 207.936/209.404/211.239/1.264 ms

1.7DNS正向解析查询原理过程

①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理以上过程成为递归查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的*域服务器让他去找*域服务器
⑥求助*域服务器,*域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端

windows系统查询dns缓存命令:ipconfig /displaydns windows
系统清理dns缓存命令:ipconfig /flushdns

二、正向解析

2.1资源记录

2.1.1SOA记录

name: 当前区域的名字,例如"kgc.com."

value: 有多部分组成

注意:

  1. 当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字
  2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换 例如:admin.kgc.com
  3. 主从服务区域传输相关定义以及否定的答案的统一的TTL

范例:

$TTL 1D @ IN SOA master.kgc.com. admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum

2.1.2NS记录

name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如: ns.kgc.org.

注意:

  1. 相邻的两个资源记录的name相同时,后续的可省略
  2. 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
  3. 一个区域可以有多个NS记录
范例:
master IN NS kgc.com.

master IN NS kgc.com.

2.1.3 MX记录

name: 当前区域的名字

value: 当前区域的某邮件服务器(smtp服务器)的主机名

注意:

  1. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的

    优先级;数字越小优先级越高

  2. 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

范例:

<span style="background-color:#f8f8f8">范例:
mail  IN MX 10 mx1.wlw.org.
      IN MX 20 mx2.wlw.org.
mx1 A   192.168.59.10
mx2 A   192.168.59.10</span>

2.1.3记录

name: 某主机的域名解析,例如:www.wlw.com

value:主机名对应主机的IP地址

避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址


范例:
www.wlw.com. IN   A 1.1.1.1
www.wlw.com. IN   A 2.2.2.2
www.wlw.com. IN   A 3.3.3.3
www.wlw.com. IN   A 4.4.4.4
* IN A 5.5.5.5
#代表泛域名
@            IN   A 6.6.6.6
#代表不需要名字

2.1.4PTR记录

name: IP,有特定格式,把IP地址反过来写,192.168.59.100,要写作100.59.168.192;而有特定后缀:in-addr.arpa.,所以完整写法为:100.59.168.192.in-addr.arpa. value: FQDN

2.1.5CNAME别名记录

name: 别名的FQDN value: 真正名字的FQDN
ftp.wlw.com. IN CNAME www.wlw.com

2.1.6小贴士

1.TTL可从全局继承

2.使用 “@” 符号可用于引用当前区域的域名

3.同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应

4.同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

2.2正向解析服务器配置方法

**1.安装主软件和配置包管理软件**
 
[root@localhost ~]# yum  install bind bind-utils -y
 
**2.关闭防火墙**
 
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
 
**3.开启服务并查看是否查看成功**
 
[root@localhost ~]#systemctl start named
 
[root@localhost ~]#netstat -ntap |grep named
 
**4.修改网卡的DNS服务地址并重启网卡**
 
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 
DNS1=127.0.0.1 
 
[root@localhost ~]#systemctl restart network
 
[root@localhost ~]# cat /etc/resolv.conf
 
**5.ping测试,看是否可以解析出百度的ip**
 
[root@localhost ~]# ping www.baidu.com
 
**6.修改配置文件/etc/named.conf**
 
[root@localhost ~]#rpm -qc bind 查询安装服务的配置文件
 
[root@localhost ~]#vim /etc/named.conf  进入修改配置文件
 
<font color='cornflowerblue'>#可以修改配置,注释,或者删除这两行</font>
listen-on port 53 { any; };
allow-query     { any; };
 
 
 
**7.重新加载DNS服务**
 
[root@localhost ~]#rndc reload(也可以实验systemctl restart named)
 
server reload successful
 
**8.ping测试,看是否可以解析出百度的ip**
 
[root@localhost ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 180.101.49.11
www.a.shifen.com has address 180.101.49.12
 
**9.编写域名,在配置文件/etc/named.rfc1912.zones下 **
 
[root@localhost named]#vim /etc/named.rfc1912.zones 
zone "wlw.com" {
type master;
file "wlw.com.zone";
};
 
**10.切换至named文件夹,拷贝named.localhost变成根域名文件**
 
[root@localhost named]# cd /var/named/
 
[root@localhost named]# cp -p named.localhost ./wlw.come.zone
 
**11.修改成根域名文件**
 
[root@localhost named]# vim wlw.come.zone
 
$TTL 1D
@       IN SOA  master.wlw.com. admin.wlw.com. (
                                     0       ; serial
                                     1D      ; refresh
                                     1H      ; retry
                                     1W      ; expire
                                     3H )    ; minimum
     NS      master.wlw.com.
master  IN            A          192.168.59.100
www     IN            A          192.168.91.20
                   MX 10      mail1.wlw.com.
                   MX 20      mail2.wlw.com.
mail1    IN            A          192.168.59.28
mail2    IN            A          192.168.59.30
ftp         IN            CNAME      www
 
*IN            A          192.168.59.10     泛指域名解析: 
 
**12.重新加载DNS服务并测试**
 
[root@localhost named]# rndc reload 重新加载DNS服务 
 
测试:
 
[root@localhost named]# host mail1.wlw.com 测试
 
 

Linux中的DNS服务
Linux中的DNS服务
Linux中的DNS服务
Linux中的DNS服务
Linux中的DNS服务
Linux中的DNS服务
Linux中的DNS服务
Linux中的DNS服务
Linux中的DNS服务
Linux中的DNS服务

2.3反向解析服务器配置方法

#先修改区域配置文件
 
[root@localhost named]#vim /etc/named.rfc1912.zones 
 
zone "59.168.192.in-addr.arpa" IN {
     type master;
     file "yxp.com.zone";
     allow-update { none; };
};
[root@localhost named]#cp -p kgc.com.zone ky15.com.zone
 
#复制正向解析文件
 
[root@localhost named]# cp -p wlw.com.zone yxp.com.zone
 
#修改配置文件
 
[root@localhost named]# vim yxp.com.zone 
 
$TTL 1D
@       IN SOA   master.yxp.com admin.yxp.com (
                                     0       ; serial
                                     1D      ; refresh
                                     1H      ; retry
                                     1W      ; expire
                                     3H )    ; minimum
     NS      master.yxp.com.
master  IN       A    192.168.59.100
100 IN PTR      www.yxp.com.
88  IN PTR      ftp.yxp.com.
 
测试:
 
[root@localhost named]# host 192.168.59.100

Linux中的DNS服务
Linux中的DNS服务
Linux中的DNS服务

2.4主从复制配置示例

#1.首先配置2.2的正向解析,这是作为主服务器
 
###配置从服务器
#2.配置从服务器,首先准备一台服务器,关闭防火墙并安装软件
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install bind bind-utils.x86_64 -y
 
#3./etc/named.conf 文件里两段注释掉
[root@localhost etc]# vim /etc/named.conf 
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
 
#4./etc/named.rfc1912.zones添加从服务器配置文件
vim /etc/named.rfc1912.zones
zone "wlw.com" IN {
        type slave;
        #类型从
        file "slaves/wlw.com.zone";
        #文件地址在/var/named/slaves/ 下
        masters { 192.168.59.102; };
        #申明主服务器的地址
};
 
5.验证:在从服务器上
[root@localhost named]# dig www.wlw.com @192.168.59.117
192.168.59.117是从服务器的地址
 
6.主服务器修改的内容
[root@localhost named]# vim /var/named/wlw.com.zone 
www     IN            A          192.168.59.11
此时从服务器的刷新还是原来的 192.168.59.10
 
7.在主服务器中配置从服务器立刻可以拉取到修改后的地址
[root@localhost named]# vim /var/named/wlw.com.zone
 1       ; serial
slave   IN            A          192.168.59.117

1.按照2.2的步骤将正向解析做好。wlw.come.zone中配置如下:
Linux中的DNS服务

Linux中的DNS服务
2.准备一台从服务器。关闭防火墙并安装软件,安装软件
Linux中的DNS服务
3./etc/named.conf 文件里两段注释掉
Linux中的DNS服务
4./etc/named.rfc1912.zones添加从服务器配置文件
Linux中的DNS服务
5.验证:在从服务器上
Linux中的DNS服务
在主服务器上cat wlw.come.zone ,此时都解析出来了
Linux中的DNS服务
6.
Linux中的DNS服务
Linux中的DNS服务

Linux中的DNS服务
Linux中的DNS服务

上一篇:Linux分离解析


下一篇:Linux之DNS域名解析服务