随笔 - 50  文章 - 0  评论 - 0  阅读 - 3209

企业DNS服务搭建

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 # www.liqingqing.com 的ip

4.4.5 AAAA

同 A 记录 ipv6地址

4.4.6 CNAME

别名
将域名映射为别的域名

5、工具

5.1 排查工具

# dig
dig fqdn @ip #指定dns服务器进行测试
dig -t ptr 111.3.31.172.in-addr.arpa # 反向解析
# nslookup
# host

5.2 配置检测

named-checkconf
named-checkzone 域名 配置

5.3 管理工具

# rndc
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
# listen-on port 53 { 127.0.0.1; };
# allow-query     { localhost; };

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 测试

# 将其余服务器dns指向此服务器
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客户端缓存

# ubuntu默认开启
# redhat系列需要安装服务进行
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
# listen-on port 53 { 127.0.0.1; };
# allow-query     { localhost; };

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#53(172.31.3.71)
;; WHEN:  12 13 10:42:29 CST 2023
;; MSG SIZE  rcvd: 138

6.5 实现子域委派

6.5.1 架构

6.5.2 配置

# liqingqing.com 配置
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 # 添加子域ip映射关系
master 	A 	172.31.3.70
slave 	A 	172.31.3.71
nexus 	A 	172.31.3.111 # nexus.liqingqing.com 作为公司网站服务
		AAAA	::1

named-checkconf && rndc reload 
# it.liqingqing.com 配置
安装
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: 三 1213 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: 三 1213 13:38:35 CST 2023
;; MSG SIZE  rcvd: 101

6.6 实现DNS缓存

6.6.1 全局缓存

vim /etc/named.conf
Options {
    forward first|only; # first转发指定服务器,若没有则从根服务器获取 only转发指定服务器,若没有直接返回失败
    forwarders { ip;};
};

6.6.2 特定区域缓存

vim /etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
    type forward;
    forward first|only;
    forwarders { ip;};
};
posted on   要快乐不要emo  阅读(124)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示