DNS基础
DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,域名服务器是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地
基本工作流程
相关概念
1、域名
域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。
2、FQDN
FQDN全称为Fully Qualified Domain Name,即完全合格域名。FQDN由两个部分组成:主机名和域名。因为DNS是逐级管理的,所以在不同的层级中主机名与域名也是不同的;以www.google.com为例,在第二层中,.com就是域名,google就是主机名,而到了第三层中,.google.com就成了域名,www就成了主机名。
注意:主机名与域名并不是依据"."来划分的,主机名中也可以包含"."号的,主要还是要根据域名的注册情况来划分。
3、正向解析
从FQDN转换为IP地址称为正向解析。
4、反向解析
从IP地址转换为FQDN称为反向解析。
5、区域
正向解析或反向解析中,每个域的记录就是一个区域。
DNS的解析库
DNS的主要作用是进行主机名的解析。解析:根据用户提供一种名称,去查询解析库,以得到另一种名称。 正向解析与反向解析使用不同的解析库。
资源记录:rr(resource record),有类型的概念;用于此记录解析的属性。
- A:Address地址 IPv4
- AAAA:Address地址 IPv6
- NS:Name Server域名服务器
- SOA:Start of Authority授权状态
- MX:Mail Exchanger邮件交换
- CNAME:Canonical Name规范名
- PTR:Pointer指针
DNS的查询过程
DNS采用两种查询机制:递归(Recursive Query)和迭代(Iterative Query)。
DNS的查询顺序
1、本地hosts文件
2、本地DNS缓存
3、本地DNS服务器
4、发起迭代查询
DNS使用的端口号
DNS协议使用udp/tcp的53端口提供服务,客户端向DNS服务发起请求时,使用udp的53端口;DNS服务器间进行区域传送的时候使用TCP的53端口。
DNS服务器类型
1、主DNS服务器
为客户端提供域名解析的主要区域,主DNS服务器宕机,会启用从DNS服务器提供服务。
2、从DNS服务器
主服务器DNS长期无应答,从服务器也会停止提供服务。
主从区域之间的同步采用周期性检查+通知的机制,从服务器周期性的检查主服务器上的记录情况,一旦发现修改就会同步,另外主服务器上如果有数据被修改了,会立即通知从服务器更新记录。
3、缓存服务器
服务器本身不提供解析区域,只提供非权威应答。
4、转发服务器
当DNS服务器的解析区域(包括缓存)中无法为当前的请求提供权威应答时,将请求转发至其它的DNS服务器,此时本地DNS服务器就是转发服务器。
Centos7 安装 Bind9
yum install -y bind bind-chroot bind-utils
BIND配置
1、BIND配置文件保存在两个位置:
/etc/named.conf - BIND服务主配置文件
/var/named/ - zone文件(域的dns信息)
如果安装了bind-chroot(其中chroot是 change root 的缩写),BIND会被封装到一个伪根目录内,配置文件的位置变为:
/var/named/chroot/etc/named.conf - BIND服务主配置文件
/var/named/chroot/var/named/ - zone文件
chroot是通过相关文件封装在一个伪根目录内,已达到安全防护的目的,一旦程序被攻破,将只能访问伪根目录内的内容,而不是真实的根目录
实例环节
三台服务器 192.168.3.61、192.168.3.62、192.168.3.63
在192.168.3.61安装bind9,其他2台服务器修改 dns 配置。
vim /etc/named.conf
新增
listen-on port 53 { any; }; //修改为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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //修改为any
dnssec-enable no; //改成no
dnssec-validation no; //改成no
修改 named.rfc1912.zones 文件
;新增如下内容
zone "h.com" IN {
type master;
file "h.com.zone";
allow-update { none; } ;
};
在/var/named/目录下创建 h.com.zone 文件
;复制一个默认的配置文件过来改
cp -a named.localhost h.com.zone
$TTL 1D
@ IN SOA h.com. root.h.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS h.com.
A 192.168.3.61
AAAA ::1
iotm1 A 192.168.3.61
iotm2 A 192.168.3.62
iotm3 A 192.168.3.61
在 92.168.3.61、192.168.3.62、192.168.3.63 三台机器上分别修改dns
vim /etc/sysconfig/network-scripts/ifcfg-ens33
至此,DNS服务器配置完成。