多区域 DNS 服务,子域授权,缓存 DNS及Split 分离解析的原理和实现

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: DNS 服务器的功能: 正向解析:根据注册的域名查找其对应的 IP 地址 反向解析:根据 IP 地址查找对应的注册域名(不常用) DNS(域名解析)服务器:解析域名--->将域名解析为 IP 地址 例如:客户端访问 Web 网站:www.

DNS 服务器的功能:
正向解析:根据注册的域名查找其对应的 IP 地址
反向解析:根据 IP 地址查找对应的注册域名(不常用)
DNS(域名解析)服务器:解析域名--->将域名解析为 IP 地址
例如:客户端访问 Web 网站:www.qq.com ----> DNS ----> 腾讯的 Web 服务器 Full Qualified Domain Name(FQDN),完全合格主机名,以点结尾
站点名.域名后缀
站点名...二级域.一级域
域名分级:
根域 . 一级域 .com .cn .us .tw .kr .hk
二级域 .com.cn .net.cn .org.cn .edu.cn
三级域 .yid.com.cn .haha.com.cn .xixi.com.cn
常见的顶级(一级域名)
国家/地区域: .cn、.us、.kr、.hk、.tw ...
组织域: .com、.net、.edu、.org、.gov、.mil ...
BIND 域名服务
BIND(Berkeley Internet Name Daemon:伯克利大学 Internet 域名服务)

官方站点:https://www.isc.org/
安装包名称:bind:域名服务包 ;bind-chroot:提供虚拟根支持,笼环境
系统服务:named
默认端口:TCP/UDP 53
运行时的虚拟根环境:/var/named/chroot/         #运行时,所有的操作都在虚拟

根下

主配置文件: /etc/named.conf             #设置本机负责解析的域名是什么
地址库文件: /var/named/                 #主机名与 ip 地址的对应关系

搭建基本的 DNS 服务
服务端: 1.安装软件包 、

    [root@svr7 ~]# yum -y install bind bind-chroot 

2.修改配置文件

[root@svr7 ~]# vim /etc/named.conf
options {
    //listen-on port 53 { 127.0.0.1; };         #默认监听 127.0.0.1 的 53 端口,该行删除或注释
    directory "/var/named";         #指定地址库文件存放路径
    //allow-query { localhost; };   #允许访问的主机,默认为本机,该行删除或注释 
    };
zone "yid.cn" IN {    #指定本机负责解析的域名 
    type master;    #指定本机为权威主 DNS 服务器 
    file "yid.cn.zone";     #指定地址库文件为 yid.cn.zone
};
[root@svr7 ~]# named-checkconf #检查配置是否正确 

3.建立地址库文件 yid.cn.zone

DNS 资源记录:

SOA:起始授权 
NS:名称服务器 A:将名称解析为 ip 地址
PTR:将 ip 地址解析为名称 
MX:邮件交换器 
CHAME:设置别名 

[root@svr7 ~]# cd /var/named/ 
[root@svr7 named]# cp -p named.localhost yid.cn.zone #权限属性不变拷贝 
[root@svr7 named]# ls -l yid.cn.zone 
-rw-r----- 1 root named 152 6 月 21 2007 yid.cn.zone #必须保证属组是 named 
[root@svr7 named]# vim yid.cn.zone 
$TTL 1D #DNS 解析的有效时间 1 天 
@ IN SOA .... #@表示本域名,这段不修改
yid.cn. NS svr7.yid.cn. #声明 yid.cn.域名的 DNS 服务器为 svr7.yid.cn. 
svr7 A 192.168.4.7 #指定 svr7.yid.cn.的 ip 地址为 192.168.4.7 
www A 1.1.1.1 
ftp A 2.2.2.2 

4.重起 named,设置开机自启动

[root@svr7 named]# systemctl restart named
[root@svr7 named]# systemctl enable named 

5.客户端访问测试:

[root@pc207 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf 
[root@pc207 ~]# nslookup www.yid.cn

多区域 DNS 服务(多写几个 zone)
配置文件/etc/named.conf 新增如下内容:


zone "qq.com" IN { 
    type master; 
    file "qq.com.zone";
};
[root@svr7 named]# vim qq.com.zone 
        qq.com. NS svr7 
        svr7 A 192.168.4.7 
        www A 3.3.3.3 
        ftp A 4.4.4.4

基于 DNS 域名的负载均衡

[root@svr7 named]# vim qq.com.zone 
qq.com. NS svr7 
svr7 A 192.168.4.7 
www A 192.168.4.11 #DNS 服务器会随机从 3 个 IP 中选择一个提供,后面的 域名可以省略
                        A 192.168.4.12 
                        A 192.168.4.13
                        

泛域名解析:以*匹配所有

    [root@svr7 named]# vim qq.com.zone 
    qq.com. NS svr7
    svr7 A 192.168.4.7
    www A 192.168.4.11 
    * A 1.2.3.4

有规律的泛域名解析

函数: $GENERATE 生成连续范围的数字 

        [root@svr7 named]# vim qq.com.zone 
            qq.com. NS svr7
            svr7 A 192.168.4.7 
            www A 192.168.4.11 
            ftp A 4.4.4.4 
            * A 1.2.3.4 
        $GENERATE 1-50 web$ A 192.168.10.$

DNS 的子域授权

    父域 :www.yid.cn ,由 svr7 服务器 192.168.4.7 解析 
    子域 :www.bj.yid.cn ,由 pc207 服务器 192.168.4.207 解析 虚拟机 A:子域授权 
    
[root@svr7 named]# vim yid.cn.zone #指定子域的 DNS 服务器 
yid.cn. NS svr7 
bj.yid.cn. NS pc207.bj
svr7 A 192.168.4.7 
pc207.bj A 192.168.4.207 
[root@svr7 named]# systemctl restart named 

虚拟机 B:搭建子域 DNS 负责解析 bj.yid.cn 域名
修改配置文件/etc/named.conf

options { 
    directory "/var/named";
};
zone "bj.yid.cn" { 
    type master;
    file "bj.yid.cn.zone";
};
[root@pc207 named]# vim bj.yid.cn.zone
bj.yid.cn. NS pc207 
pc207 A 192.168.4.207 
www A 11.12.13.14 

测试:

[root@svr7 named]# nslookup www.bj.yid.cn 192.168.4.7 
Server: 192.168.4.7 
Address: 192.168.4.7#53
Non-authoritative answer: #非权威解答 
Name: www.bj.yid.cn 
Address: 11.12.13.14

递归查询: 首选 DNS 服务器到相应其他 DNS 服务器上询问,将最终结果带回(客户端与首 选 DNS 服务器交互)
迭代查询: 每一个 DNS 服务器告知首选 DNS 服务器下一个 DNS 服务器地址(首选 DNS 服务 器与其他 DNS 服务器交互)
递归查询是默认开启的
通过设置/etc/named.conf 开关

recursion yes/no;

缓存 DNS

作用:加速解析过程,让客户端最快得到结果
主要适用环境:互联网出口带宽较低的企业局域网;ISP 服务商的公共 DNS 服务器 
解析记录来源:
全局转发:将请求转发给指定的公共 DNS(其他缓存 DNS),请求递归服务 
根域迭代:依次向根、一级、二级......域的 DNS 服务器迭代 
配置:在/etc/named.conf 的 options 下增加 forwarders { 176.19.0.26; }; #添加转发器,176.19.0.26 是公共 DNS 的 IP 地址

Split 分离解析:
当收到客户机的 DNS 查询请求的时候能够区分客户机的来源地址
为不同类别的客户机提供不同的解析结果(IP 地址)
当不同类别的客户机请求解析同一个域名时,得到的解析结果不同
适用场景:
访问压力大的网站,购买 CDN 服务商提供的内容分发服务:
在全国各地、不同网络内部部署大量镜像服务节点
让客户端访问网络中最近/最快的服务器
方法:BIND 的 view 视图
根据源地址集合将客户机分类:
不同客户机获得不同结果
客户机分类得当(所有的客户端都要找到对应的分类:兜底)
由上到下匹配,匹配即停止
所有的 zone 都必须在 view 字段里面
格式:


 view "nsd" { 
     match-clients { 192.168.4.207; } #匹配客户端的地址 
zone "yid.cn" { 
    ...... 地址库 1; 
    };
};

 view "abc" { 
     match-clients { any; } #any 兜底 
     zone "yid.cn" { 
         ...... 地址库 2; 
    };
};

配置 ACL 队列库:

acl myip { IP1;IP2;... }; 

修改配置文件:


[root@svr7 /]# vim /etc/named.conf 
acl myip { 192.168.4.207; 192.168.4.10; 192.168.4.1; 192.168.4.123; }; 
view "nsd" {
    match-clients { 
        myip 
}; 
zone "yid.cn" { 
    type master; 
    file "yid.cn.nsd"; 
    };
};

view "abc" { 
    match-clients { any; }; 
    zone "yid.cn" { 
        type master; 
        file "yid.cn.abc"; 
        };
    };

配置地址库文件

[root@svr7 /]# tail -3 /var/named/yid.cn.nsd 
yid.cn. NS svr7
svr7 A 192.168.4.7 
www A 192.168.4.100
[root@svr7 /]# tail -3 /var/named/yid.cn.abc 
yid.cn. NS svr7 
svr7 A 192.168.4.7 
www A 1.2.3.4

相关文章
|
8天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
25 3
|
1月前
|
自然语言处理 数据可视化 BI
文档解析(大模型版)服务体验评测
体验文档解析(大模型版)服务时,清晰的入门指南、操作手册和FAQ至关重要。若存在不足,需增加直观的操作流程说明(如动画演示)、深化高级功能文档,并提供实时在线支持,帮助用户快速解决问题。
|
10天前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
16 0
|
1月前
|
弹性计算 自然语言处理 数据可视化
|
20天前
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
|
17天前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
53 1
|
17天前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
33 2
数据的存储--Redis缓存存储(二)
|
13天前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
50 6
|
1月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
18天前
|
缓存 NoSQL 关系型数据库
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
本文深入探讨了Redis缓存的相关知识,包括缓存的概念、使用场景、可能出现的问题(缓存预热、缓存穿透、缓存雪崩、缓存击穿)及其解决方案。
87 0
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿

相关产品

  • 云解析DNS
  • 推荐镜像

    更多