DNS架构
1.DNS域名结构
由于互联网中的域名太多,全球的用户也太多,因特网的域名采用的是树状结构命名。 任何一个连接到网络中的机器,都有一个唯一的层次结构名字,叫做域名(domain name)。
- 域、就是名字空间中可被划分、管理的部分。
- 语法上要求,域名由标号(label)组成,每一个label之间通过小数点隔开。
- 域名可以被分为多个子域,子域还可以继续划分子域的子域,因此形成了
- 顶级域
- 主域名
- 子域名
根域 .
- 在整个 DNS 系统的最上方一定是 . (小数点) 这个 DNS 服务器 (称为 root),也叫”根域“。
- 根域 (13台 全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。)
顶级域名(一级域名)
顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在http://yuchaoit.cn这个域名中,顶级域是.cn(或.COM),大小写视为相同。
二级域名
二级域名是域名的倒数第二个部分,例如在http://yuchaoit.cn这个域名中,二级域名是yuchaoit。以此类推。
三级域名
子域名
文字描述DNS解析流程
DNS域名解析
浏览器客户端需要正确查询、解析出域名的的ip地址,才能建立与服务器的连接
1.浏览器需要解析域名,首先查看本地的hosts文件,查看是否有固定的解析规则,有则直接使用该ip信息
2.本地的hosts文件没有解析关系,浏览器会发出一个dns请求到本地设置的dns服务器
本地dns服务器一般默认会是你接入的网络运营商,如电信dns,移动dns
3.域名解析的请求到达dns服务器之后,dns服务器优先查找它自己的缓存记录,如果有直接返回结果
如果dns服务器本地没有结果,递归的向上查找DNS根服务器,是否有解析记录。
4.根DNS服务器的作用只是提供域服务器的地址(不提供域名和ip的关系解析)
5.本地dns服务器此时向域服务器继续发出请求,此时请求的服务器就是如.com .cn这样的域服务器了
域服务器也不会直接返回你要访问的域名、以及它对应的IP地址的关系,而是告诉本地dns服务器,该域名对应的解析服务器的地址,
如163.com
6.最后本地dns服务器,向该域名对应的解析服务器发出请求,此时才能正确的拿到该域名对应的ip地址关系
此时本地dns服务器会把ip告诉浏览器
以及这个域名、ip的对应关系会被存储在本地缓存中,便于下次访问,可以直接看到这个域名、ip的对应关系,加速访问
云解析DNS的手册
https://help.aliyun.com/document_detail/102237.html
阿里云DNS解析
https://help.aliyun.com/document_detail/29716.html
腾讯云DNS解析
https://cloud.tencent.com/document/product/302/3446
各记录类型使用目的
具体说明文档
https://cloud.tencent.com/document/product/302/38661
记录类型 | 使用目的 |
---|---|
A 记录 | 将域名指向一个 IP 地址(外网地址)。 |
CNAME 记录 | 将域名指向另一个域名,再由另一个域名提供 IP 地址(外网地址)。 |
MX 记录 | 设置邮箱,让邮箱能收到邮件。 |
NS 记录 | 将子域名交给其他 DNS 服务商解析。 |
AAAA 记录 | 将域名指向一个 IPv6 地址。 |
SRV 记录 | 用来标识某台服务器使用了某个服务,常见于微软系统的目录管理。 |
TXT 记录 | 对域名进行标识和说明,绝大多数的 TXT 记录是用来做 SPF 记录(反垃圾邮件)。 |
隐、显性 URL 记录 | 将一个域名指向另外一个已经存在的站点。 |
bind服务部署
DNS 的==域名解析==都是 ==udp/53== ;主从之间的==数据传输==默认使用==tcp/53==;
DNS软件:
==Bind==是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley(伯克利)分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。
BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
yum install bind bind-utils -y
解释
bind-utils:bind客户端程序集,例如dig, host, nslookup等;
bind:提供的dns server程序、以及几个常用的测试程序;
bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
配置文件解释
# 日志轮转文件
/etc/logrotate.d/named
# 配置文件目录
/etc/named
# 主配置文件
/etc/named.conf
# zone文件,定义域
/etc/named.rfc1912.zones
# 服务管理脚本
/usr/lib/systemd/system/named.service
# 二进制程序文件
/usr/sbin/named
# 检测配置文件
/usr/sbin/named-checkconf
# 检测域文件
/usr/sbin/named-checkzone
# 根域服务器
/var/named/named.ca
# 正向解析区域文件模板
/var/named/named.localhost
# 反向解析区域文件模板
/var/named/named.loopback
# dns服务器下载文件的默认路径
/var/named/slaves
# 进程pid
/var/rum/named
主配置文件
# 定义监听端口、监听方式、允许查询来源
options {
// 定义监听方式 any代表全网监听
// 监听的地址和端口,localhost表示监听在本机所有地址上;
listen-on port 53 { 127.0.0.1;any; };
listen-on-v6 port 53 { ::1; };
// 区域数据库文件存放的目录,存放解析记录的目录
directory "/var/named";
// dns解析过内容的缓存文件
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";
// 允许谁向本台DNS发起查询请求(localhost|ip|any);
allow-query { localhost;any; };
..
...
...
省略
// 控制日志输出级别,路径
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
// 区域设置,这是根域。
zone "." IN {
type hint;
file "named.ca";
};
59 include "/etc/named.rfc1912.zones"; // 这里include表示,载入一个子配置文件
60 include "/etc/named.root.key";
配置文件解析
主配置文件组成部分::
options {} :全局选项(监听端口、数据文件存储位置、缓存位置、权限等)
logging {} :服务日志选项
zone . {} :自定义区域配置
include :包含其他的文件
主配置文件注意事项
语法非常严格;
文件权限属主 root ,属组 named ,文件权限 640;
子配置文件
修改子配置文件,自定义区域配置文件
配置解析
zone "example.com" IN {
type master|slave;
#自定义区域类型
file /path/to/zonefile;
#绝对路径和相对路径
allow-update {ip|none};
#允许哪个ip可以使用nsupdate动态更新 区域文件
};
添加如下配置,注意格式,这里就是添加你的域名了。 一定不要落下分号
[root@dns-server ~]# tail -5 /etc/named.rfc1912.zones
zone "yuchaoit.cn" IN {
type master;
file "yuchaoit.cn.zone";
allow-update { none; };
};
zone file区域档案的参数
网址
http://dns-learning.twnic.net.tw/bind/intro6.html#cb
$TTL 1D //定义一个TTL默认值为1天,下面数据直接引用此值.
@ [TTL] IN SOA 主DNS服务器FQDN 管理员邮箱 (
0 ; 序列号
1D ; 更新间隔
1H ; 更新失败后重试间隔
1W ; 过期时长
3H ) ; 否定记录保存时长
资源类型:A(IPv4), AAAA(IPv6):定义FQDN的IP
NS : 定义DNS服务器的FQDN
SOA : 起始授权(每个zone首先要定义此值)
MX: 定义邮件记录,有优先级概念(0-99),值越小优先级越高。
CNAME: 定义别名
PTR: 反向记录
轻量级dnsmasq服务
1、dnsmasq是一款小巧且方便地用于配置DNS服务器和DHCP服务器的工具,适用于小型网络,它提供了DNS解析功能和可选择的DHCP功能。
2、dnsmasq可以解决小范围的dns查询问题,如果业务是跨机房、跨地区的话不建议使用dnsmasq做为dns解析服务器。
配置文件解释
[root@master-61 ~]#grep -Ev '^$|^[#;]' /etc/dnsmasq.conf
#定义dnsmasq从哪里获取上游DNS服务器的地址,默认是从/etc/resolv.conf获取
resolv-file=/etc/resolv.dnsmasq.conf
#定义dnsmasq监听的地址,默认是监控本机的所有网卡上。局域网内主机若要使用dnsmasq服务时,指定本机的IP地址
listen-address=172.16.1.61
# 本地域名配置文件(不支持泛域名),添加内部需要解析的地址和域名(重新加载即可生效)
# 默认读取/etc/hosts
addn-hosts=/etc/dnsmasq.hosts
#记录dns查询日志服务器
log-queries
log-facility=/var/log/dnsmasq.log
#包含其他文件夹下所有配置文件
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?