DNS
1、DNS简介
dns 时域名解析系统,互联网基于tcp/ip 协议进行通信,由于ip 地址不方便记忆且会不停变化,需要建立一种映射关系来实现对ip 的解析,方便使用和记忆
2、DNS架构
域名范例
www.google.com
从右至左依次为根域名,一级域名,二级域名,中间以 . 分割
3、DNS工作原理
当发起dns查询请求时,若dns服务器不存在查询域名,dns服务器将继续向上查询,查到结果后将结果返回给客户端,对客户端来说只进行了一次查询,其余由dns服务器完成
当发起dns查询请求时,若dns服务器不存在查询域名,dns服务器将上级域名返回给客户端,客户端继续发送查询请求到上级服务器,依次类推,对客户端来说发起多次查询
Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
4、 概念
4.1 服务器类型
管理和维护所负责解析的域内解析库的服务器
从主服务器或从服务器"复制" (区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容
4.2 解析形式
FQDN: 完全限定域名,比如 www.baidu.com
IP: ip地址 比如 192.168.31.0
FQDN --> IP
IP --> FQDN
负责正向解析的库叫正向区域,反之则叫反向区域
4.3 解析答案
肯定答案:存在对应的查询结果
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案
非权威答案:由其它非权威服务器返回的查询答案
4.4 资源记录
4.4.1 定义方式
1. TTL可从全局继承
2. 使用 "@" 符号可用于引用当前区域的域名
3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
4.4.2 soa
起始授权记录
参考定义方式
name [TTL] IN rr_type value
范例:
@ 86400 IN SOA ns rfc.do(
2015042201; 序列号每次更改DNS区域时都会递增此数字。DNS服务器使用此数字确定是否需要使用区域的新版本更新其缓存
2H; 刷新时间 从服务器同步时间
10M; 重试时间 从服务器同步失败后的重试间隔
1W; 过期时间 从服务器多久无法同步后将弃用从服务器
1D; 否定答案的TTL值
)
name: 当前区域的名字,例如"guquanheng.com." 可以使用@来代替
TTL 可以不填
IN 为固定格式
SOA 指定类型为SOA
ns dns服务器地址,注意需要搭配NS资源和A资源进行ip映射
nsadmin 一个邮箱地址无实际作用
4.4.3 NS
name server 服务器地址,注意有多个时全部要写
4.4.4 A
主机与ip的映射关系
www 172.31.3.1
4.4.5 AAAA
同 A 记录 ipv6地址
4.4.6 CNAME
别名
将域名映射为别的域名
5、工具
5.1 排查工具
dig fqdn @ip
dig -t ptr 111.3.31.172.in-addr.arpa
5.2 配置检测
named-checkconf
named-checkzone 域名 配置
5.3 管理工具
rndc reload
6、环境搭建
6.1 实现dns正向解析
使用域名 liqingqing.com
6.1.1 安装
yum -y install bind bind-utils
rpm -ql bind
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
解析库文件:/var/named/ZONE_NAME.ZONE
注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件;named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库
rpm -ql bind-utils
6.1.2 配置文件
全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone "ZONE_NAME" IN {};
vim /etc/named.comf
vim /etc/named.rfc1912.zones
添加新配置
zone "liqingqing.com" IN {
type master;
file "liqingqing" ;
};
cp -p /var/named/named.localhost /var/named/liqingqing
vim /var/named/liqingqing
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
A 127.0.0.1
master A 172.31.3.70
nexus A 172.31.3.111
AAAA ::
named-checkconf
named-checkzone liqingqing /var/named/liqingqing
无问题后重载配置
rndc reload
6.1.3 测试
dig nexus.liqingqing.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.15 <<>> nexus.liqingqing.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2744
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;nexus.liqingqing.com. IN A
;; ANSWER SECTION:
nexus.liqingqing.com. 86400 IN A 172.31.3.111
;; AUTHORITY SECTION:
liqingqing.com. 86400 IN NS master.liqingqing.com.
;; ADDITIONAL SECTION:
master.liqingqing.com. 86400 IN A 172.31.3.70
;; Query time: 1 msec
;; SERVER: 172.31.3.70#53(172.31.3.70)
;; WHEN: 二 12月 12 10:57:46 CST 2023
;; MSG SIZE rcvd: 102
6.2 实现DNS客户端缓存
yum -y install nscd
systemctl enable --now nscd
nscd -g
nscd -i hosts
6.3 实现反向dns解析
反向解析与正向解析类似但有区别,域名要反写且加后缀比如解析172.31.3.10
域名为 3.31.172.in-addr.arpa.
6.3.1 配置
vim /etc/named.rfc1912.zones
添加配置
zone "3.31.172.in-addr.arpa" IN {
type master;
file "172.31.3.zone" ;
};
cd /var/named
cp named.localhost 172.31.3.zone
vim 172.31.3.zone
$TTL 1D
@ IN SOA ns rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.liqingqing.com.
111 PTR nexus.liqingqing.com.
6.3.2 测试
named-checkconf
named-checkzone 3.31.172.in-addr.arpa 172.31.3.zone
dig -t ptr 111.3.31.172.in-addr.arpa
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.15 <<>> -t ptr 111.3.31.172.in-addr.arpa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16512
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;111.3.31.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
111.3.31.172.in-addr.arpa. 86400 IN PTR nexus.liqingqing.com.
;; AUTHORITY SECTION:
3.31.172.in-addr.arpa. 86400 IN NS ns.liqingqing.com.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: 三 12月 13 09:57:29 CST 2023
;; MSG SIZE rcvd: 105
6.4 实现DNS主从架构
6.4.1 安装
yum -y install bind bind-utils
6.4.2 配置
vim /etc/named.rfc1912.zones
zone "liqingqing.com" IN { type master;
file "liqingqing.zone.slave" ;
allow-update { none; };
allow-transfer {$slave -ip;};
};
vim /var/named/liqingqing.com.zone
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
A 127.0.0.1
master A 172.31.3.70
slave A 172.31.3.71
nexus A 172.31.3.111
AAAA ::1
测试并重载配置
named-checkconf
named-checkzone liqingqing liqingqing
rndc reload
vim /etc/named.conf
vim /etc/named.rfc1912.zones
zone "liqingqing.com" IN { type slave;
masters {172.31.3.70;};
file "slaves/liqingqing.zone.slave" ;
allow-transfer {};
};
named-checkconf
named-checkzone liqingqing liqingqing.zone.slave
systemctl enable --now named
6.4.3 测试
dig nexus.liqingqing.com @172.31.3.71
<<>> DiG 9.11 .4 -P2-RedHat-9.11.4-26.P2.el7_9.15 <<>> nexus.liqingqing.com @172.31.3.71
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12651
;; flags: qr aa rd ra; QUERY: 1 , ANSWER: 1 , AUTHORITY: 2 , ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0 , flags:; udp: 4096
;; QUESTION SECTION:
;nexus.liqingqing.com. IN A
;; ANSWER SECTION:
nexus.liqingqing.com. 86400 IN A 172.31 .3 .111
;; AUTHORITY SECTION:
liqingqing.com. 86400 IN NS master.liqingqing.com.
liqingqing.com. 86400 IN NS slave.liqingqing.com.
;; ADDITIONAL SECTION:
master.liqingqing.com. 86400 IN A 172.31 .3 .70
slave.liqingqing.com. 86400 IN A 172.31 .3 .71
;; Query time: 1 msec
;; SERVER: 172.31 .3 .71
;; WHEN: 三 12 月 13 10 :42:29 CST 2023
;; MSG SIZE rcvd: 138
6.5 实现子域委派
6.5.1 架构
6.5.2 配置
vim /etc/named.conf
关闭加密认证
dnssec-enable no;
dnssec-validation no;
vim /var/named/liqingqing
$TTL 1D
@ IN SOA master rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
it NS sub
A 127.0.0.1
sub A 172.31.3.72
master A 172.31.3.70
slave A 172.31.3.71
nexus A 172.31.3.111
AAAA ::1
named-checkconf && rndc reload
安装
yum -y install bind-utils bind
修改配置
vim /etc/named.conf
//listen-on port 53 { 127.0.0.1; };
//allow-query { localhost; };
dnssec-enable no;
dnssec-validation no;
vim /etc/named.rfc1912.zones
zone "it.liqingqing.com" IN {
type master;
file "it.zone" ;
allow-update { none; };
};
cd /var/named/
cp named.localhost it.zone -p
vim it.zone
$TTL 1D
@ IN SOA ns rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns
ns A 172.31.3.72
cicd A 172.31.3.166
named-checkconf && rndc reload
6.5.3 测试
dig nexus.liqingqing .com @172 .31.3.70
; <<>> DiG 9.11 .4 -P2-RedHat-9.11 .4 -26 .P2 .el7_9 .15 <<>> nexus.liqingqing .com @172 .31.3.70
;; global options: +cmd
;; Got answer:
;; ->>HEADER <<- opcode: QUERY, status: NOERROR, id: 54293
;; flags: qr aa rd ra; QUERY: 1 , ANSWER: 1 , AUTHORITY: 2 , ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0 , flags:; udp: 4096
;; QUESTION SECTION :
;nexus.liqingqing .com . IN A
;; ANSWER SECTION :
nexus.liqingqing.com. 86400 IN A 172.31 .3.111
;; AUTHORITY SECTION :
liqingqing.com. 86400 IN NS master.liqingqing.com.
liqingqing.com. 86400 IN NS slave.liqingqing.com.
;; ADDITIONAL SECTION :
master.liqingqing.com. 86400 IN A 172.31 .3.70
slave.liqingqing.com. 86400 IN A 172.31 .3.71
;; Query time : 1 msec
;; SERVER: 172.31 .3.70 #53 (172.31 .3.70 )
;; WHEN: 三 12 月 13 13 :39 :28 CST 2023
;; MSG SIZE rcvd: 138
dig cicd.it.liqingqing.com @172.31 .3.70
; <<>> DiG 9.11 .4 -P2-RedHat-9.11 .4 -26 .P2 .el7_9 .15 <<>> cicd.it .liqingqing .com @172 .31.3.70
;; global options: +cmd
;; Got answer:
;; ->>HEADER <<- opcode: QUERY, status: NOERROR, id: 26089
;; flags: qr rd ra; QUERY: 1 , ANSWER: 1 , AUTHORITY: 1 , ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0 , flags:; udp: 4096
;; QUESTION SECTION :
;cicd.it .liqingqing .com . IN A
;; ANSWER SECTION :
cicd.it.liqingqing.com. 86293 IN A 172.31 .3.166
;; AUTHORITY SECTION :
it.liqingqing.com. 86400 IN NS sub.liqingqing.com.
;; ADDITIONAL SECTION :
sub.liqingqing.com. 86400 IN A 172.31 .3.72
;; Query time : 1 msec
;; SERVER: 172.31 .3.70 #53 (172.31 .3.70 )
;; WHEN: 三 12 月 13 13 :38 :35 CST 2023
;; MSG SIZE rcvd: 101
6.6 实现DNS缓存
6.6.1 全局缓存
vim /etc/named.conf
Options {
forward first|only;
forwarders { ip;};
};
6.6.2 特定区域缓存
vim /etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
type forward;
forward first|only;
forwarders { ip;};
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下