主要内容:
DNS服务基础及搭建、特殊解析(针对地址库文件:DNS轮询 DNS泛域名解析 DNS别名)、缓存DNS(全局转发forwarders)、DNS递归迭代(子域授权)、DNS主从架构搭建、DNS主从数据同步
一、DNS工作原理
DNS域名解析系统(Domain Name System)
介绍:域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程,域名的解析工作由DNS服务器完成。
功能:
- 正向解析:根据注册的域名查找其对应的IP地址;
- 反向解析:根据IP地址查找对应的注册域名,不常用;
DNS服务器分类:
根域名服务器(权威DNS仅13台)、一级DNS服务器、二级DNS服务器、三级DNS服务器
DNS的分布式结构(大型,分布式的互联网DNS解析库)
根域名:即域名结尾的点(DNS域名默认会补全结尾的【.】)
例如: www.qq.com —> www.qq.com.
补充:根域名服务器负责专门维护结尾的点;
常见的顶级/一级域名:
- ① 国家/地区域:.cn .us .kr .hk .tw ...
- ② 组织域:.com .net .edu .org .gov .mil ...
FQDN完全合格主机名(Full Qualified Domain Name)
(完全合格主机名 = 站点名.注册域名后缀)
例如:站点名. .. .二级域.一级域.
DNS域名管理(了解)
IANA互联网数字分配机构(Internet Assigned Numbers Authority)
- 整个域名系统的最高权威机构
- 主管DNS根、.int、.arpa等国际化域名资源
CNNIC中国互联网络信息中心(China Internet Network Information Center)
- 主管国家顶级域.cn
域名代理/注册/购买服务商
- 新网,http://www.xinnet.com
- 万网,http://www.net.cn
- 中国互联,http://hulian.top
二、BIND服务分析
BIND(Berkeley Internet Name Domain)是一种开源的域名系统(DNS)软件,用于将域名转换为IP地址,从而实现互联网上的主机名解析。BIND由加州大学伯克利分校开发,现在由Internet Systems Consortium(ISC)维护和开发。
BIND服务的主要功能包括:
域名解析:BIND将人类可读的域名(如www.example.com)转换为计算机可理解的IP地址(如192.0.2.1),这是互联网通信的基础。
权威名称服务器:BIND可以配置为权威名称服务器,负责特定域名的解析。权威名称服务器存储并提供特定域名的DNS记录。
递归名称服务器:BIND也可以配置为递归名称服务器,为客户端提供完整的域名解析服务。递归服务器会代表客户端查询其他DNS服务器,直到找到所需的IP地址。
缓存名称服务器:BIND可以缓存查询结果,以提高后续相同查询的响应速度,减少网络流量。
BIND的工作原理基于客户端-服务器模型:
- DNS客户端:通常是操作系统或应用程序,发送DNS查询请求。
- DNS服务器:运行BIND软件的计算机,接收并处理DNS查询请求,返回相应的IP地址或其他DNS记录。
BIND支持多种配置选项和安全特性,如DNSSEC(DNS Security Extensions),用于增强DNS的安全性,防止DNS欺骗和缓存投毒等攻击。
1)BIND服务器端程序
- 主要执行程序:/usr/sbin/named
- 系统服务:named
- 所需软件包:bind(主程序)、bind-chroot(提供牢笼政策,安全,监控bind程序)
- 默认端口:TCP/UDP 53
- 运行时的虚拟根环境:/var/named/chroot
2)DNS配置文件
- 主配置文件:/etc/named.conf //设置负责解析的域名(需要提前备份)
- 地址库文件:/var/named/.. //完全合格的主机名与IP地址对应关系
注意:主配置文件的3种注释方法:[ // ]或[ /* 内容 */ ]或[ # ]
注意:每一个[ {}; 及 ;]分号后面严禁多空格,但空行可以
注意:每一个[ {}; ]成对出现
3)/etc/named.conf主配置文件
① 全局配置部分,设置监听地址/端口、地址库存放位置等
关键信息解析:
[Directory] 定义地址库文件的默认存放路径
注意:allow-query{any;};中的any,代表任何人查询,该条记录不加也默认全部
注意:listen-on port 53 { any; };可以使本机所有地址可以响应,删除该条记录后,没有指定则默认允许所有地址监听53端口;
② 区域配置部分,定义DNS区域、类型、地址文件路径等
关键信息解析:
[Zone] 定义解析域名区域
[IN] 表示Internet
[Type] 类型:master(主)或slave(从)
[File] 指定地址库文件(建议文件名:解析域名开头.zone结尾)
4)地址库文件(默认在/var/named/下)
建立地址库文件条件:
① 保证named用户对地址库文件有读取权限;
② 所有的域名都要以点作为结尾,如果没有以点作为结尾,那么默认补全主配置文件负责的域名;
全局TTL配置项及SOA记录:
- $TTL(Time To Live生存时间)
- SOA(Start Of Authority授权信息开始)
- 分号”;”开始的部分表示注释
关键信息解析:
[NS] 域名服务器(Name Server)记录
[A] 地址(Address)记录,仅用于正向解析区域(ipv4地址解析记录)
[AAAA] 地址(Address)记录,ipv6地址解析记录
5)检查配置语法
① 检测主配置文件是否正确(仅供参考)
命令:named-checkconf 主配置文件(/etc/named.conf)
[root@svr7 ~]# named-checkconf /etc/named.conf
如图:
② 检测地址库文件是否正确(仅供参考)
命令:named-checkzone 解析域名 地址库文件
[root@svr7 ~]# named-checkzone tedu.cn /var/named/tedu.cn.zone
zone tedu.cn/IN: loaded serial 0
OK
如图:
6)软件包bind-utils提供以下域名查询工具 :
① 使用Host测试命令,指定DNS地址
命令:host 查询域名或IP地址 [DNS服务器地址]
② nslookup域名解析测试
命令:nslookup 查询域名或IP地址 [DNS服务器地址]
③ dig深度挖掘查询工具
命令:dig 查询域名或IP地址 [@DNS服务器地址] [-t 资源类型]
示例:构建DNS服务器
步骤1:安装软件包
[root@svr7 ~]# yum -y install bind bind-chroot.x86_64
[root@svr7 ~]# rpm -q bind bind-chroot
bind-9.9.4-61.el7.x86_64
bind-chroot-9.9.4-61.el7.x86_64
步骤2:备份DNS的主配置文件
[root@svr7 ~]# cp /etc/named.conf /root/ //备份主配置文件
步骤3:修改主配置文件内容
[root@svr7 ~]# cat /etc/named.conf //查看主配置文件原内容
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { 127.0.0.1; }; //监听端口53和本机的IPv4地址
listen-on-v6 port 53 { ::1; }; //监听端口53和本机的IPv6地址
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";
allow-query { localhost; }; //允许本机参与
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable yes; //安全的DNS配置
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones"; //Include可调用其它配置文件
include "/etc/named.root.key";
删除并保留关键配置信息:
[root@svr7 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint; //hint针对于根域名
file "named.ca";
};
修改相关关键配置:
options {
directory "/var/named"; //定义地址库文件默认存放路径
};
zone "tedu.cn" IN { //定义负责的解析tedu.cn域名(定义正向区域)
type master; //权威主DNS服务器(区域类型为主DNS)
file "tedu.cn.zone"; //地址库文件
};
步骤4:通过复制named.localhost模板,建立地址库文件
[root@svr7 ~]# cd /var/named/
[root@svr7 named]# ls
chroot dynamic named.empty named.loopback
data named.ca named.localhost slaves
[root@svr7 named]# cp named.localhost tedu.cn.zone //错误方式
[root@svr7 named]# ls -l tedu.cn.zone
-rw-r-----. 1 root root 152 3月 17 10:59 tedu.cn.zone
注意:DNS服务需要以named身份运行,不能Root权限运行,假设DNS被攻击,权限太大后果严重,且named不属于属主root,属组root,其他人也没有r权限
[root@svr7 ~]# id named //自动生成用户
uid=25(named) gid=25(named) 组=25(named)
[root@svr7 named]# ls -l named.localhost //权限为640,属组named
-rw-r-----. 1 root named 152 6月 21 2007 named.localhost
[root@svr7 named]# ls -l /etc/named.conf //权限为640,属组named
-rw-r-----. 1 root named 498 3月 17 10:54 /etc/named.conf
[root@svr7 named]# cp -p named.localhost tedu.cn.zone //保持权限进行复制
cp:是否覆盖"tedu.cn.zone"? yes
[root@svr7 named]# ls -l tedu.cn.zone
-rw-r-----. 1 root named 152 6月 21 2007 tedu.cn.zone
注意1:地址库文件的命名,必须按照/etc/named.conf主配置文件中指定的地址库文件修改;
注意2:DNS软件包安装后会自动生成named 用户,所有的DNS运行会以named身份运行,且所有相关的配置文件权限为640,属组都为named,在此情况下建议修改新建的地址库文件的属组,使其有r权限;补充:cp -p保持权限和归属关系不变进行复制
步骤5:修改地址库文件
[root@svr7 ~]# cat /var/named/tedu.cn.zone //查看地址库文件内容
$TTL 1D //$TTL(Time To Live生存时间)
@ IN SOA @ rname.invalid. ( //SOA(Start Of Authority授权信息开始)
0 ; serial //分号”;”开始的部分表示注释
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @ //NS,域名服务器(Name Server)记录
A 127.0.0.1 //A,ipv4地址解析记录
AAAA ::1 //AAAA,ipv6地址解析记录
修改相关关键配置:
[root@svr7 ~]# vim /var/named/tedu.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
tedu.cn. NS svr7 //建议写主机名svr7.tedu.cn(保证上下一致)
svr7 A 192.168.4.7 //svr7解析结果为192.168.4.7
www A 1.1.1.1
ftp A 2.2.2.2
解释:tedu.cn域名区域 — NS名字服务器声明 — 由svr7.tedu.cn负责
- 注意1:NS前面的域名区域可以空白不写,因主配置文件zone已定义【tedu.cn】,所以在地址库文件的域名区域位置会自动补全tedu.cn.
- 注意2:地址库文件要求完全合格主机名,所以必须要以[ . ]点结尾(例如:tedu.cn.),若不加点,会按照主配置文件定义自动补全tedu.cn.,一般建议只需写站点名即可;
- 注意3:由上NS声明记录,至下A正向解析记录(NS记录必须在A记录前面)
- 注意4:主配置文件要求域名区域不能以【.】结尾,地址库文件要求必须以【.】结尾(默认补全);
步骤6:检测主配置文件和地址库文件是否正确
[root@svr7 ~]# named-checkconf /etc/named.conf //无输出则无错误
[root@svr7 ~]# named-checkzone tedu.cn /var/named/tedu.cn.zone
zone tedu.cn/IN: loaded serial 0
OK
步骤7:重启服务
[root@svr7 ~]# systemctl restart named
步骤8:服务验证(主机A或主机B都可以,都需要修改/etc/resolv.conf)
[root@svr7 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf //指定DNS解析
[root@svr7 ~]# cat /etc/resolv.conf
nameserver 192.168.4.7
[root@svr7 ~]# nslookup svr7.tedu.cn //nslookup域名解析测试
Server: 192.168.4.7 //来自192.192.168.4.7回应
Address: 192.168.4.7#53 //53端口
Name: svr7.tedu.cn
Address: 192.168.4.7
[root@svr7 ~]# nslookup www.tedu.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.tedu.cn
Address: 1.1.1.1
[root@svr7 ~]# nslookup ftp.tedu.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: ftp.tedu.cn
Address: 2.2.2.2
常见报错:超时报错
- 原因1:未配置/etc/resolv.conf或找不到指定解析的DNS服务器,则将解析请求指向127.0.0.1去解析,如果本机不是DNS则解析超时;
- 原因2:地址库文件权限不足
- 原因3:防火墙与SELinux限制
[root@svr7 ~]# nslookup ftp.tedu.cn
;; connection timed out; no servers could be reached
- 补充:nslookup测试解析时,默认先查看/etc/resolv.conf里是否有指定的DNS服务器可以去进行解析测试;当/etc/resolv.conf没有指定使用的DNS服务器,则尝试将请求给回本机127.0.0.1,假如本机是一台DNS服务器,则由本机进行解析,如果本机不是DNS服务器,则回复超时;
- 补充:/etc/hosts文件为本地解析(没有DNS情况下使用),相比/etc/resolv.conf文件,优先级最高
常见报错:拷贝到地址库权限不足(cp -p)
[root@svr7 named]# nslookup www.lol.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
** server can't find www.lol.cn: SERVFAIL
常见报错:检查地址库配置语法时,输入的区域不存在则报错
[root@svr7 named]# named-checkzone lol22.com lol.cn.zone
lol.cn.zone:8: ignoring out-of-zone data (lol.cn)
zone lol.com/IN: has no NS records
zone lol.com/IN: not loaded due to errors.
常见报错:has no NS reords.. 地址库文件的域名没有加根域名[ . ]
[root@svr7 named]# named-checkzone lol22.com lol.cn.zone
lol.cn.zone:8: ignoring out-of-zone data (lol.cn)
zone lol.com/IN: has no NS records
zone lol.com/IN: not loaded due to errors.
解决办法:
[root@svr7 ~]# vim /var/named/tedu.cn.zone
gz.tedu.cn. NS pc207
pc207 A 192.168.4.207
www A 14.14.14.14
DNS查询测试
方法1:
[root@pc207 ~]# host www.lol.com 192.168.4.207
Using domain server:
Name: 192.168.4.207
Address: 192.168.4.207#53
Aliases:
www.lol.com has address 11.12.13.14
方法2:
[root@pc207 ~]# nslookup www.lol.com 192.168.4.207
Server: 192.168.4.207
Address: 192.168.4.207#53
Name: www.lol.com
Address: 11.12.13.14
总结:快速搭建DNS服务器基本思路
- 安装软件包bind、bind-chroot
- 备份并修改主配置文件/etc/named.conf
- 复制模板并建立地址库文件/var/name/.. ..
- 检测主配置文件、地址库文件语法是否错误named-checkconf、namd-checkzone
- 重启服务named
- 检测DNS解析nslookup
案例:多区域域名解析(在主配置文件中,每新增一个zone,则对应一个地址库文件)
[root@svr7 ~]# vim /etc/named.conf //修改主配置文件
options {
directory "/var/named";
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "lol.com" IN { //新增加一个解析区域
type master;
file "lol.com.zone";
};
[root@svr7 ~]# cd /var/named/
[root@svr7 named]# cp -p tedu.cn.zone lol.com.zone //复制地址库文件
[root@svr7 named]# vim lol.com.zone //建立地址库文件
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
lol.com. NS svr7 //NS声明记录
svr7 A 192.168.4.7
www A 4.4.4.4 //正向解析记录
vip A 5.5.5.5
[root@svr7 named]# named-checkconf /etc/named.conf //检查配置语法
[root@svr7 named]# named-checkzone lol.com /var/named/lol.com.zone
zone lol.com/IN: loaded serial 0
OK
[root@svr7 named]# systemctl restart named //重启服务
[root@svr7 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@svr7 ~]# cat /etc/resolv.conf
nameserver 192.168.4.7
[root@svr7 ~]# nslookup svr7.lol.com
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: svr7.lol.com
Address: 192.168.4.7
注意:主配置文件里,不同的域名不能共用同一个地址库文件
三、特殊解析(针对地址库文件)
1)DNS轮询
基于DNS的站点负载均衡,一个域名对应多个不同解析IP,每个IP提供镜像服务内容;
补充:生产环境中不会用该方式进行负载均衡(了解)
例如:
[root@svr7 ~]# vim /var/named/lol.com.zone
[root@svr7 ~]# cat /var/named/lol.com.zone
...
lol.com. NS svr7
svr7 A 192.168.4.7
www A 192.168.4.10 //站点名相同,解析的IP地址不同
www A 192.168.4.20
www A 192.168.4.30
...
[root@svr7 ~]# systemctl restart named
[root@svr7 ~]# nslookup www.lol.com
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.lol.com
Address: 192.168.4.20
Name: www.lol.com
Address: 192.168.4.30
Name: www.lol.com
Address: 192.168.4.10
[root@svr7 ~]# ping www.lol.com
PING www.lol.com (192.168.4.20) 56(84) bytes of data.
...
[root@svr7 ~]# ping www.lol.com
PING www.lol.com (192.168.4.30) 56(84) bytes of data.
...
[root@svr7 ~]# ping www.lol.com
PING www.lol.com (192.168.4.10) 56(84) bytes of data.
...
2)DNS泛域名解析
匹配本域内未定义的任何主机地址,可以直接以[ * ]条目匹配,一般只用在正向区域文件中(最低优先级匹配,即使输入站点名错误,也可匹配)
例如:
[root@svr7 ~]# vim /var/named/tedu.cn.zone
...
tedu.cn. NS svr7
svr7 A 192.168.4.7
...
* A 6.6.6.6 //注意[ * ]不代表通配符,表示任意站点名
tedu.cn. A 7.7.7.7
[root@svr7 ~]# systemctl restart httpd
[root@svr7 ~]# nslookup sss.tedu.cn //输入不存在或未定义站点名
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: sss.tedu.cn
Address: 6.6.6.6
[root@svr7 ~]# nslookup tedu.cn //不写完整合格域名也可匹配(例如qq.com不写www)
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: tedu.cn
Address: 7.7.7.7
3)DNS的解析记录的别名
[CNAME] 解析记录的别名,解析结果与已存在的记录解析结果一致
注意:解析记录必须是已存在的
例如:
[root@svr7 ~]# vim /var/named/tedu.cn.zone
...
tedu.cn. NS svr7
svr7 A 192.168.4.7
...
ftp A 2.2.2.2
vip CNAME ftp //解析结果与ftp一致
[root@svr7 ~]# systemctl restart named
[root@svr7 ~]# nslookup vip.tedu.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
vip.tedu.cn canonical name = ftp.tedu.cn.
Name: ftp.tedu.cn
Address: 2.2.2.2
四、递归/迭代查询(递归/迭代解析)
- 递归查询:客户端发送请求给首选DNS服务器,首选DNS服务器与其他的DNS服务器交互,最终将解析结果带回来过程;
- 迭代查询: 客户端发送请求给首选DNS服务器,首选DNS服务器告知下一个DNS服务器地址;
DNS查询的工作方式:(经历一次递归,多次迭代)
例如:
- 主机1构建DNS服务器负责tedu.cn
- 主机2构建DNS服务器负责bj.tedu.cn
条件:主机1需要与主机2能够正常通行
[root@pc207 ~]# yum -y install bind bind-chroot
[root@pc207 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "bj.tedu.cn" IN {
type master;
file "bj.tedu.cn.zone";
};
[root@pc207 ~]# cd /var/named/
[root@pc207 ~]# cp -p named.localhost bj.tedu.cn.zone
[root@pc207 ~]# vim bj.tedu.cn.zone
...
bj.tedu.cn. NS pc207
pc207 A 192.168.4.207
www A 9.9.9.9
[root@pc207 ~]# systemctl restart named
[root@pc207 ~]# nslookup www.bj.tedu.cn 192.168.4.7 //nslookup支持指定DNS服务器地址
Server: 192.168.4.7
Address: 192.168.4.7#53
** server can’t find www.bj.tedu.cn: NXDOMAIN
补充:由于想让DNS主机1去解析主机2的bj.tedu.cn,在未做子域授权情况下,主机1是无法解析主机2的域名,需要进行子域授权。
- 主机1:子域授权
[root@svr7 /]# vim /var/named/tedu.cn.zone
tedu.cn. NS svr7
bj.tedu.cn. NS pc207 //增加主机2的NS说明记录
svr7 A 192.168.4.7
pc207 A 192.168.4.207 //增加主机2的解析记录
www A 192.168.4.20
ftp A 2.2.2.2
* A 4.4.4.4
tedu.cn. A 5.5.5.5
vip CNAME ftp
[root@svr7 /]# systemctl restart named
- 主机2:测试
[root@pc207 /]# nslookup www.bj.tedu.cn 192.168.4.7
Server: 192.168.4.7
Address: 192.168.4.7#53
Non-authoritative answer: //非权威解答(不是主机1的回答)
Name: www.bj.tedu.cn
Address: 9.9.9.9
1)开启/禁用递归
命令:[ recursion yes; ] 开启递归(递归查询默认开启)
命令:[ recursion no; ] 禁用递归
2)验证迭代查询
使用dig命令,更专业的DNS测试工具
由软件包 bind-utils 提供
格式:dig @DNS服务器 目标地址
五、缓存DNS概述
作用:缓存解析结果,加快访问,也可做访问限制;全球公共的缓存DNS:8.8.8.8、114.114.114.114
- 主用适用环境:互联网出口带宽较低的企业局域网络、IPS服务商的公共DNS服务器
缓存DNS结构特点:
- 在内网中搭建本地的缓存DNS服务器,无需访问外网缓存DNS服务器
- 本地的缓存DNS服务器转发指定的公共DNS服务器,把解析结果反馈客户端,并把解析结果记录在本地的内存,提高查询访问速度,重启后缓存数据丢失(类似递归)
注意:缓存DNS可以有区域配置和地址库文件,也可没有区域配置和地址库文件,有则专门进行解析了,没有则递归指定的DNS服务器解析。
解析记录来源:
方式1:全局转发,将请求转发给指定的公共DNS(其他缓存DNS),请求递归服务;
方式2:根域迭代,依次向根、一级、二级...域的DNS服务器迭代
六、全局转发式缓存
基本配置步骤:
1.建立named.conf主配置文件
命令:[ forwarders { 公共DNS; }; ] 转发器
2.重启named服务
3.验证缓存DNS服务器
例如:(主机A不做任何操作,只针对主机B操作)
[root@pc207 ~]# vim /etc/named.conf //只保留全局配置,删除区域配置
options {
directory "/var/named";
forwarders {192.168.4.7; }; //转发给192.168.4.7
};
[root@pc207 ~]# systemctl restart named //重启服务
[root@pc207 ~]# nslookup www.lol.com 192.168.4.207 //指定4.207,转发给4.7解析
Server: 192.168.4.207
Address: 192.168.4.207#53
Non-authoritative answer: //非权威解答(转发给4.7解析了)
Name: www.lol.com
Address: 1.1.1.1
七、DNS主/从架构概述
作用:提高可靠性,从DNS服务器备份主DNS服务器的数据
① 主域名服务器
- 特定DNS区域的官方服务器,具有唯一性;
- 负责维护该区域内所有的“域名IP地址”记录;
② 从域名服务器
- 也称为辅助域名服务器(可以没有)
- 其维护的“域名地址”记录取决于主域名服务器
案例环境:
- 主DNS服务器的IP地址为192.168.4.7/24
- 从DNS服务器的IP地址为192.168.4.207/24
- 其中任何一台都能提供lol.com域的主机查询,返回相同的解析结果
— 建立主DNS服务器:
步骤1:添加访问控制
- 在主配置文件,授权从DNS服务器,允许其下载地址记录
[root@svr7 ~]# man named.conf //可参考man帮助
[root@svr7 ~]# vim /etc/named.conf
options {
directory "/var/named";
allow-transfer { 192.168.4.207; }; //允许进行传输数据(未授权主机将不能作为从DNS)
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "lol.com" IN {
type master;
file "lol.com.zone";
};
注意:allow-transfer { 192.168.4.207; }; 需要注意必须有空格
步骤2:调整主DNS的解析记录
- 在地址库文件,设置主、从NS记录,并提供相应的A记录
[root@svr7 ~]# vim /var/named/lol.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
lol.com. NS svr7
lol.com. NS pc207 //增加从DNS服务器的NS声明
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 4.4.4.4
vip A 5.5.5.5
[root@svr7 ~]# systemctl restart named
步骤3:测试主DNS服务器
[root@svr7 ~]# nslookup pc207.lol.com
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: pc207.lol.com
Address: 192.168.4.207
— 建立从DNS服务器:
步骤1:安装软件包
[root@pc207 ~]# yum -y install bind bind-chroot.x86_64
[root@pc207 ~]# ls /var/named/
chroot dynamic named.empty named.loopback
data named.ca named.localhost slaves
[root@pc207 ~]# ls -ld /var/named/slaves/
drwxrwx---. 2 named named 6 4月 13 2018 /var/named/slaves/
补充:由于地址库文件默认存放在/var/named/目录下,而该目录对DNS的生成用户named只有r权限,需要wx权限,才能将主DNS下载的地址库文件保存;slave目录为主从配置准备,默认770权限
步骤2:从DNS的区域定义
[root@pc207 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "lol.com" IN {
type slave; //区域类型为从服务器
file "/var/named/slaves/lol.com.slave"; //指定地址库文件(确保named用户有读写执行权限)
masters { 192.168.4.7; }; //指定主DNS服务器
masterfile-format text; //地址库文件明文存储(不加此项,地址库文件为加密)
};
- 补充:从服务器根据指定的192.168.4.7即主服务器,请求并下载lol.com的地址库文件,命名为file指定的地址库文件名(不建议于主服务器地址库同名),因为是从服务器,建议命名为.salve结尾的文件;
- 补充:因无rwx权限,无法存放在/var/named目录,需指定存放目录/var/named/slaves/;
- 补充:可写相对路径salve/lol.com.salve
注意:指定主服务器的字段是:masters,type类型是master
步骤3:重启服务
[root@pc207 ~]# ls /var/named/slaves/ //显示为空
[root@pc207 ~]# systemctl restart named //重启从DNS服务
[root@pc207 ~]# ls /var/named/slaves/ //找到主DNS把相应的地址库文件进行下载
lol.com.slave
步骤4:验证服务
[root@pc207 ~]# vim /etc/resolv.conf //指定DNS解析IP
nameserver 192.168.4.7
nameserver 192.168.4.207
[root@pc207 ~]# nslookup pc207.lol.com
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: pc207.lol.com
Address: 192.168.4.207
常见问题:若不在/etc/resolv.conf增加DNS解析IP,则由本机DNS进行解析
[root@pc207 ~]# nslookup pc207.lol.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: pc207.lol.com
Address: 192.168.4.207
补充:/etc/resolv.conf 最多写3条
八、DNS主从数据同步
主机1:(主DNS服务器)
[root@svr7 /]# vim /var/named/lol.com.zone
...
2021031701 ; serial //数据的版本号,由10个数字组成
1D ; refresh //每隔1天主从进行数据交互
1H ; retry //失效之后的时间间隔每一个1小时
1W ; expire //真正的失效时间,1周
3H ) ; minimum //失效记录的记忆时间3小时
lol.com. NS svr7
lol.com. NS pc207
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 11.12.13.14 //修改记录
[root@svr7 /]# systemctl restart named
主机2:(从DNS服务器)
[root@pc207 /]# nslookup www.lol.com 192.168.4.207
Server: 192.168.4.207
Address: 192.168.4.207#53
Name: www.lol.com
Address: 11.12.13.14
补充:数据的版本号 数字越大越新
注意:数据版本更新,都要在主DNS服务器操作,否则导致服务失败
扩展:DNS记录类型介绍
1)NS记录
NS记录 NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。 您注册域名时,总有默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析的,DNS服务器NS记录地址一般以以下的形式出现: ns1.domain.com、ns2.domain.com等。 简单的说,NS记录是指定由哪个DNS服务器解析你的域名
2)A记录
A记录 A(Address)记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置域名的子域名。通俗来说A记录就是服务器的IP,域名绑定A记录就是告诉DNS,当你输入域名的时候给你引导向设置在DNS的A记录所对应的服务器。 简单的说,A记录是指定域名对应的IP地址
3)MX记录
MX记录 MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@mydomain.com 时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上
4)CHAME记录(—>DNS的解析记录的别名)
CNAME记录 CNAME(Canonical Name )别名记录,允许您将多个名字映射到同一台计算机。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为 “host.mydomain.com”(A记录),它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL, 这两个别名的全称就“www.mydomain.com”和“mail.mydomain.com”,实际上他们都指向 “host.mydomain.com”
扩展:/etc/hosts 和 /etc/resolv.conf
1)/etc/hosts文件(负责ip地址与域名快速解析的文件)
用途:将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址;(不同的linux版本,文件名也可能不同,比如Debian的对应文件是/etc/hostname)
hosts文件包含了ip地址和主机名之间的映射,包括主机名的别名,在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用DNS服务程序来解决;通常可以将常用的域名和ip地址映射加入到hosts文件中,实现快速方便的访问
2)优先级:dns缓存 > hosts > dns服务
3)/etc/resolv.conf文件(可以提供DNS服务器域名和IP地址,帮助解析)
用途:/etc/resolv.conf是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。
/etc/resolv.conf文件的关键字
- - nameserver //定义DNS服务器的IP地址
- - domain //定义本地域名
- - search //定义域名的搜索列表
- - sortlist //对返回的域名进行排序
小结:
本篇章节为 【第一阶段】SERVICES-DAY2 的学习笔记,可以初步了解到 DNS服务基础及搭建、特殊解析(针对地址库文件:DNS轮询 DNS泛域名解析 DNS别名)、缓存DNS(全局转发forwarders)、DNS递归迭代(子域授权)、DNS主从架构搭建、DNS主从数据同步。除此之外推荐参考相关学习网址:
- 什么是 DNS_DNS如何工作_权威性DNS服务器 | Cloudflare 中国官网 | Cloudflare
Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解