目录
一、DNS简介
1.1DNS名词介绍
域名管理系统DNS(Domain Name System)是域名解析服务器的意思,应用层协议,是互联网的一项服务。它在互联网的作用是:把域名转换成网络可以识别的ip地址,在通过IP地址访问主机。 种由文字组成的名称,显而易见要更容易记忆。
实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区 域(包含 IP 地址到域名的解析记录)。
1.2DNS系统的作用
-
正向解析:根据域名查找对应的IP地址
-
反向解析:根据IP地址查找对应的域名
-
IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1
IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从
-
DNS系统的分布式数据结构:
DNS查询类型及原理:
一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区):
二级DNS服务器:专门负责二级域名的解析:
子域名DNS服务器:专门负责子域名的解析也称为三级域名:
主机站点:
1.3DNS系统类型
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源。
主域名服务器:管理和维护所负责解析的域内解析库的服务器
从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
1.4本地名称解析配置文件
Linux: /etc/hosts
windows : c/windows/system32/drivers/etc/hosts
[root@localhost ~]#vim /etc/nsswitch.conf
#修改dns的优先级
hosts: files dns myhostname
#修改 files和 dns的先后 优先级就不同。如果files在前面,那么file优先级就比较高
此时ping www.baidu.com 就是设置的地址
1.5DNS查询方式
递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结 果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对 方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起 进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需 要发起多次查询。(需要自己动手)
1.6DNS正向解析查询原理过程
①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理以上过程成为递归查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
二、正向解析资源记录及配置实例
2.1正向解析配置实例
1.安装bind软件包
yum install -y bind2.配置正向解析
(1)先查看需要修改的配置文件所在路径
rpm -qc bind #查询bind软件配置文件所在路径
/etc/named.conf #主配置文件
/etc/named.rfc1912.zones #区域配置文件
/var/named/named.localhost #区域数据配置文件(2)修改主配置文件
vim /etc/named.conf
options {
listen-on port 53 { 192.168.80.10; }; ●监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有
# listen-on-v6 port 53 { ::1; }; #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 { 192.168.80.0/24; 172.16.100.0/24; }; ●允许使用本DNS解析服务的网段,也可用any代表所有
……
}
zone "." IN { #正向解析“.”根区域
type hint; #类型为根区域
file "named.ca"; #区域数据文件为named.ca,记录了13台根域服务器的域名和IP地址等信息
};include "/etc/named.rfc1912.zones"; #包含区域配置文件里的所有配置
(3)修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones #文件里有模版,可复制粘贴后修改
zone "benet.com" IN { ●正向解析“benet.com”区域
type master; #类型为主区域
file "benet.com.zone"; ●指定区域数据文件为benet.com.zone
allow-update { none; };
};(4)配置正向区域数据文件
cd /var/named/
cp -p named.localhost benet.com.zone #保留源文件的权限和属主的属性复制
vim /var/named/benet.com.zone
$TTL 1D #有效解析记录的生存周期
@ IN SOA benet.com. admin.benet.com. ( #“@”符号表示当前的DNS区域名
0 ; serial #更新序列号,可以是 10 位以内的整数
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃
3H ) ; minimum #无效解析记录的生存周期
NS benet.com. #记录当前区域的DNS服务器的名称
A 192.168.80.10 #记录主机IP地址
IN MX 10 mail.benet.com. #MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.80.10 #记录正向解析www.benet.com对应的IP
mail IN A 192.168.80.11
ftp IN CNAME www #CNAME使用别名,ftp是www的别名
* IN A 192.168.80.100 #泛域名解析,“*”代表任意主机名
#“@”这里是一个变量,当前DNS区域名
#SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
#“benet.com.”此为完全合格域名(FQDN),后面有个“.”不能漏掉
#“admin.benet.com.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“.”代替(5)启动服务,关闭防火墙
systemctl start named
systemctl stop firewalld
setenforce 0
#如果服务启动失败,可以查看日志文件来排查错误
tail -f /var/log/messages
#如果服务启动卡住,可以执行下面命令解决
rndc-confgen -r /dev/urandom -a(6)在客户端的域名解析配置文件中添加DNS服务器地址
vi /etc/resolv.conf #修改完后立即生效
nameserver 192.168.80.10
或
vi /etc/sysconfig/network-scripts/ifcfg-ens33 #修改完后需要重启网卡
DNS1=192.168.80.10systemctl restart network
(7)测试DNS解析
host www.benet.com
nslookup www.benet.com
2.2反向解析配置实例
1)修改区域配置文件,添加反向区域配置
vim /etc/named.rfc1912.zones #文件里有模版,可复制粘贴后修改
zone "159.168.192.in-addr.arpa" IN { ●反向解析的地址倒过来写,代表解析192.168.159段的地址
type master;
file "benet.com.zone.local"; ●指定区域数据文件为benet.com.zone.local
allow-update { none; };
};(2)配置反向区域数据文件
cd /var/named/
cp -p named.localhost benet.com.zone.local
vim /var/named/benet.com.zone.local
$TTL 1D
@ IN SOA benet.com. admin.benet.com. ( #这里的“@”代表192.168.80段地址
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS benet.com.
A 192.168.80.10
200 IN PTR www.benet.com.
100 IN PTR mail.benet.com.#PTR为反向指针,反向解析192.168.159.200地址结果为www.benet.com.
(3)重启服务进行测试
systemctl restart named
host 192.168.159.200
nslookup 192.168.159.200
vim /etc/named.rfc1912.zones
2.3主从复制配置示例
(1)修改主域名服务器的区域配置文件,修改正、反向区域配置
vim /etc/named.rfc1912.zones
zone "benet.com" IN {
type master; ●类型为主区域
file "benet.com.zone";
allow-transfer { 192.168.159.20; }; ●允许从服务器下载正向区域数据,这里添从服务器的IP地址
};zone "80.168.192.in-addr.arpa" IN {
type master;
file "benet.com.zone.local";
allow-transfer { 192.168.159.20 };
};
(2)修改从域名服务器的主配置文件
yum install -y bind
vim /etc/named.conf
options {
listen-on port 53 { 192.168.159.20; }; ●监听53端口,ip地址使用提供服务的本地IP即可,也可用any代表所有
# listen-on-v6 port 53 { ::1; };
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 { any; }; ●允许使用本DNS解析服务的网段,也可用any代表所有
……
}(3)修改从域名服务器区域配置文件,添加正、反区域配置
vim /etc/named.rfc1912.zones
zone "benet.com" IN {
ty ●类型为从区域
masters { 192.168.159.10; }; ●指定主服务器的IP地址
file "slaves/benet.com.zone"; ●下载的区域数据文件保存到slaves/目录下
};
zone "159.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.159.10; };
file "slaves/benet.com.zone.local";
};(4)主、从都重启动服务,并查看区域数据文件是否已下载成功
systemctl restart named
ls -l /var/named/slaves/(5)在客户端的域名解析配置文件中添加从DNS服务器地址
echo "nameserver 192.168.159.20" >> /etc/resolv.conf(6)测试
host 192.168.159.200
nslookup 192.168.159.200#停止主服务器的服务,模拟主服务器故障
systemctl stop named
host 192.168.159.200
nslookup 192.168.159.200