Bootstrap

DNS服务介绍、讲解、搭建和使用实战案例

DNS服务讲解搭建和使用实战案例

1.思考一个问题:网站访问,为什么需要使用域名?使用ip访问不行吗?
在互联网中,网站访问过程中使用ip地址访问会有下面两个缺点:
1).不好记忆,如:学校官网的IP地址是"111.104.20.127",难以记忆
2).ip地址可能会经常发生变更,所以通过ip地址去访问某台机器就容易出现无法访问的情况
解决方法:
此时DNS就应运而生了,那DNS解决了什么问题:
1).DNS主要用来维护域名与ip地址的对应关系,使每个ip能和相应的域名关联起来,访问域名就是访问对应的ip
2).容易记忆,域名是比较好记忆的字符串,而ip地址则非常难以记忆

2.DNS服务介绍和作用:
域名系统DNS:主要功能是将用户请求的域名转换为IP地址,DNS 就像一位 ”翻译官“,它的基本工作原理可以用下图来表示:
本质作用就是:为了方便用户记忆和使用,用户访问网站时候,如果通过ip访问,会很难记住地址,如果通过域名记忆那就方便多了

3.DNS解析分类:(DNS解析分为:正向解析和反向解析)
正向解析:把域名/主机名解析为IP地址
反向解析:把IP地址解析为域名主机名

4.DNS域的分类(或域名结构):
1).域名特点: 由于因特网的用户数量较多,所以因特网上域名在命名时采用的是层次树状结构的命名方法,域名特点如下:
a).互联网中的域名是有结构有规划的;
b).由于域名进行了分级,有了一定的分类和级别,在进行域名和IP地址解析时能更容易找到;
c).其次域名具备全球唯一性;

2).域名分类: 域名分类分为: 根域 顶级/一级域 二级域 三级域
我们可以理解为: 省级、市级、县级等等,一级一级管辖的关系,如下示意图:

 a).根域(树状结构最顶级的域): 根域知道所有顶级域名服务器的域名和地址
全世界只有13组根服务器,其中10台设置在美国,另外的三台设置与英国,瑞典,日本

b).顶级域/一级域: 知道所有顶级域名服务器下注册的所有二级域名的IP地址
顶级域有两种: 国家域和通用域/组织域
国家域: .cn(中国) .us(美国) .kr(韩国) .jp(日本)
通用域/组织域: .com(最广泛的通用域名格式) .net(一般为网络公司注册此种域名) .edu(教育机构) .org(非营利性的组织)
.gov(政府部门) .mil(军事机构)
顶级域名由ICANN (互联网名称与数字地址分配机构)委任的注册机构负责运行。

c).二级域: 负责一个区的域名服务器 (baidu.com)
无需到ICANN进行申请,只需要到运行顶级域的注册机构(阿里、腾讯)去申请即可
如果申请的域名没有被注册,也没有被注册为商标,仅需要缴纳一笔年费即可获取

d).三级域或主机站点域: 根据服务器所提供的业务功能,选择配置对应的主机名称解析记录,如下:
博客业务:blog.csdn.net
邮箱业务:mail.qq.com
视频业务:xxx.yyy.net
直播业务:xxx.yyy.net

5.DNS解析过程查询方式:
递归查询:
是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。
如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结构提交给用户。
递归查询是: 用于客户端与DNS服务器之间

迭代查询:
是指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
迭代查询:用于DNS服务器与DNS服务器之间的查询,每次返回给客户端一个可以查询的DNS服务器的地址

6.DNS解析类型:
1).A记录解析: 可以实现将域名指向IP地址,也称为正向解析。 正向解析:域名-->DNS服务返回IP
2).PTR记录解析: 可以实现IP查找域名,也称为反向解析。 反向解析:IP-->DNS服务返回域名
3).CNAME记录解析: 当需要将域名指向另一个域名,再由另一个域名提供IP 地址,就需要添加CNAME记录。
最常用CNAME记录解析使用的场景有:WAF、CDN
4).NS记录: 客户端查询DNS服务
如:当前DNS无法提供权威解析,则返回一条NS记录,客户端再通过NS记录中提供的DNS权威服务器进行解析。

7.DNS服务搭建和企业实战案例
案例1: 公司搭建内网DNS服务,使公司内网服务器,通过内网DNS解析内网域名和外网域名—域名正向和反向解析—内网DNS是单点情况
1).要求和场景条件:
a).搭建内网DNS服务器
b).内网所有服务器,配置的DNS服务器地址为:新搭建的内网DNS服务器地址,能让内网DNS解析内网域名
c).内网DNS服务器能访问外网DNS服务器并配置转发,可以配置内网DNS服务器能转发到外网的DNS,能让内网服务器解析外网域名
(因为:内网服务器配置的DNS是内网DNS的ip,如果内网DNS不能连网,那么内网服务器解析外网域名:如: www.baidu.com时会无法解析)
正向解析:
test1.gongsi.com 100.100.100.100
test2.gongsi.com 200.200.200.200
反向解析:
192.168.171.101 fangxiang1.gongsi.com
192.168.171.202 fanxiang2.gongsi.com

2).机器规划:
内网DNS服务器-单点: 192.168.171.128 (内网网卡,但是能通过nat能访问公网)
内网linux服务器两台:
内网机器1: 192.168.171.129(内网网卡,能和192.168.171.128通信)
内网机器2: 192.168.171.130((内网网卡,能和192.168.171.128通信) )

3).搭建内网DNS服务器并配置域名正向解析:
内网DNS服务器上操作: 192.168.171.128 (内网网卡,但是能通过nat能访问公网)
[root@localhost ~]# yum -y install bind bind-utils #也可: yum -y install bind bind-chroot
bind是主程序,其中bind-chroot和bind-utils是bind的相关包,bind-utils包含一些配置和测试工具, bind-chroot是一个安全增强工具
[root@localhost ~]# vim /etc/named.conf #编辑主配置文件:把设置监听端口,允许访问的客户端,修改两处为any
...
options {
listen-on port 53 { any; }; //监听地址及端口
........
allow-query { any; }; //允许谁向本台DNS发起查询请求 (localhost|ip|any)
forward first; //添加
forwarders { 223.5.5.5;223.6.6.6;8.8.8.8;8.8.4.4; }; //添加,配置dns转发到公网dns,就是内网机器配置仅配置内网dns后,还能解析公网域名
........
//查看其他默认配置:
//递归查询配置-默认配置:
recursion yes;
dnssec-enable yes;
dnssec-validation no; //改成no,否则可能会报错
....
//默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器-默认配置:
zone "." IN { //.”表示根域
type hint;
file "named.ca"; //记录了全世界根域的IP地址:/var/named/named.ca
};
......
//包含的其他文件:
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@localhost ~]# > /etc/named.rfc1912.zones #清空模板文件
[root@localhost ~]# vim /etc/named.rfc1912.zones #编辑其次配置文件:定义zone区域(正解或反解,也可定义多个区域)
zone "gongsi.com" IN { // 正解:定义的域名是:gongsi.com
type master; // 主DNS
file "gongsi.zone"; // 正解域名区域文件,名字必须以.zone结尾即可
};
zone "171.168.192.in-addr.arpa" IN { // 反解: gongsi.com域名的反解
type master; // 主DNS
file "192.zone"; // 反解域名区域文件,名字必须以.zone结尾即可
};
[root@localhost ~]# vim /var/named/gongsi.zone #正向解析配置
$TTL 3600 ;DNS失效时间,单位:秒
@ IN SOA dns.gongsi.com. 1441107787.qq.com. ( ;权威服务器和管理员邮箱,区域名称可以使用过@表示, @表示:当前域
2023061701 ;序列号(serial number)十进制,不能超过10位,通常使用日期时间戳
10800 ;刷新时间(refresh time),即每隔多久到主服务器检查一次
900 ;重试时间(retry time),即刷新不成功多久后重试,应该小于refresh time
604800 ;过期时间(expire time),当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的
86400 ;权威应答的ttl(netgative answer ttl);缓存DNS服务器可以缓存记录多长时间
)
@ IN NS dns.gongsi.com. ;给客户端返回NS记录,gongsi.com的域名由哪几台权威服务器提供解析
;下面为A记录解析: 正向解析: 将域名解析成ip:
dns IN A 192.168.171.128 ;将域名: dns.gongsi.com 解析到: 192.168.171.128
test1 IN A 100.100.100.100 ;将test1.gongsi.com 解析到: 100.100.100.100
test2 IN A 200.200.200.200 ;将test2.gongsi.com 解析到: 200.200.200.200
[root@localhost ~]# vim /var/named/192.zone #反向解析配置
$TTL 3600 ;DNS失效时间,单位:秒
@ IN SOA dns.gongsi.com. 1441107787.qq.com. ( ;权威服务器和管理员邮箱,区域名称可以使用过@表示, @表示:当前域
2023061701 ;序列号(serial number)十进制,不能超过10位,通常使用日期时间戳
10800 ;刷新时间(refresh time),即每隔多久到主服务器检查一次
900 ;重试时间(retry time),即刷新不成功多久后重试,应该小于refresh time
604800 ;过期时间(expire time),当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的
86400 ;权威应答的ttl(netgative answer ttl);缓存DNS服务器可以缓存记录多长时间
)
@ IN NS dns.gongsi.com. ;给客户端返回NS记录,gongsi.com的域名由哪几台权威服务器提供解析
;下面为PTR记录解析: 反向解析: 将域名解析成ip:
128 IN PTR dns.gongsi.com. ;注意ip是反着写,结果是: 将ip: 192.168.171.128解析为: dns.gongsi.com
101 IN PTR fangxiang1.gongsi.com. ;注意ip是反着写,结果是: 将ip: 192.168.171.101解析为: fangxiang1.gongsi.com
202 IN PTR fangxiang2.gongsi.com. ;注意ip是反着写,结果是: 将ip: 192.168.171.102解析为: fangxiang2.gongsi.com
[root@localhost ~]# systemctl enable named
[root@localhost ~]# systemctl restart named #启动DNS服务
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2023-06-17 20:00:32 CST; 2min 53s ago

4).内网liinx服务器,指向内网DNS服务器,测试域名正向解析和反向解析:
内网linux服务器两台上操作:
内网机器1: 192.168.171.129(内网网卡,能和主从DNS通信) 内网机器2: 192.168.171.131(内网网卡,能和主从DNS通信)
[root@localhost ~]# cat /etc/resolv.conf
nameserver 192.168.171.128
正向解析测试:
a).使用ping命令测试:
[root@localhost ~]# ping test1.gongsi.com #dns能解析内网域名(虽然不通,能解析就可以了)
PING test1.gongsi.com (100.100.100.100) 56(84) bytes of data.
[root@localhost ~]# ping test2.gongsi.com
PING test2.gongsi.com (200.200.200.200) 56(84) bytes of data.
[root@localhost ~]# ping www.baidu.com #dns能解析外网域名(因为内网机器也能通过nat访问外网,所以能通)
#但是通不通外网和dns是否能解析没有直接关系,如果将dns删掉或配置成错误的dns,即使能通外网也解析不了域名
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=128 time=77.8 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=128 time=843 ms
[root@localhost ~]# ping www.sougou.com
PING www.sougou.com (221.122.82.30) 56(84) bytes of data.
64 bytes from 221.122.82.30 (221.122.82.30): icmp_seq=1 ttl=128 time=23.1 ms
64 bytes from 221.122.82.30 (221.122.82.30): icmp_seq=2 ttl=128 time=15.4 ms

b).使用nslookup测试解析命令:
[root@localhost ~]# yum -y install bind bind-utils 客户端安装nslook测试命令
[root@localhost ~]# nslookup test1.gongsi.com
Server: 192.168.171.128
Address: 192.168.171.128#53
Name: test1.gongsi.com
Address: 100.100.100.100
[root@localhost ~]# nslookup test2.gongsi.com
Server: 192.168.171.128
Address: 192.168.171.128#53
Name: test2.gongsi.com
Address: 200.200.200.200
[root@localhost ~]# nslookup www.baidu.com
Server: 192.168.171.128
Address: 192.168.171.128#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 39.156.66.14
Name: www.a.shifen.com
Address: 39.156.66.18

c).使用dig测试解析命令:
[root@localhost ~]# dig test1.gongsi.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13 <<>> test1.gongsi.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44245
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;test1.gongsi.com. IN A
;; ANSWER SECTION:
test1.gongsi.com. 3600 IN A 100.100.100.100
;; AUTHORITY SECTION:
gongsi.com. 3600 IN NS dns.gongsi.com.
;; ADDITIONAL SECTION:
dns.gongsi.com. 3600 IN A 192.168.171.128
;; Query time: 0 msec
;; SERVER: 192.168.171.128#53(192.168.171.128)
;; WHEN: Sat Jun 17 23:36:37 CST 2023
;; MSG SIZE rcvd: 95

反向解析测试:
a).使用host命令测试:
[root@localhost ~]# yum -y install bind bind-utils 客户端安装nslook测试命令
[root@localhost ~]# host 192.168.171.128
128.171.168.192.in-addr.arpa domain name pointer dns.gongsi.com.
[root@localhost ~]# host 192.168.171.101
101.171.168.192.in-addr.arpa domain name pointer fangxiang1.gongsi.com.
[root@localhost ~]# host 192.168.171.202
202.171.168.192.in-addr.arpa domain name pointer fangxiang2.gongsi.com.

b).使用nslookup测试解析命令:
[root@localhost ~]# nslookup 192.168.171.128
128.171.168.192.in-addr.arpa name = dns.gongsi.com.
[root@localhost ~]# nslookup 192.168.171.101
101.171.168.192.in-addr.arpa name = fangxiang1.gongsi.com.
[root@localhost ~]# nslookup 192.168.171.202
202.171.168.192.in-addr.arpa name = fangxiang2.gongsi.com.

案例2: 公司搭建内网DNS服务,使公司内网服务器,通过内网DNS解析内网域名和外网域名—域名正向和反向解析—内网DNS是主从情况
1).要求和场景条件:
a).搭建内网DNS服务器
b).内网所有服务器,配置的DNS服务器地址为:新搭建的内网DNS服务器地址,能让内网DNS解析内网域名
c).内网DNS服务器能访问外网DNS服务器并配置转发,可以配置内网DNS服务器能转发到外网的DNS,能让内网服务器解析外网域名
(因为:内网服务器配置的DNS是内网DNS的ip,如果内网DNS不能连网,那么内网服务器解析外网域名:如: www.baidu.com时会无法解析)
正向解析:
test1.gongsi.com 100.100.100.100
test2.gongsi.com 200.200.200.200
反向解析:
192.168.171.101 fangxiang1.gongsi.com
192.168.171.202 fanxiang2.gongsi.com

2).机器规划:
内网DNS服务器-主从:
主DNS: 192.168.171.128 (内网网卡,但是能通过nat能访问公网)
从DNS: 192.168.171.129 (内网网卡,但是能通过nat能访问公网)
内网linux服务器两台:
内网机器1: 192.168.171.130(内网网卡,能和主从DNS通信)
内网机器2: 192.168.171.131(内网网卡,能和主从DNS通信) )

3).搭建内网DNS服务器并配置域名正向解析:
内网DNS主服务器上操作: 192.168.171.128 (内网网卡,但是能通过nat能访问公网)
[root@localhost ~]# yum -y install bind bind-utils #也可: yum -y install bind bind-chroot
bind是主程序,其中bind-chroot和bind-utils是bind的相关包,bind-utils包含一些配置和测试工具, bind-chroot是一个安全增强工具
[root@localhost ~]# vim /etc/named.conf #编辑主配置文件:把设置监听端口,允许访问的客户端,修改两处为any
...
options {
listen-on port 53 { any; }; //监听地址及端口
........
allow-query { any; }; //允许谁向本台DNS发起查询请求 (localhost|ip|any)
forward first; //添加
forwarders { 223.5.5.5;223.6.6.6;8.8.8.8;8.8.4.4; }; //添加,配置dns转发到公网dns,就是内网机器配置仅配置内网dns后,还能解析公网域名
allow-transfer { 192.168.171.129; }; //添加,允许哪些IP地址能同步Master配置信息;
also-notify { 192.168.171.129; }; //添加,Master主动通知Slave域名变发生了变更
........
//查看其他默认配置:
//递归查询配置-默认配置:
recursion yes;
dnssec-enable yes;
dnssec-validation no; //改成no,否则可能会报错
....
//默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器-默认配置:
zone "." IN { //.”表示根域
type hint;
file "named.ca"; //记录了全世界根域的IP地址:/var/named/named.ca
};
......
//包含的其他文件:
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@localhost ~]# > /etc/named.rfc1912.zones #清空模板文件
[root@localhost ~]# vim /etc/named.rfc1912.zones #编辑其次配置文件:定义zone区域(正解或反解,也可定义多个区域)
zone "gongsi.com" IN { // 正解:定义的域名是:gongsi.com
type master; // 主DNS
file "gongsi.zone"; // 正解域名区域文件,名字必须以.zone结尾即可
};
zone "171.168.192.in-addr.arpa" IN { // 反解: gongsi.com域名的反解
type master; // 主DNS
file "192.zone"; // 反解域名区域文件,名字必须以.zone结尾即可
};
[root@localhost ~]# vim /var/named/gongsi.zone #正向解析配置
$TTL 3600 ;DNS失效时间,单位:秒
@ IN SOA dns1.gongsi.com. 1441107787.qq.com. ( ;权威服务器和管理员邮箱,区域名称可以使用过@表示, @表示:当前域
2023061701 ;序列号(serial number)十进制,不能超过10位,通常使用日期时间戳
10800 ;刷新时间(refresh time),即每隔多久到主服务器检查一次
900 ;重试时间(retry time),即刷新不成功多久后重试,应该小于refresh time
604800 ;过期时间(expire time),当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的
86400 ;权威应答的ttl(netgative answer ttl);缓存DNS服务器可以缓存记录多长时间
)
@ IN NS dns1.gongsi.com. ;给客户端返回NS记录,gongsi.com的域名由哪几台权威服务器提供解析
@ IN NS dns2.gongsi.com. ;给客户端返回NS记录,gongsi.com的域名由哪几台权威服务器提供解析
;下面为A记录解析: 正向解析: 将域名解析成ip:
dns1 IN A 192.168.171.128 ;将域名: dns1.gongsi.com 解析到: 192.168.171.128
dns2 IN A 192.168.171.129 ;将域名: dns2.gongsi.com 解析到: 192.168.171.129
test1 IN A 100.100.100.100 ;将test1.gongsi.com 解析到: 100.100.100.100
test2 IN A 200.200.200.200 ;将test2.gongsi.com 解析到: 200.200.200.200
[root@localhost ~]# vim /var/named/192.zone #反向解析配置
$TTL 3600 ;DNS失效时间,单位:秒
@ IN SOA dns1.gongsi.com. 1441107787.qq.com. ( ;权威服务器和管理员邮箱,区域名称可以使用过@表示, @表示:当前域
2023061701 ;序列号(serial number)十进制,不能超过10位,通常使用日期时间戳
10800 ;刷新时间(refresh time),即每隔多久到主服务器检查一次
900 ;重试时间(retry time),即刷新不成功多久后重试,应该小于refresh time
604800 ;过期时间(expire time),当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的
86400 ;权威应答的ttl(netgative answer ttl);缓存DNS服务器可以缓存记录多长时间
)
@ IN NS dns1.gongsi.com. ;给客户端返回NS记录,gongsi.com的域名由哪几台权威服务器提供解析
@ IN NS dns2.gongsi.com. ;给客户端返回NS记录,gongsi.com的域名由哪几台权威服务器提供解析
;下面为PTR记录解析: 反向解析: 将域名解析成ip:
128 IN PTR dns1.gongsi.com. ;注意ip是反着写,结果是: 将ip: 192.168.171.128解析为: dns.gongsi.com
129 IN PTR dns2.gongsi.com. ;注意ip是反着写,结果是: 将ip: 192.168.171.128解析为: dns.gongsi.com
101 IN PTR fangxiang1.gongsi.com. ;注意ip是反着写,结果是: 将ip: 192.168.171.101解析为: fangxiang1.gongsi.com
202 IN PTR fangxiang2.gongsi.com. ;注意ip是反着写,结果是: 将ip: 192.168.171.102解析为: fangxiang2.gongsi.com
[root@localhost ~]# systemctl enable named
[root@localhost ~]# systemctl restart named #启动DNS服务
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2023-06-17 20:00:32 CST; 2min 53s ago


内网DNS从服务器上操作: 192.168.171.129 (内网网卡,但是能通过nat能访问公网)
[root@localhost ~]# yum -y install bind bind-utils #也可: yum -y install bind bind-chroot
bind是主程序,其中bind-chroot和bind-utils是bind的相关包,bind-utils包含一些配置和测试工具, bind-chroot是一个安全增强工具
[root@localhost ~]# vim /etc/named.conf #编辑主配置文件:把设置监听端口,允许访问的客户端,修改两处为any
...
options {
listen-on port 53 { any; }; //监听地址及端口
........
allow-query { any; }; //允许谁向本台DNS发起查询请求 (localhost|ip|any)
forward first; //添加
forwarders { 223.5.5.5;223.6.6.6;8.8.8.8;8.8.4.4; }; //添加,配置dns转发到公网dns,就是内网机器配置仅配置内网dns后,还能解析公网域名
........
//查看其他默认配置:
//递归查询配置-默认配置:
recursion yes;
dnssec-enable yes;
dnssec-validation no; //改成no,否则可能会报错
....
//默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器-默认配置:
zone "." IN { //.”表示根域
type hint;
file "named.ca"; //记录了全世界根域的IP地址:/var/named/named.ca
};
......
//包含的其他文件:
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@localhost ~]# > /etc/named.rfc1912.zones #清空模板文件
[root@localhost ~]# vim /etc/named.rfc1912.zones #编辑其次配置文件:定义zone区域(正解或反解,也可定义多个区域)
zone "gongsi.com" IN { // 正解:定义的域名是:gongsi.com
type slave; // 从DNS
file "slaves/gongsi.zone"; // 正解域名区域文件,名字必须以.zone结尾即可,该文件会从主DNS同步过来自动形成
masters { 192.168.171.128; }; // 指向主DNS
};
zone "171.168.192.in-addr.arpa" IN { // 反解: gongsi.com域名的反解
type slave; // 从DNS
file "slaves/192.zone"; // 反解域名区域文件,名字必须以.zone结尾即可,该文件会从主DNS同步过来自动形成
masters { 192.168.171.128; }; // 指向主DNS
};
[root@localhost ~]# ls /var/named/slaves/

[root@localhost ~]# systemctl restart named
[root@localhost ~]# ls /var/named/slaves/
192.zone gongsi.zone #这两个文件是加密的
[root@localhost ~]# systemctl enable named
[root@localhost ~]# systemctl restart named #启动DNS服务
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2023-06-17 20:00:32 CST; 2min 53s ago

4).内网liinx服务器,指向内网DNS服务器,指向主或从或主从两个都可以,测试域名正向解析和反向解析:
内网linux服务器两台上操作:
内网机器1: 192.168.171.130(内网网卡,能和主从DNS通信) 内网机器2: 192.168.171.131(内网网卡,能和主从DNS通信)
[root@localhost ~]# cat /etc/resolv.conf #下面以配置从DNS为例测试
nameserver 192.168.171.129 #或:nameserver 192.168.171.128
#或:nameserver 192.168.171.128
nameserver 192.168.171.129

正向解析测试:
a).使用ping命令测试:
[root@localhost ~]# ping test1.gongsi.com #dns能解析内网域名(虽然不通,能解析就可以了)
PING test1.gongsi.com (100.100.100.100) 56(84) bytes of data.
[root@localhost ~]# ping test2.gongsi.com
PING test2.gongsi.com (200.200.200.200) 56(84) bytes of data.
[root@localhost ~]# ping www.baidu.com #dns能解析外网域名(因为内网机器也能通过nat访问外网,所以能通)
#但是通不通外网和dns是否能解析没有直接关系,如果将dns删掉或配置成错误的dns,即使能通外网也解析不了域名
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=128 time=77.8 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=128 time=843 ms
[root@localhost ~]# ping www.sougou.com
PING www.sougou.com (221.122.82.30) 56(84) bytes of data.
64 bytes from 221.122.82.30 (221.122.82.30): icmp_seq=1 ttl=128 time=23.1 ms
64 bytes from 221.122.82.30 (221.122.82.30): icmp_seq=2 ttl=128 time=15.4 ms

b).使用nslookup测试解析命令:
[root@localhost ~]# yum -y install bind bind-utils 客户端安装nslook测试命令
[root@localhost ~]# nslookup test1.gongsi.com
Server: 192.168.171.129
Address: 192.168.171.129#53
Name: test1.gongsi.com
Address: 100.100.100.100
[root@localhost ~]# nslookup test2.gongsi.com
Server: 192.168.171.129
Address: 192.168.171.129#53
Name: test2.gongsi.com
Address: 200.200.200.200
[root@localhost ~]# nslookup www.baidu.com
Server: 192.168.171.129
Address: 192.168.171.129#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 39.156.66.14
Name: www.a.shifen.com
Address: 39.156.66.18

c).使用dig测试解析命令:
[root@localhost ~]# dig test1.gongsi.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13 <<>> test1.gongsi.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27250
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;test1.gongsi.com. IN A
;; ANSWER SECTION:
test1.gongsi.com. 3600 IN A 100.100.100.100
;; AUTHORITY SECTION:
gongsi.com. 3600 IN NS dns2.gongsi.com.
gongsi.com. 3600 IN NS dns1.gongsi.com.
;; ADDITIONAL SECTION:
dns1.gongsi.com. 3600 IN A 192.168.171.128
dns2.gongsi.com. 3600 IN A 192.168.171.129
;; Query time: 0 msec
;; SERVER: 192.168.171.129#53(192.168.171.129)
;; WHEN: Sun Jun 18 08:39:32 CST 2023
;; MSG SIZE rcvd: 131

反向解析测试:
a).使用host命令测试:
[root@localhost ~]# yum -y install bind bind-utils 客户端安装nslook测试命令
[root@localhost ~]# host 192.168.171.128
128.171.168.192.in-addr.arpa domain name pointer dns1.gongsi.com.
[root@localhost ~]# host 192.168.171.101
101.171.168.192.in-addr.arpa domain name pointer fangxiang1.gongsi.com.
[root@localhost ~]# host 192.168.171.202
202.171.168.192.in-addr.arpa domain name pointer fangxiang2.gongsi.com.

b).使用nslookup测试解析命令:
[root@localhost ~]# nslookup 192.168.171.128
128.171.168.192.in-addr.arpa name = dns1.gongsi.com.
[root@localhost ~]# nslookup 192.168.171.129
129.171.168.192.in-addr.arpa name = dns2.gongsi.com.
[root@localhost ~]# nslookup 192.168.171.101
101.171.168.192.in-addr.arpa name = fangxiang1.gongsi.com.
[root@localhost ~]# nslookup 192.168.171.202
202.171.168.192.in-addr.arpa name = fangxiang2.gongsi.com.

案例3: DNS的子域授权,公司搭建内网DNS服务的子域授权—域名正向解析—内网DNS是单点情况
两个DNS服务器:在DNS1服务器(父域)上授权DNS2服务器(子域)能管理一个域的解析。
例如: 192.168.171.128(父域)DNS服务器上授权给DNS服务器192.168.171.129(子域),让它能管理bj.gongsi.com这个区域,
让客户端访问client1.bj.gongsi.com时,能解析到1.1.1.1

机器规划:
父域DNS:192.168.171.128主机 gongsi.com
子域DNS:192.168.171.129主机 bj.gongsi.com

正向解析结果:
父域解析:
www1.gongsi.com 5.5.5.5
www2.gongsi.com 6.6.6.6
子域解析:
z1.bj.gongsi.com 10.10.10.10
z2.bj.gongsi.com 20.20.20.20

父域DNS服务器上操作: 192.168.171.128 (内网网卡,但是能通过nat能访问公网)
[root@localhost ~]# yum -y install bind bind-utils #也可: yum -y install bind bind-chroot
bind是主程序,其中bind-chroot和bind-utils是bind的相关包,bind-utils包含一些配置和测试工具, bind-chroot是一个安全增强工具
[root@localhost ~]# vim /etc/named.conf #编辑主配置文件:把设置监听端口,允许访问的客户端,修改两处为any
...
options {
listen-on port 53 { any; }; //监听地址及端口
........
allow-query { any; }; //允许谁向本台DNS发起查询请求 (localhost|ip|any)
........
//查看其他默认配置:
//递归查询配置-默认配置:
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
....
//默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器-默认配置:
zone "." IN { //.”表示根域
type hint;
file "named.ca"; //记录了全世界根域的IP地址:/var/named/named.ca
};
......
//包含的其他文件:
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@localhost ~]# > /etc/named.rfc1912.zones #清空模板文件
[root@localhost ~]# vim /etc/named.rfc1912.zones #编辑其次配置文件:定义zone区域(正解或反解,也可定义多个区域)
zone "gongsi.com" IN { // 正解:定义的域名是:gongsi.com
type master; // 主DNS
file "gongsi.zone"; // 正解域名区域文件,名字必须以.zone结尾即可
};
[root@localhost ~]# vim /var/named/gongsi.zone #正向解析配置
$TTL 3600 ;DNS失效时间,单位:秒
@ IN SOA dns.gongsi.com. 1441107787.qq.com. ( ;权威服务器和管理员邮箱,区域名称可以使用过@表示, @表示:当前域
2023061701 ;序列号(serial number)十进制,不能超过10位,通常使用日期时间戳
10800 ;刷新时间(refresh time),即每隔多久到主服务器检查一次
900 ;重试时间(retry time),即刷新不成功多久后重试,应该小于refresh time
604800 ;过期时间(expire time),当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的
86400 ;权威应答的ttl(netgative answer ttl);缓存DNS服务器可以缓存记录多长时间
)
@ IN NS dns.gongsi.com. ;给客户端返回NS记录,gongsi.com的域名由哪几台权威服务器提供解析
dns IN A 192.168.171.128 ;将父域管理员域名: dns.gongsi.com 解析到父域DNS: 192.168.171.128
bj.gongsi.com. IN NS server129.bj.gongsi.com. ;授权子域: bj.gognsi.com给129的子域DNS服务器,并给一个子域管理员的域名
server129.bj.gongsi.com. IN A 192.168.171.129 ;子域管理的域名解析到子域DNS的ip
www1 IN A 5.5.5.5 ;父域的正常A记录解析
www2 IN A 6.6.6.6 ;父域的正常A记录解析
[root@localhost ~]# systemctl enable named
[root@localhost ~]# systemctl restart named #启动DNS服务
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2023-06-17 20:00:32 CST; 2min 53s ago

子域DNS服务器上操作: 192.168.171.129 (内网网卡,但是能通过nat能访问公网)
[root@localhost ~]# yum -y install bind bind-utils #也可: yum -y install bind bind-chroot
bind是主程序,其中bind-chroot和bind-utils是bind的相关包,bind-utils包含一些配置和测试工具, bind-chroot是一个安全增强工具
[root@localhost ~]# vim /etc/named.conf #编辑主配置文件:把设置监听端口,允许访问的客户端,修改两处为any
...
options {
listen-on port 53 { any; }; //监听地址及端口
........
allow-query { any; }; //允许谁向本台DNS发起查询请求 (localhost|ip|any)
........
//查看其他默认配置:
//递归查询配置-默认配置:
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
....
//默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器-默认配置:
zone "." IN { //.”表示根域
type hint;
file "named.ca"; //记录了全世界根域的IP地址:/var/named/named.ca
};
......
//包含的其他文件:
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@localhost ~]# > /etc/named.rfc1912.zones #清空模板文件
[root@localhost ~]# vim /etc/named.rfc1912.zones #编辑其次配置文件:定义zone区域(正解或反解,也可定义多个区域)
zone "bj.gongsi.com" IN { // 正解:定义的域名是子域名:bj.gongsi.com
type master; // 主DNS
file "bj.gongsi.zone"; // 正解 子域名区域文件,名字必须以.zone结尾即可
};
[root@localhost ~]# vim /var/named/bj.gongsi.zone #编辑子域区域文件
$TTL 3600 ;DNS失效时间,单位:秒
@ IN SOA server129.bj.gongsi.com. 1441107787.qq.com. ( ;权威服务器和子域管理员邮箱,区域名称可以使用过@表示, @表示:当前域
2023061701 ;序列号(serial number)十进制,不能超过10位,通常使用日期时间戳
10800 ;刷新时间(refresh time),即每隔多久到主服务器检查一次
900 ;重试时间(retry time),即刷新不成功多久后重试,应该小于refresh time
604800 ;过期时间(expire time),当辅助DNS无法联系主DNS时,辅助DNS在多长时间内认为其缓存是有效的
86400 ;权威应答的ttl(netgative answer ttl);缓存DNS服务器可以缓存记录多长时间
)
@ IN NS server129.bj.gongsi.com. ;给客户端返回NS记录,子域名bj.gongsi.com的域名由哪几台权威服务器提供解析
server129.bj.gongsi.com. IN A 192.168.171.129 ;将子域管理的域名解析到子域DNS的ip
z1.bj.gongsi.com. IN A 10.10.10.10 ;子域的正常A记录解析
z2.bj.gongsi.com. IN A 20.20.20.20 ;子域的正常A记录解析
[root@localhost ~]# systemctl enable named
[root@localhost ~]# systemctl restart named #启动DNS服务
[root@localhost ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2023-06-17 20:00:32 CST; 2min 53s ago

内网liinx服务器,指向内网DNS服务器,可同时指向父域DNS和子域DNS,测试父域名和子域名的正向解析:
内网linux服务器两台上操作:
内网机器1: 192.168.171.130(内网网卡,能和主从DNS通信) 内网机器2: 192.168.171.131(内网网卡,能和主从DNS通信)
[root@localhost ~]# cat /etc/resolv.conf #下面以配置从DNS为例测试
nameserver 192.168.171.128
nameserver 192.168.171.129
a).使用ping命令测试:
[root@localhost ~]# ping www1.gongsi.com #父域名解析
PING www1.gongsi.com (5.5.5.5) 56(84) bytes of data.
[root@localhost ~]# ping www2.gongsi.com #父域名解析
PING www2.gongsi.com (6.6.6.6) 56(84) bytes of data.
[root@localhost ~]# ping z1.bj.gongsi.com #子域名解析
PING z1.bj.gongsi.com (10.10.10.10) 56(84) bytes of data.
[root@localhost ~]# ping z2.bj.gongsi.com #子域名解析
PING z2.bj.gongsi.com (20.20.20.20) 56(84) bytes of data.

b).使用nslookup测试解析命令:
[root@localhost ~]# yum -y install bind bind-utils 客户端安装nslook测试命令
[root@localhost ~]# nslookup www1.gongsi.com #父域名解析
Server: 192.168.171.128
Address: 192.168.171.128#53
Name: www1.gongsi.com
Address: 5.5.5.5
[root@localhost ~]# nslookup www2.gongsi.com #父域名解析
Server: 192.168.171.128
Address: 192.168.171.128#53
Name: www2.gongsi.com
Address: 6.6.6.6
[root@localhost ~]# nslookup z1.bj.gongsi.com #子域名解析
Server: 192.168.171.128 #如果同时配置父域和子域DNS的ip,会显示父域的,如果只配置子域的DNS的ip,则会只显示子域的
Address: 192.168.171.128#53
Non-authoritative answer:
Name: z1.bj.gongsi.com
Address: 10.10.10.10
[root@localhost ~]# nslookup z2.bj.gongsi.com #子域名解析
Server: 192.168.171.128 #如果同时配置父域和子域DNS的ip,会显示父域的,如果只配置子域的DNS的ip,则会只显示子域的
Address: 192.168.171.128#53
Non-authoritative answer:
Name: z2.bj.gongsi.com
Address: 20.20.20.20

c).使用dig测试解析命令:
[root@localhost ~]# dig www1.gongsi.com #父域解析
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13 <<>> www1.gongsi.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21591
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www1.gongsi.com. IN A
;; ANSWER SECTION:
www1.gongsi.com. 3600 IN A 5.5.5.5
;; AUTHORITY SECTION:
gongsi.com. 3600 IN NS dns.gongsi.com.
;; ADDITIONAL SECTION:
dns.gongsi.com. 3600 IN A 192.168.171.128
;; Query time: 0 msec
;; SERVER: 192.168.171.128#53(192.168.171.128)
;; WHEN: Sun Jun 18 23:37:43 CST 2023
;; MSG SIZE rcvd: 94
[root@localhost ~]# dig z1.bj.gongsi.com #子域解析
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.13 <<>> z1.bj.gongsi.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48413
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;z1.bj.gongsi.com. IN A
;; ANSWER SECTION:
z1.bj.gongsi.com. 2694 IN A 10.10.10.10
;; AUTHORITY SECTION:
bj.gongsi.com. 3600 IN NS server129.bj.gongsi.com.
;; Query time: 0 msec
;; SERVER: 192.168.171.128#53(192.168.171.128)
;; WHEN: Sun Jun 18 23:37:52 CST 2023
;; MSG SIZE rcvd: 85
 

 

;