DNS域名解析服务
域名服务基础
DNS系统概述及作用
- DNS正向解析作用:根据域名查找对应的IP地址
- DNS反向解析作用:根据IP地址查找对应的域名
- DNS是“域名系统”的英文缩写。它是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,从而能够更方便地访问互联网
- DNS系统是分布式数据结构,使用TCP和UDP的53端口
- 每一级的域名长度限制63个字符,域名总长度不能超过253个字符
- 根服务器主要是用来管理互联网的主目录,全世界的IPv4根服务器只有13台,1个为主根服务器在美国,其余12个均为辅根服务器,9个在美国,2个在英国和瑞典,1个在日本
- 域名解析:因为在日常生活中人们习惯使用域名访问服务器,但是机器之间互相只认IP地址,域名与IP地址之间是多对一的关系,一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址,所以它们之间的转换工作称为域名解析。域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的
域名结构
- 域名结构
- htttp://www.sina.com.cn./
- htttp://主机名.二级域.顶级域.根域/
- 树状结构最顶层称为根域,用"."表示,相应服务器称为根服务器,整个域名空间解析权都归根服务器所有,但根服务器无法承担庞大的负载,采用“委派”机制,在根于下设置了一些顶级域,然后将不同顶级域解析权分别委派给相应的顶级域服务器。例如:将com域的解析权委派给com域服务器,以后但凡根服务器收到以com结尾的域名解析请求,都会转发给com域服务。同样道理,为了减轻顶级域的压力,又下设了若干二级域,二级域又下设三级域或主机
- 根于:位于域名空间最顶层,一般用一个“.”表示
- 顶级域:一般代表一种类型的组织机构或国家地区。例如:.net(网络供应商)、.com(工商企业)、.org(团体组织)、.edu(教育机构)、.gov(政府部门)、.cn(中国国家域名)
- 二级域:用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家网络部门统一管理。例如:.com.cn、.net.cn、.edu.cn是.cn顶级域名下面设置的二级域名
- 子域:二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
- 主机:位于域名空间最下层,主机就是一台具体的计算机。例如:www、mail都是具体的计算机名字。www.sina.com.cn.和mail.sina.com.cn.这种表示方式成为FQDN(完全合格域名),也是这台主机在域名中的全名
DNS服务器类型
- 主域名服务器
- 负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。
- 构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
- 从域名服务器
- 当主域名服务器出现故障、关闭或负载过重时,从域名服务器将作为服务提供域名解析服务。
- 从域名服务器提供的解析结果不是由自己决定的,而是来自主域名服务器。
- 构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
- 缓存域名服务器
- 只提供域名解析结果的缓存功能,可以达到提高查询速度和效率的目的,但没有域名数据库。
- 它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时它将给予响应。
- 缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息。
- 构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源。
- 转发域名服务器
- 负责所有非本地域名的本地查询。
- 当转发域名服务器接到查询请求后,将会在其缓存中查找,如果找不到就会将请求依次转发到指定的域名服务器,直到找到结果为止,否则将会返回无法映射的结果。
使用BIND构建DNS正向解析
BIND概述
- BIND(Berkeley Internet Name Daemon)是应用最广泛的DNS服务程序
- BIND官网
- BIND服务器端程序
- 主要执行程序:/usr/sbin/named
- 默认监听端口:53
- 主要配置文件:/etc/named.conf
- 保存DNS解析记录的数据文件位于:/var/named/
操作步骤
- 1.安装bind软件包
[root@localhost /]# yum -y install bind
- 2.配置正向解析
(1)先查看需要修改的配置文件及路径
[root@localhost /]# rpm -q bind
bind-9.11.4-26.P2.el7_9.3.x86_64 (安装的bind版本信息)
[root@localhost /]# rpm -qc bind (列出bind的配置文件以及所在路径)
/etc/logrotate.d/named
/etc/named.conf (主配置文件)
/etc/named.iscdlv.key
/etc/named.rfc1912.zones (区域配置文件)
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost (区域数据配置文件)
/var/named/named.loopback
(2)修改主配置文件
[root@localhost named]# vim /etc/named.conf
options {
listen-on port 53 {
192.168.131.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";(内存统计文件的位置)
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query {
any; }; (允许使用本DNS解析服务的网段,也可用any代表所有)
zone "." IN {
(正向解析“.”根区域)
type hint; (类型为根区域)
file "named.ca"; (区域数据文件为named.ca记录了13台根域服务器的域名和IP地址
等信息)
};
include "/etc/named.rfc1912.zones"; (包含区域配置文件里的所有配置)
:wq
(3)修改区域配置文件,添加正向区域配置
[root@localhost named]# vim /etc/named.rfc1912.zones (此配置文件里有模板,可直接复制使用)
zone "qz.com" IN {
(正向解析“qz.com”区域)
type master; (类型为主区域)
file "qz.com.zone"; (指定区域数据文件为qz.com.zone)
allow-update {
none; };
};
:wq
(4)配置正向区域数据文件
[root@localhost named]# cd /var/named/
[root@localhost named]# cp -p named.localhost qz.com.zone (加-p选项保留源文件的权限和属主的属性复制)
[root@localhost named]# vim qz.com.zone
$TTL 2D (有效解析记录的生存周期,默认1D)
@ IN SOA qz.com. admin.qz.com. ( (“@”符号表示当前的DNS区域名;“admin.qz.com.”表示
管理员邮箱,因为这里的“@”符号已有其他含义,所以用“.”代替;
“qz.com.”此为完全合格域名(FQDN),com后面的“.”不能漏;
SOA记录中的更新序列号用于同步主,从服务器的区域数据,当从
服务器判断区域更新时,若发现主服务器中的序列号与本地区域数
据中的序列号相同,则不会进行下载。)
20210226 ; serial (更新序列号,可以是10位以内的整数)
1D ; refresh (刷新时间,重新下载地址数据的间隔)
1H ; retry (重试延时,下载失败后的重试间隔)
1W ; expire (失效时间,超过该时间仍无法下载则放弃)
3H ) ; minimum (无效解析记录的生存周期)
NS qz.com. (记录当前区域的DNS服务器的名称)
A 192.168.131.10 (记录主机IP地址)
www IN A 192.168.131.30 (记录正向解析www.qz.com对应的IP)
mail IN A 192.168.131.40
ftp IN CNAME www (CNAME使用别名,ftp是www的别名)
* IN A 192.168.131.50 (泛域名解析,“*”代表任意主机名)
~
:wq
(4)启动服务,关闭防火墙
[root@localhost named]# systemctl start named
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# tail -f /var/log/messages (启动失败时可以执行此命令来查看日志文件进行错误排查)
[root@localhost ~]# rndc-confgen -r /dev/urandom -a (如果服务启动时卡住,可以执行此命令来解决)
- Windows解析测试