共计 2731 个字符,预计需要花费 7 分钟才能阅读完成。
简介
DNS 是用来名字解析的,名字解析成 IP 地址,IP 地址解析成名字,正反操作,有服务器端和客户端即 S/C
DNS 是应用层协议,基于 UDP/53、TCP/53 端口,缺一不可
分为正向解析和反向解析 / 递归查询、迭代查询
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
名称解析:主机名解析
把一种名称转换为另一种名称的过程
根据用户提供的名称,去查询解析库,以得到另一种名称
hosts:文本文件
用户自定义了对应的解析列表即要解析的 FQDN 与 IP 地址对应关系
有时候 hosts 很好的解决了 DNS 服务器访问不了的情况
如:某个域所在的权威 DNS 服务器出问题了,网站图片不显示等,这时候在 hosts 文本里写上对应的 FQDN 和 IP 地址就可。
备注:FQDN 也就是我们所说的网址,如www.xxx.com
如果在本机定义了 hosts 文本则优先本列表,本列表没有再去 DNS 库查询
递归查询
用户向第一个 DNS 服务发请求,DNS 收到后,如果它这有直接的结果就直接给你,如果没有就会向根 DNS 服务询问,层层询问直到问道结果返回给你,负责到底
迭代查询
上述过程中去问根,根给你推荐别人,你去问它,这就是迭代查询,不会负责到底
DNS 域结构图
备注:如 www.xxx.com
www:可以是主机或别名
xxx.com:是域名
DNS 服务器类型
主 DNS 服务器
从 DNS 服务器
缓存 DNS 服务器(转发器)
主 DNS 服务器:管理和维护所负责解析的域内解析库的服务器
从 DNS 服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
一次完整的查询请求经过的流程:
Client –>hosts 文件 –>DNS Service Local Cache –> DNS Server (recursion) –> Server Cache –> iteration(迭代) –> 根 –> 顶级域名 DNS–> 二级域名 DNS…
解析答案:
肯定答案:
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:你请求的 dns 服务器正好是负责这个链接域的 dns
非权威答案:dns 服务器问别人,别人告诉它的,有时候会是假的,比如国外某些网站访问不了,就是 dns 告诉给你一个错误的答案,不让你访问(DNS 的污染,信息篡改了)
备注:名字解析成不成功和能不能上网是两码事
资源记录
区域解析库:由众多 RR 组成:
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个 SOA 记录,
必须位于解析库的第一条记录
A:internet Address,作用,FQDN –> IP
AAAA: FQDN –> IPv6
PTR:PoinTeR,IP –> FQDN
NS:Name Server,专用于标明当前区域的 DNS 服务器
CNAME:Canonical Name,别名记录
MX:Mail eXchanger,邮件交换器
资源记录定义的格式:
语法:
name(名称)[TTL](生命期)IN(intnet 记录)rr_type(资源记录的类型)value(值)
rr_type 类型:有 A(ipv4)、AAAA(ipv6)、SOA、NS(这两种最重要)
注意:
(1) TTL 可从全局继承
(2) @可用于引用当前区域的名字
(3) 同一个名字可以通过多条记录定义多个不同的值;此时 DNS 服务器会以轮询
方式响应
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值
进行定义;此仅表示通过多个不同的名字可以找到同一个主机
记录介绍
MX 记录:邮件交换器
注意:
(1) 对 MX 记录而言,任何一个 MX 记录后面的服务器名字,都应该在后续有一个 A 记录
DNS 服务器 bind 配置文件说明
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.
//
options {// 定义全局变量
listen-on port 53 {127.0.0.1;}; // ipv4 监听端口
listen-on-v6 port 53 {::1;}; // ipv6 监听端口
directory “/var/named”; // 制定装载 zone 区域文件的目录
dump-file “/var/named/data/cache_dump.db”; // cache
statistics-file “/var/named/data/named_stats.txt”; // statistics
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-query {localhost;}; // 允许访问列表
recursion yes; // 递归查询
dnssec-enable yes; //DNS 确保应答报文的完整性
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file “/etc/named.iscdlv.key”;
}; // “}” 后也得分号结束
logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};
zone “.” IN {// “.” 代表根区域
type hint; // 根区域的类型就为 hint
file “named.ca”; // 指定 zone 文件,默认已经生成
};
include “/etc/named.rfc1912.zones”; // 存放自定义的区域文件
备注:配置文件总体来说分为三大块选项、日志、区域
: