当前位置: 首页 > news >正文

原来DNS这么简单!全网最通俗的BIND配置教程(附主从复制)

DNS 的基本概念

文章摘要:本文全面介绍了 DNS(域名系统)的基本概念、工作原理及 BIND 服务的实战部署。内容涵盖 DNS 的层次结构、查询类型、资源记录类型,并详细演示了如何在 CentOS 系统上搭建 DNS 缓存服务器、配置正向/反向解析、CNAME/MX 记录,以及实现主从复制和高可用架构。通过图文并茂的配置示例和 Mermaid 流程图,帮助读者深入理解 DNS 服务的核心机制与安全加固方法。

DNS 概述

DNS(域名解析服务)
DNS:Domain Name System域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,
能够使人更方便地访问互联网

基于C/S架构,服务器端:53/udp, 53/tcp
BIND: Bekerley Internet Name Domain,由 ISC (www.isc.org))提供的DNS软件实现DNS域名结构

例:

www.test.com.

study.test.com.

FQDN全称域名=主机名(名)+域名(姓)域名=子域名+父域名

  • 根域
  • 一级域名: Top Level Domain: tldcom, edu, mil, gov, net, org, int,arpa 三类: 组织域、国家域(.cn, .ca, .hk, .tw)、反向域
  • 二级域名:test.com
  • 三级域名: study.test.com
  • 最多可达到127级域名

DNS 原理

DNS 查询流程示意图

缓存命中

缓存未命中

缓存命中

缓存未命中

客户端发起DNS查询
如: www.example.com

检查本地缓存
hosts文件 & DNS缓存

返回解析结果
查询结束

本地DNS服务器
(递归解析器)

检查服务器缓存

返回解析结果

向根域名服务器查询

返回顶级域名服务器地址
(如: .com服务器)

向顶级域名服务器查询

返回权威域名服务器地址
(如: example.com服务器)

向权威域名服务器查询

返回最终IP地址
(如: 192.0.2.1)

本地DNS服务器缓存结果

返回结果给客户端

DNS 查询类型

递归查询: 最终结果,负责到底

迭代杳询· 最好结果,不负责到底

名称服务器

Name Server,域内负责解析本域内的名称的DNS服务器

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

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

完整的查询请求经过的流程

client -->hosts文件–>client DNS service Local cache --> DNS server本身数据库 (recursion递归查询) --> DNS server cache -->iteration(迭代)–>根–>顶级域名DNS–>二级域名DNS…

DNS 资源记录

资源记录:就是DNS服务需要使用的相关数据。 例如:192.168.100.123 对应着 server01.test.com 192.168.100.124 对应着 server02.test.com 192.168.100.125 对应着 server03.test.com 资源记录的常用类型如下:

类型记录类别标明
SOA(起始授权机构记录)负责注册更新的DNS服务器名称和其它控制参数 SOA记录总是第一条记录
NS(域名服务器记录)负责权威解析的DNS服务器名称
A(主机A记录)一个名称对应的IPv4地址
AAAA(主机AAAA记录)一个名称对应的IPv6地址
CNAME(别名记录)一个名称的别名
MX(邮件交换器记录)一个域名空间中的邮件服务器的名称
SRV(服务位置记录)各种网络服务的位置信息
TXT(文本记录)些文本信息,用于其他目的
如:防范邮件服务器被冒名顶替
PTR(反向记录)一个IP地址对应的名称

DNS 角色类型

DNS角色类型功能说明
DNS根服务器全球有13个根服务器,大部分在美国
DNS 缓存服务器代人提问、缓存应答,不提供权威解析
DNS Master (主) 权威服务器可提供注册更新和权威解析
DNS Slave(从)权威服务器同步复制 Master数据,可提供权威解析

DNS 服务安装

安装:DNS 服务组件

安装 DNS 软件包:bind

yuminstall-ybindbind-utils systemctlenablenamed systemctl start namednetstat-tunlp|grepnamed

953端口是rndc 的端口,rndc可以管理named服务

查看配named的配置可以看到

vim/etc/named.conf

做本地 DNS 缓存服务器

cat/etc/resolv.conf

指定的 dns 服务器,使用本 dns 服务器做缓存 dns 即可

nmcli con mod ens160 ipv4.dns127.0.0.1 nmcli con up ens160

修改为本地的 dns 服务器

ping-c4baidu.com

图上可以看到当dns指向本地dns服务器时则可以通过本地dns服务器进行dns查询了,哪其它服务器能通使用自建的dns服务器查 询吗?

查看自建dns服务器ip

ipa|grepens160

开一台服务器做为客户端指定自建dns服务器测试

ping-c4baidu.com

图上可以看不能解析www.baidu.com,原因是19.128 机器绑定的ip是127.0.0.1

修改配置文件

vim/etc/named.conf
named-checkconf rndc reload# 或 systemctl restart named

再次在客户端测试

ping-c4baidu.com

上图可以看到客户端指定自建的dns服务器后可以进行dns缓存查询了

DNS 正向解析配置

正向解析将域名解析成ip

配置

创建:独立的正向区域 控制文件

在以下配置文件中添加以下内容

vim/etc/named.rfc1912.zones
zone"test.com"IN{// 标明:区域名称=test.comtypemaster;// 设置:区域类型=master主file"zone.test.com";// 指定:区域数据文件=zone.test.com文件(这是相对路径)allow-update{none;};// 禁止:DNS动态更新};
cp-a/var/named/named.localhost /var/named/zone.test.com
vim/var/named/zone.test.com

重启服务、检测效果

named-checkconf /etc/named.conf#(检测配置文件语法格式,是否正确)systemctl restart named#(重启服务)named-checkzone test.com /var/named/zone.test.com#(检测区域配置文件语法格式,是否正确)
nslookupdns01.test.com
hostdns01.test.com

客户端测试

ping-c4dns01.test.com

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

DNS 的 CNAME 记录

vim/var/named/zone.test.com

这里的别名记录相当于当访问 www.test.com 时分别将流量分配到两台服务器 192.168.19.129 和192.168.19.130

named-checkzone test.com /var/named/zone.test.com rndc reload

准备两台服务器192.168.19.129、192.168.19.130 并安装httpd服务,以便看效果,两台机器指定DNS服务器为192.168.19.128

hostnamectl set-hostname client01 hostnamectl set-hostname client02
yum-yinstallhttpdecho"webserver 192.168.19.129">/var/www/html/index.html systemctl start httpd
yum-yinstallhttpdecho"webserver 192.168.19.130">/var/www/html/index.html systemctl start httpd
digwww.test.com +short

DNS泛域名匹配
假如我们访问的是 wwwww.test.com会有什么结果呢?

curlwwww.test.com

此时就就可以通过泛域名来匹配

rndc reload
curlw.test.comcurlagdav.test.com

DNS 当前域匹配

如果只访问当前域会出现什么问题呢?

curltest.com
vim/var/named/zone.test.com
rndc reload

DNS 的 MX 记录

一个域名空间中的邮件服务器的名称

  1. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
  2. 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
vim/var/named/zone.test.com

邮件记录通过优先级来确定优先使用哪台服务器,当优先邮件服务器宕机后,再使用优先级低的邮件服务器。

查看邮件服务器

dig-tmx test.com

DNS 反向区域 PTR 记录

反向区域:将IP地址解析为名字
区域名称:网络地址反写.in-addr.arpa.

创建:独立的反向区域控制文件

vim/etc/named.rfc1912.zones
zone"19.168.192.in-addr.arpa"IN{// 标明:区域名称=10.168.192.in-addr.arpatypemaster;// 设置:区域类型=master主file"zone.19.168.192";// 指定:区域数据文件=zone.10.168.192文件(这是相对路径)allow-update{none;};// 禁止:DNS动态更新};

创建:独立的反向区域 数据文件

vim/var/named/zone.19.168.192

重启服务、检测效果

named-checkconf /etc/named.conf#(检测配置文件语法格式,是否正确)systemctl restart named#(重启服务)named-checkzone19.168.192.in-addr.arpa /var/named/zone.19.168.192#(检测区域配置文件语法格式,是否正确)
dig-tptr129.19.168.192.in-addr.arpa
dig-x192.168.19.130

DNS 主从复制

主从复制条件

  1. 应该为一台独立的名称服务器
  2. 主服务器的区域解析库文件中必须有一条 NS 记录指向从服务器
  3. 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
  4. 主服务器得允许从服务器作区域传送
  5. 主从服务器时间应该同步,可通过 ntp 进行
  6. bind 程序的版本应该保持一致;否则,应该从高,主低

主从复制意义

实现 DNS Master主/Slave从冗余部署,实现DNS高可用性

在Master主无法响应的时候,客户端可以自动通过Slave从获得名称解析服务。

DNS主从复制架构图

客户端集群

从DNS服务器 (Slave)

主DNS服务器 (Master)

1. 区域传输
(AXFR/IXFR)

2. 数据同步

3. 故障检测

4. 主服务器故障

5. 自动重定向

5. 自动重定向

5. 自动重定向

权威区域数据
zone.test.com

配置更新
版本号递增

同步区域数据
slaves/zone.test.com.slave

只读副本
加密存储

客户端1

客户端2

客户端N

故障切换

环境准备

主机IP描述
Master192.168.19.128主DNS服务器
Slave192.168.19.129从DNS服务器

关闭防火墙,selinux,修改主机名,做时间同步服务(略)

hostnamectl set-hostname master
hostnamectl set-hostname slave
  1. 配置:Master 主

192.168.19.128 已经配置dns

  1. 配置:Slave 从

安装DNS

yum-yinstallbindbind-utils

定义从区域

格式:

zone"ZONE_NAME"IN{typeslave;masters{MASTER_IP;};file"slaves/ZONE_NAME.zone";};
vim/etc/named.conf

在下面配置文件中添加以下内容

vim/etc/named.rfc1912.zones
zone"test.com"IN{typeslave;masters{192.168.19.128;};file"slaves/zone.test.com.slave";};
ls/var/named/slaves/ systemctl start named ll /var/named/slaves/

客户端测试

digwww.test.com @192.168.19.129

修改主配置文件测试从是否能时时同步主服务器

master:

rndc reload

slave:

ll /var/named/slaves/

原因

①主服务器修改配置文件以后,版本号需要变更,因为同步有两种机制一种是推一种是拉,主服务器要么推数据到从服务器,但是 版本号未变,因此会认为没有变化,一种是从机向主拉数据,但是有时间上面配置的刷新时间是1D 也就是一天,时间没到(版本号 也需要变化)

②主服务器需要指定从服务器的NS记录和A记录,告诉网络中还有一台从服务器,需要进行数据同步

master:

vim/var/named/zone.test.com
rndc reload
ll /var/named/slaves/
digwww.test.com @192.168.19.129

现在可以看到可以备用DNS服务器可以正常同步主服务器的解析数据了

对于从服务器而言,它同步的配置文件是加密的方式保存的!这是一种安全机制!但实际上仅仅是把同步文件加密了就安全了 吗?并不是!对于从服务器而言,主服务器并没有限制谁能同步自己的数据,因此任何服务器只要配置了DNS都可以去同步主服务器的数据。这样很明显是不安全的

如下:

dig-taxfr test.com @192.168.19.128

可以看到任何一台服务器上都可以通过命令将 DNS 服务器的解析,可以轻松的以明文的形式给获取到 ,这样就可以对指定服务器进行攻击,很明显是不安全的!

安全加固

默认任何都可以从主服务器同步区域数据库,这有很大安全风险

master:

vim/etc/named.conf

allow-transfer { 192.168.19.129; }; 只允许192.168.19.129机器同步数据

rndc reload
vim/etc/named.conf

allow-transfer { none; }; 从不允许任何机器同步数据

rndc reload

再次测试

dig-taxfr test.com @192.168.19.128dig-taxfr test.com @192.168.19.129

再次测试

http://www.jsqmd.com/news/1106596/

相关文章:

  • MIC-3392A2单板计算机
  • 我用 AI 做电商图踩过的 7 个坑,每个都是真金白银买来的
  • 国产IM下一城:混合办公的性能与合规平衡术
  • 为什么深度学习离不开矩阵计算?一篇看懂向量化与 Batch
  • Linux多线程--cleanup push/pop
  • Java毕业设计-基于 Java 的医院医疗设备管理系统的设计与实现 基于 Java 的医院医疗器械资产管控系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • idea卡顿 idea设置了Maximum Heap Size 但current value还是小值
  • 基于全域场介质扰动的光传播机理新模型研究
  • Claude Code内置隐藏木马近3个月,官方回滚难消中国用户信任危机
  • 学生会议记录软件帮你记录更快更准整理更省心
  • 当AI写出百万行代码:金融科技的下一站是“可控智能”
  • 有哪些适合硕士、从开题至定稿的一体化 AI 写作工具推荐?
  • TLS Connect 如何解决了关于证书有效期缩短的问题?
  • 想要找性价比合适的亮片胶,这几家口碑过硬的生产厂家推荐给你
  • 【Python工程化实战】变异测试(Mutation Testing):mutmut 验证测试套件有效性
  • Java毕业设计-基于 Java Web 的茶园文化宣传交流平台的设计与实现 基于 Java Web 的茶园茶农文化交流平台的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • Metasploit实战指南:从工具使用到渗透测试思维框架构建
  • 可以出具软件测试报告的第三方软件测评机构推荐
  • 编程知识点讲解怎么录屏?程序员高质量技术教学录屏避坑指南
  • TEMPO GALIL CC903-61531运动接口模块
  • Yaskawa XU-ACP130-B11晶圆预对准器
  • Java计算机毕设之基于 Java 的在线学术文献收纳检索系统的设计与实现 基于 Java 的电子书目文献资源管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • 【实战分享】.NET 10 + ABP WebAPI 项目发布部署至 Docker Desktop 避坑与实践记录
  • Java毕业设计-基于 SpringBoot 的宠物医院医疗设备与疫苗管理系统的设计与实现 基于 SpringBoot 的宠物医院综合管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 基于ICM-42605和PIC18F87J11的6DOF运动追踪系统设计
  • 用 OpenCode 理解陌生代码库:3 个实用命令让你快速上手任何项目
  • Selenium反检测实战:让Chrome与Firefox浏览器绕过网站自动化识别
  • 数据中台建设中“平台优先“vs“治理优先“的技术路线之争
  • 嵌入式系统设计师重要100条知识点速记
  • 半导体硅片制造|纯技术专家线晋升 CTO 完整路径 薪资 关键领域