DNS工作原理&配置
DNS服务器的功能
正向解析:根据注册的域名查找其对应的IP地址
反向解析:根据ip地址查找对应的注册域名,不常用
一级DNS服务器 二级DNS服务器 三级DNS服务器
所有域名都要以点结尾: www.baidu.com.
根域名: .
一级域名: .cn .us .tw .hk …
二级域名: .com.cn .net.cn …
三级域名: nb.com.cn
.cn(中国大陆) .us(美国) .de(德国) .uk(英国) .fr(法国)
完全合格的主机名(FQDN): 主机头部+注册域名
Full Qualified Domain Name,完全合格的主机名
###############################################################################################
虚拟机A
BIND域名服务
BIND(Berkeley Internet Name Daemon)
伯克利internet域名服务
bind-9.9.4-61.el7.x86_64 #域名服务包
bind-chroot-9.9.4-61.el7.x86_64 #提供虚拟根支持,牢笼政策
系统服务:named
主配置文件:/etc/named.conf #设置本DNS服务器负责解析的域名
地址库文件:/var/named/ #主机名与IP地址的对应关系
运行时虚拟根环境:/var/name/chroot
默认端口:TCP/UDP 53
1.安装软件包
[root@svr7 ~]# yum install -y bind-chroot bind
2.修改主配置文件
[root@svr7 ~]# cp /etc/named.conf /etc/named.txt #备份主配置文件
[root@svr7 ~]# vim /etc/named.conf
options {
directory "/var/named"; #指定地址库文件存放路径
};
zone "tedu.cn" IN { #指定本机负责域名
type master; #指定本机为主DNS服务器
file "tedu.cn.zone"; #制定地址库文件
};
3.建立地址库文件,DNS服务器bind程序会以name用户的身份进行运行
必须保证named用户有读取权限
在地址库中所有的域名都必须以点结尾,如果不以点结尾那么会自动补全本地址库负责的域名
配置地址库文件
[root@svr7 ~]# cp -p /var/named/named.localhost /var/named/tedu.cn.zone -p复制后不改变文件权限
[root@svr7 ~]# ll /var/named/tedu.cn.zone
-rw-r----- 1 root named 152 6月 21 2007 /var/named/tedu.cn.zone
[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 #声明DNS服务器主机名 A:正向解析
svr7 A 192.168.4.7 #声明DNS服务器的IP主机
www A 1.1.1.1 #域名解析记录
4.重启named服务
[root@svr7 ~]# systemctl restart named
如果启动服务没有报错但客户机还无法查找到DNS服务器,就需要查看服务端防火墙
[root@svr7 ~]# firewall-cmd --set-default-zone=trusted
虚拟机B
1.指定DNS服务器地址
[root@pc207 ~]# echo ‘nameserver 192.168.4.7’ > /etc/resolv.conf
[root@pc207 ~]# cat /etc/resolv.conf
nameserver 192.168.4.7
[root@pc207 ~]# nslookup www.tedu.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.tedu.cn
Address: 1.1.1.1
报错找不到DNS服务器
[root@pc207 ~]# nslookup www.tedu.cn
;; connection timed out; no servers could be reached
##################################################################################################
多区域的DNS服务器
options {
directory "/var/named";
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "qq.com" IN {
type master;
file "qq.com.zone";
};
配置地址库文件
[root@svr7 ~]# cp -p /var/named/tedu.cn.zone /var/named/qq.com.zone
[root@svr7 ~]# vim /var/named/qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
svr7 A 192.168.4.7
www A 1.1.1.2
主机名映射文件:/etc/hosts 直接为本机提供域名解析 (拥有最高优先级)
####################################################################################################
DNS轮询
配置地址库文件
[root@svr7 ~]# vim /var/named/qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
svr7 A 192.168.4.7
www A 1.1.1.2
www A 1.1.1.3
www A 1.1.1.4 #轮询解析
www A 1.1.1.5
[root@svr7 ~]# systemctl restart named
虚拟机B
[root@pc207 ~]# nslookup www.qq.com
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.qq.com
Address: 1.1.1.4
Name: www.qq.com
Address: 1.1.1.5
Name: www.qq.com
Address: 1.1.1.2
Name: www.qq.com
Address: 1.1.1.3
######################################################################################################
泛域名解析
配置地址库文件
[root@svr7 ~]# vim /var/named/qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
svr7 A 192.168.4.7
www A 1.1.1.2
* A 12.12.12.12 #泛域名解析
qq.com. A 13.13.13.13
[root@svr7 ~]# systemctl restart named
虚拟机B
[root@pc207 ~]# nslookup dagsjhdas.qq.com
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: dagsjhdas.qq.com
Address: 12.12.12.12
#####################################################################################################
解析记录的别名
配置地址库文件
[root@svr7 ~]# vim /var/named/qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
svr7 A 192.168.4.7
www A 1.1.1.2
ftp A 3.3.4.5
* A 12.12.12.12
qq.com. A 13.13.13.13
tts CNAME ftp #解析记录别名,访问tts主机会跳转到ftp主机
[root@pc207 ~]# nslookup tts.qq.com
Server: 192.168.4.7
Address: 192.168.4.7#53
tts.qq.com canonical name = ftp.qq.com.
Name: ftp.qq.com
Address: 3.3.4.5
DNS服务器资源解析记录有哪些?
NS:声明DNS服务器解析记录
A:正向地址解析记录
CNAME:解析记录的别名
#####################################################################################################
DNS子域授权
搭建DNS服务器
虚拟机A 虚拟机B 虚拟机C
父域:qq.com 父域的DNS服务器虚拟机A
子域:bj.qq.com 子域的DNS服务器虚拟机B
虚拟机B
1.安装软件包
[root@pc207 ~]# yum install -y bind
[root@pc207 ~]# yum install -y bind-chroot.x86_64
2.修改主配置文件
[root@pc207 ~]# cp /etc/named.conf /etc/named.txt
[root@pc207 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "bj.qq.com" IN {
type master;
file "bj.qq.com.zone";
};
配置地址库文件
[root@pc207 ~]# cp -p /var/named/named.localhost /var/named/bj.qq.com.zone
[root@pc207 ~]# vim /var/named/bj.qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
bj.qq.com. NS pc207
pc207 A 192.168.4.10
www A 23.23.26.46
[root@pc207 ~]# systemctl restart named
虚拟机A上做子域授权
1.声明子域DNS服务器 NS记录必须写在所有A记录上面
[root@svr7 ~]# vim /var/named/qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
bj.qq.com. NS pc207 #NS记录必须写在所有A记录上面
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 1.1.1.2
ftp A 3.3.4.5
* A 12.12.12.12
qq.com. A 13.13.13.13
tts CNAME ftp
[root@svr7 ~]# systemctl restart named
虚拟机C
[root@svr10 ~]# nslookup www.bj.qq.com 192.168.4.7
Server: 192.168.4.7
Address: 192.168.4.7#53
Non-authoritative answer:
Name: www.bj.qq.com
Address: 23.23.26.46
递归解析:客户端发送请求给DNS服务器,主DNS服务器与其他DNS服务器交流,最终将解析结果带回来的过程
**迭代解析:客户端发送请求给DNS服务器,主DNS服务告知下一个服务器地址 **
######################################################################################################
构建主从DNS服务器,解决单点故障,备份主DNS服务器数据.
案例环境
虚拟机A:主DNS服务器
虚拟机B:从DNS服务器
虚拟机C:客户端测试
虚拟机A
1.修改主配置文件,授权从服务器的IP地址(允许谁可以备份的的数据)
[root@svr7 ~]# vim /etc/named.conf
options {
directory "/var/named";
allow-transfer{ 192.168.4.207; }; #授权从服务器ip
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "qq.com" IN {
type master;
file "qq.com.zone";
};
2.修改地址库文件,声明从服务器的存在
[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
tedu.cn. NS pc207
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 1.1.1.1
3.重启named服务
[root@svr7 ~]# systemctl restart named
虚拟机B:从服务器
保证named用户有写入权限的目录
[root@pc207 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "bj.qq.com" IN {
type master;
file "bj.qq.com.zone";
};
zone "tedu.cn" IN {
type slave; #类型为从服务器
file "/var/named/slaves/tedu.cn.slave"; #同步的数据,存放路径.
masters { 192.168.4.7; }; #主DNS服务器为192.168.4.7
};
重启服务
[root@pc207 ~]# ls /var/named/slaves/
[root@pc207 ~]# systemctl restart named
[root@pc207 ~]# ls /var/named/slaves/ #重启服务后会看到同步过来的数据
tedu.cn.slave #加密存储
虚拟机C测试
[root@svr10 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@svr10 ~]# echo nameserver 192.168.4.207 >> /etc/resolv.conf
[root@svr10 ~]# nslookup www.tedu.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.tedu.cn
Address: 1.1.1.1
回到虚拟机A,停止named服务
[root@svr7 ~]# systemctl stop named
虚拟机C再进行测试
[root@svr10 ~]# nslookup www.tedu.cn
Server: 192.168.4.207
Address: 192.168.4.207#53
Name: www.tedu.cn
Address: 1.1.1.1
主从数据同步问题
$TTL 1D
@ IN SOA @ rname.invalid. (
2019111901 ; serial #数据版本号,有10个数字组成,越大越新
1D ; refresh #主从同步时间的间隔
1H ; retry #失效后主从同步时间的间隔
1W ; expire #失效时间
3H ) ; minimum #失败的记录,记忆的时间
tedu.cn. NS svr7
tedu.cn. NS pc207
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 1.1.1.1
总结:数据的改变必须在主DNS服务器,数据版本号必须要变大