目录
一.DNS
1.1DNS的简介
DNS(Domain Name System,域名系统)是互联网的核心服务之一,用于将人类可读的域名转换为机器可识别的IP地址。它充当互联网的“电话簿”,简化用户对网络资源的访问。
1.2DNS的背景
在DNS诞生之前,互联网使用一个名为 HOSTS.TXT
的纯文本文件来映射主机名和IP地址。随着互联网规模的扩大集中式管理的HOSTS.TXT
无法满足需求,急需一种分布式、自动化的解决方案。而DNS作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
1.3DNS的架构
DNS采用树状层级结构管理域名,类似于文件系统的目录树。
-
根域:最高层,用
.
表示(通常省略),如www.example.com.
(实际解析时隐含根域)。 -
顶级域可分为两种:
-
组织顶级域:如
.com
、.org
、.net
。 -
国家代码顶级域:如
.cn
(中国)、.uk
(英国)。
-
-
二级域:如
example.com
中的example
。 -
子域:如
mail.example.com
中的mail
。
1.4实现DNS的方式
-
方法一 : 本地host文件
-
方法二 : 安装软件服务
1.5DNS的查询类型
DNS查询主要分为 递归查询和 迭代查询
1.递归查询:客户端要求DNS服务器必须返回最终结果
2.迭代查询:DNS服务器只返回它知道的最佳答案,不会代替客户端查询到底。
1.6DNS解析的基本流程
当用户在浏览器输入目标域名时,DNS解析过程如下
以www.example.com为例
步骤1:本地缓存查询
-
浏览器缓存 → 检查是否最近访问过该域名
-
操作系统缓存 → 查看本地Hosts文件及系统DNS缓存
-
路由器缓存 → 检查家庭/企业路由器的DNS记录
-
如果缓存命中:直接返回IP,解析结束。
-
如果未命中:进入递归查询流程。
步骤2:递归DNS服务器查讯
递归服务器检查自身缓存
-
如果有目标域名的缓存且未过期,直接返回IP。
-
如果没有,开始迭代查询流程。
步骤3:迭代查询(层级解析)
递归服务器依次向以下服务器发起查询:
(1) 根DNS服务器(Root Server)
-
全球共13组根服务器(逻辑根,实际物理服务器遍布全球)。
-
返回:
.com
顶级域(TLD)的权威服务器地址(如a.gtld-servers.net
)。
(2) 顶级域DNS服务器(TLD Server)
-
管理
.com
、.org
等顶级域。 -
返回:
example.com
的权威DNS服务器地址(如ns1.example.com
)。
(3) 权威DNS服务器(Authoritative Server)
-
托管
example.com
的完整DNS记录。 -
返回:
www.example.com
的A记录(如192.0.2.1
)。
步骤4:结果返回与缓存
二.主从复制
2.1定义
主从复制是一种数据同步机制,用于在多个数据库或服务器之间实现数据的单向复制和备份。其核心架构包括:
-
主节点(Master):负责处理所有写操作(如增删改),并将数据变更同步到从节点。
-
从节点(Slave):接收主节点的数据变更,只读(不处理写请求),用于分担查询负载或容灾备份。
2.2优缺点
优点 | 缺点 |
---|---|
提高读性能(多从节点分担查询) | 写性能受主节点限制 |
数据冗余,增强容灾能力 | 主从延迟可能导致脏读 |
灵活扩展(可动态增加从节点) | 主节点故障需手动/自动切换(有风险) |
三.DNS服务软件
3.1bind
3.1.1定义
BIND(Berkeley Internet Name Domain)是互联网上最广泛使用的DNS服务器软件,其配置文件用于定义DNS服务器的行为、区域数据和安全策略。
3.1.2bind相关文件
-
BIND主程序:/usr/sbin/named
-
服务脚本和Unit名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service
-
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
-
管理工具:/usr/sbin/rndc:remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,提供辅助性的管理功能;953/tcp rndc reload systemctl reload named
-
解析库文件:/var/named/ZONE_NAME.ZONE
3.2DNS服务器的核心文件
3.2.1主配置文件
DNS服务的"大脑"和"总控中心"
#路径#
/etc/named.conf
#主要内容#
options {
listen-on port 53 { any; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
3.2.2域名文件
域名文件(Zone File)是DNS服务器的核心数据文件,用于存储特定域名(Zone)的所有解析规则。
域名文件 ----指定域名的名称
#路径#
/etc/named.rfc1912.zones
#主要内容#
##正向解析##
zone "byyd.com" IN {
type master;
file "byyd.com.zone";
};
##反向解析##
zone "2.168.192.in-addr.apra" IN {
type slave;
file "dyyb.com.zone";
};
##主从复制##
###主服务器###
zone "byyd.com" IN {
type master;
file "byyd.com.zone";
allow-transfer { 192.168.2.101; };
};
###从服务器###
zone "byyd.com" IN {
type slave;
file "slaves/byyd.com.zone";
masters { 192.168.2.100; };
};
3.2.3数据库文件
在BIND DNS服务器中,数据库文件(即区域文件,Zone Files)存储具体的DNS解析记录(如A、MX、NS记录等)
$TTL 1D #有效解析记录的生存周期
@ in SOA benet.com. admin.benet.com. ( #“@"符号表示当前的DNS区域名
0 ; serial #更新序列号,可以是10位以内的整数 11111111
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃#
3H) ; minimum #无效解析记录的生存周期,
NS benet.com. #记录当前区域的DNS服务器的名称
A 192.168.80.10 #记录主机IP地址
IN MX 10 mail.benet.com. #MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.80.10 #记录正向解析www.benet.com对应的IP
mail IN A 192.168.80.11 #MX为邮件交换记录,数字越大优先级低
ftp IN CNAME www #CNAME使用别名,ftp 是www的别名
* IN A 192.168.80.100 #泛域名解析,“*"代表任意主机名
四.域名解析工具
1.nslookup(交互式基础查询)
作用:直接命令行查询,支持正向/反向解析
格式:
nslooup 域名 [域名服务器]
例子:
# 查询域名的记录(默认使用系统配置的DNS)
nslookup www.example.com
nslookup www.baidu.com 8.8.8.8
#指定 8.8.8.8服务器来解析
# 反向解析(IP→域名)
nslookup 192.168.1.1
2.dig(完整全面的查询)
格式:
dig [选项] 域名 [记录类型] @DNS服务器
例子:
# 查询A记录(显示完整响应)
dig www.example.com
# 指定记录类型(如MX)
dig example.com MX
# 指定DNS服务器(如Cloudflare)
dig @1.1.1.1 example.com
3.host(快速简洁查询)
格式:
host 域名 [DNS服务器]
例子:
# 查询A记录
host www.example.com
# 指定DNS服务器
host www.example.com 8.8.8.8
# 反向解析
host 192.168.1.1