DNS基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS基础相关的知识,希望对你有一定的参考价值。
DNS:地址解析服务(应用层协议)
udp 53 : 主从同步和查询;(现在大部分使用53/udp)
tcp 53: 主从同步
953 端口为rndc的管理端口
本地解析文件
本地名称解析配置文件:hosts
Linux : /etc/hosts
windows : C:\Windows\System32\drivers\etc\hosts
关于缓存
LINUX客户端无缓存
服务端清空缓存 :rndc flush
WINDOWS客户端
ipconfig/displaydns 查看缓存
ipconfig/flushdns 清空缓存
-------------------------------------------------
DNS查询类型:
递归查询:发出一次请求就能得到最终结果的查询
迭代查询:服务器在发出请求后,有可能得到参考答案,也有可能得到最终答案,通常得到一个最终答案需要发送多次请求,任何主机都不支持迭代查询,所以需要通过dns,帮助主机去查询。
名称服务器:城内负责解析城内的名称的主机;
根服务器:13组服务器
解析类型:
Name ----> IP (正向)
IP ----> Name (反向)注意:正反向解析是两个不同的名称空间,是两棵不同的解析树;
/etc/resolv.conf #DNS客户机配置文件
用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。
[[email protected] ~]# cat /etc/resolv.conf //查看该文件中的内容
# Generated by NetworkManager
nameserver 8.8.8.8 //google服务器
nameserver 8.8.4.4 //google备用服务器
resolv.conf关键字
nameserver //定义DNS服务器的IP地址
domain //定义本地域名
search //定义域名的搜索列表
sortlist //对返回的域名进行排序
示例:
search www.qq.com qq.com //定义域名的搜索列表
nameserver 172.18.22.222 //定义DNS服务器的IP地址
nameserver 172.18.22.111 //定义DNS服务器的IP地址
DNS查询类型:
递归查询:发出一次请求就能得到最终结果的查询
迭代查询:服务器在发出请求后,有可能得到参考答案,也有可能得到最终答案,通常得到一个最终答案需要发送多次请求,任何主机都不支持迭代查询,所以需要通过dns,帮助主机去查询。
名称服务器:城内负责解析城内的名称的主机;
根服务器:13组服务器
解析类型:
Name ----> IP (正向)
IP ----> Name (反向)注意:正反向解析是两个不同的名称空间,是两棵不同的解析树;
DNS服务器类型
DNS查询类型:递归查询和迭代查询
主DNS服务器:管理和维护所负责解析的域内解析库的服务器,主要用于管理
从DNS服务器:从主服务器或从服务器上复制,他是以主DNS的SOA记录中的序列号来判断是否更新记录
缓存DNS服务器(转发器,不做任何解析,只是帮助客户端去根服务器上问地址,并且缓存)
转发DNS服务器
主DNS服务器:管理和维护所负责解析的域内解析库的服务器 ;解析库由管理维护;从DNS服务器:从主服务器或其他的从服务器哪里“复制”(区域传输)解析 库副本;
序列号:解析库版本号,前提: 主服务器解析库变化时,其序列递增;
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔;
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔;
过期时长:从服务器联系不到主服务器时,多久后停止服务;
“通知”机制:主服务器解析库发生变化时,会主动通知从服务器;
区域传输:
完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容
DNS:
Domain:
正向:FQDN --> IP(域名--->IP地址)
反向: IP --> FQDN
各需要一个解析库来分别负责本地域名的正向和反向解析
正向区域
反向区域
FQDN: Fully Qualified Domain Name(完全合格域名或完全限制域名)
一次完整的查询请求经过的流程:
Client -->hosts文件 -->DNS Service (递归)
Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名...---vvvv
解析答案:
肯定答案:{ 权威答案:区域负责人的答案
{ 非权威答案
否定答案:请求的条目不存在等原因导致无法返回结果;
区域解析库:由众多RR组成:
资源记录:Resource Record, RR
记录类型:A(IPv4 -->域名,正向解析), AAAA(IPv6), PTR(反向解析), SOA(定义域是由谁负责的), NS(定义解析域的DNS服务器), 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 rr_type value
注意:
(1) TTL可从全局继承
(2) @可用于引用当前区域的名字
(3) 同一个名字可以通过多条记录定义多个不同的值;此时 DNS服务器会以轮询方式响应
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的 名字指向同一个值进行定义;此仅表示通过多个不同的名字 可以找到同一个主机
SOA记录
name: 当前区域的名字,例如“magedu.com.”
value: 有多部分组成
(1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com
(3) 主从服务区域传输相关定义以及否定的答案的统一的TTL
例如:
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. (
2018042201 ;序列号
2H ;新时间
10M ;重试时间
1W ;过期时间
1D ;否定答案的TTL值
)
NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如 ns.magedu.com.
注意:一个区域可以有多个NS记录
例如:
#S记录
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
#记录
(mx1.magedu.com. IN A 3.3.3.3 )
(mx2.magedu.com. IN A 4.4.4.4 )
注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字 ,都应该在后续有一个A记录
MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
一个区域内,MX记录可有多个;但每个记录的value之前应 该有一个数字(0-99),表示此服务器的优先级;数字越小优 先级越高
例如:
#MX记录
magedu.com. IN MX 10 mx1.magedu.com.
magedu.com. IN MX 20 mx2.magedu.com.
#A记录
(mx1.magedu.com. IN A 3.3.3.3 )
(mx2.magedu.com. IN A 4.4.4.4 )
注意:
(1) 对MX记录而言,任何一个MX记录后面的服务器名字 ,都应该在后续有一个A记录
A记录
name: 某主机的FQDN,例如www.magedu.com.
value: 主机名对应主机的IP地址
例如:
#记录
---"名字可以通过多条记录定义多个不同的值;此时 DNS服务器会以轮询方式响应 "
www.magedu.com. IN A 1.1.1.1 #一个域名有多个dns主机,两个dns服务器轮询解析。
www.magedu.com. IN A 2.2.2.2
#录
---"一个值也可能有多个不同的定义名字;通过多个不同的 名字指向同一个值进行定义;此仅表示通过多个不同的名字 可以找到同一个主机"
mx1.magedu.com. IN A 3.3.3.3
mx2.magedu.com. IN A 4.4.4.4
注意:
#A记录
--- "免用户写错名称时给错误答案,可通过泛域名解析进行解 析至某特定地址"
$GENERATE 1-254 HOST$ A 1.2.3.$ #定义“$”为变量,变量值为1-254,代表 HOST1对应4.5.6.1 - HOST100对应的 4.5.6.100
$GENERATE 1-100 server$ A 4.5.6.$ #定义“$”为变量,变量值为1-100,代表server1对应 4.5.6.1-server100对应的 4.5.6.100
*.magedu.com. IN A 5.5.5.5 #加“*”为泛域名解析
magedu.com. IN A 6.6.6.6
其它记录
AAAA:(用法与A相同)
name: FQDN
value: IPv6
PTR:
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN
例如:
#PTR记录(反向解析)
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
"如1.2.3为网络地址,可简写成:"
4 IN PTR www.magedu.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写
CNAME:--- 别名记录
name: 别名的FQDN
value: 真正名字的FQDN
例如:(别名----->真名)
#CNAME记录
www.baidu.com. IN CNAME www.a.shifen.com.
"别名" IN CNAME "真名"
#A记录
(www.shifen.com. IN A 6.6.6.6)
子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进 行授权
类似根域授权tld:"
# NS记录
.com. IN NS ns1.com.
.com. IN NS ns2.com.
# A记录
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2
"magedu.com. 在.com的名称服务器上,解析库中添加资源记录"
# NS记录
magedu.com. IN NS ns1.magedu.com. #指明名称服务器
magedu.com. IN NS ns2.magedu.com.
magedu.com. IN NS ns3.magedu.com.
# A记录
ns1.magedu.com. IN A 3.3.3.1 #给名称服务器地址
ns2.magedu.com. IN A 3.3.3.2
ns3.magedu.com. IN A 3.3.3.3
"glue record:粘合记录,父域授权子域的记录 (用于将上级服务器和下级服务器建立起来关联关系,由上级服务器把对某个子域的解析能力,授予给域内的某个服务器即名称服务器,并指明服务器IP地址)
BIND的安装配置:
dns服务程序包:bind,unbound(两个软件)
程序名:named,unbound
程序包:yum list all bind*
bind:服务器
bind-libs:相关库
bind-utils:客户端(测试工具)
bind-chroot: /var/named/chroot/ 伪跟、监狱(早期不建议安装)
bind服务器
服务脚本和名称:/etc/rc.d/init.d/named
/usr/lib/systemd/system/named.service
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones,(rfc:请求注解文档) /etc/rndc.key (辅助配置文档,前提使用rpm包安装)
解析库文件:/var/named/ZONE_NAME.ZONE
区域配置文件:/etc/named.rfc1912.zones,
脚本配置文件:/etc/sysconfig/name
日志文件:var/log/name.log
根目录:cd /var/named/
存储13跟服务器地址: /var/named/named.ca
提供本地回环地址解析文件 /var/named/named.localhost 和 /var/named/named.loopback
注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件;/etc/named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost(本地主机) 和本地回环地址的解析库
rndc : (remote name domain controller,)远程管理工具,默认与bind安装在同一主机,且只能通过127.0.0.1连接 named进程 : 提供辅助性的管理功能;rndc也是一个服务、也需要监听在套接字上,默认使用 953/tcp 端口,“/etc/rndc.key ”就是rndc 连接ndmed 时的共享密钥(域共享密钥)。
配置文件
主配置文件: "/etc/named.conf" 和 "/etc/named.rfc1912.zones"
全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪 些zone
zone "ZONE_NAME" IN {};
注意:任何服务程序如果期望其能够通过网络被其它主机访 问,至少应该监听在一个能与外部主机通信的IP地址上 。
"区域类型"
"主master"
"从slave"
"跟hint"
"转发 forward"
"监听端口类型:"
# localhost(本机所有地址)
# any(所有)
# none (什么也没有)
# localnet 相同子网
主配置文件语法检查:(检查/named.conf和named.rfc1912.zones文件的语法错误)
~]# named-checkcof
解析库文件语法检查: ("域名" 文件)
~]# named-checkzone "magedu.com" /var/named/magedu.com.zone
更改完配置文件,从读配置文件
~]# rndc status | reload ;
~]# service named reload ;从新载读配置文件,不需要重启,(能使用此命令,就不要从起服务)
~]# rndc reload #重新读取配置文件,有时候会无效,需要重新启动服务
~]# rndc flush #清除DNS缓存
配置主DNS服务器(正向)
主DNSserver负责的域,解析不到就会发起迭代查询,
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
"主从结构图"
master(主) push(主,更新推送) slave(从)
l- - - - l - - - - > - - - - - > l- - - - l
l l l l DNS解析请求 l- -l
l- - - - l <- - - - - - <- - - - l- - - - l < - - - <- - l- -l
ns1.server pull(从,周期性下载) ns2.server 客户端(pc)
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
"DNS解析结构图"
www.magedu.com(wed) DNS.server(主)
l- - - - l l- - - - l DNS解析请求
l l l l < - - - <- - l- -l
l- - - - l l- - - - l - - > - - -> l- -l
ns1.server ns1.server DNS解析结果 客户端(pc)
^^^ vvv
- - - - - - - - - - - - - - - -
收到DNS解析结果,有了地址再去访问wed服务
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
1) 在主配置文件中定义区域
~]# vim /etc/named.conf #修改以下部分即可
options {
listen-on port 53 { localhost; } #监听端口类型
...
allow-query { any; }; #允许所有人访问
recursion yes; #默认开启转发功能,如果仅提供内网服务,关闭即可“no”,我们这里开启否则不能实现迭代查询。
allow-transfer {172.16.100.12;}; #安全加固,允许谁从我这复制区域数据,允许辅助DNS
};
~]# vim /etc/named.conf 文件 或 "/etc/named.rfc1912.zones" 文件 (操作文档前做好备份,建议在后者操作)
格式:
zone "ZONE_NAME" IN {
type { master; };
file "ZONE_NAME.zone";
};
区域类型:
主master
从slave
跟hint
转发 forward
~]# cp /etc/named.rfc1912.zones{,.bak} #操作文档前做好备份
-----------------------------
~]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN { #域名
type master; #类型,主人
file "magedu.com.zone"; # 区域拓展数据库名字
};
----------------------------------
主配置文件语法检查:(检查/named.conf和named.rfc1912.zones文件的语法错误)
~]# named-checkco
(2) 定义区域解析库文件
出现的内容
宏定义
资源记录
~]# cp -p /var/named/named.loopback /var/named/magedu.com.zone #复制模板文件进行操作,-p 保留原文件权限,和所属组。
如果没有加 -p 执行下面两条命令
~]# chmod 640 magedu.com.zone
~]# chown :named magedu.com.zone
-rw-r----- 1 root named 152 Jun 21 2007 magedu.com
------------------------------------------
~]# vim /var/named/magedu.com.zone
$TTL 86400
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. admin.magedu.com (
(magedu.com.zone) 1 ; serial (序列号,主要作用是标识主服务器的数据库文件发生变化,数字递增,若不变,辅助DNS不会更新数据库文件)
1D ; refresh #每隔多久推送数据库文件
1H ; retry #发生错误多少时间重试
1W ; expire #多长时间后过期
0 ) ; minimum #错误记录缓存多少时间
IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.16.100.11
ns2 IN A 172.16.100.12
mx1 IN A 172.16.100.13
mx2 IN A 172.16.100.14
www IN CNAME websr
websrv IN A 172.16.100.11
websrv IN A 172.16.100.12
---------------------------------------------------
解析库文件语法检查: ("域名" 文件)
~]# named-checkzone "magedu.com" /var/named/magedu.com.zone
从新加载配置文件“systemctl reload named ”命令也可以,建议使用“rndc reload ”
~]# rndc reload
本机测试 IP地址 “127.0.0.1 ”
~]# dig www.magedu.com @172.16.100.11 #默认查询A记录
~]# dig -t NS www.magedu.com @172.16.100.11 #指定查询NS记录
~]# dig -t NS . @172.16.100.11 #查询跟的NS记录
~]# dig +teace www.magedu.com #跟踪解析过程
~]# dig -t mx magedu.com #查询谁是magedu.com 域的邮件服务器
==========================
反向查询,通过IP查域名
~]# dig -t prt 11.100.16.172.in-addr.arpa @172.16.100.11 #反向解析域名的
~]# dig -x 172.16.100.11 @172.16.100.11 #反向解析域名的
==========================
客户端,更改DNSserv指向,网卡配置文件更改
~]# dig +bufsize=1200 +norce @a.root-servers.net 命令执行的结果就是/var/named/named/ca
反向区域
区域名称:网络地址反写.in-addr.arpa.
172.16.100. --> 100.16.172.in-addr.arpa.
(1) 在主配置文件中定义区域
~]# vim /etc/named.conf
文件配置与正向解析相同,
-----------------------------
~]# vim /etc/named.rfc1912.zones
zone "100.16.172.in-addr.arpa." IN { #域名
type master; #类型,主
file "100.16.172.in-addr.arpa.zone"; # 区域拓展数据库名字
};
----------------------------------
主配置文件语法检查:(检查/named.conf和named.rfc1912.zones文件的语法错误)
~]# named-checkco
(2) 定义区域解析库文件
注意:不需要MX,以PTR记录为主
~]# cp -p /var/named/named.loopback /var/named/100.16.172.in-addr.arpa.zone #复制模板文件进行操作,-p 保留原文件权限,和所属组。如果没有加 -p 执行下面两条命令
~]# chmod 640 magedu.com.zone
~]# chown :named magedu.com.zone
-rw-r----- 1 root named 152 Jun 21 2007 magedu.com
------------------------------------------
~]# vim /var/named/100.16.172.in-addr.arpa.zone
$TTL 86400
$ORIGIN 100.16.172.in-addr.arpa.
@ IN SOA ns1.magedu.com. admin.magedu.com. (
2018042201 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.magedu.com. #注意域名结尾加“.”否则会加上区域后缀,
IN NS ns2.magedu.com. #就会变成:ns1.magedu.com.100.16.172.in-addr.arpa.
11 IN PTR ns1.magedu.com.
11 IN PTR www.magedu.com.
12 IN PTR mx1.magedu.com.
12 IN PTR www.magedu.com.
13 IN PTR mx2.magedu.com.
---------------------------------------------------
解析库文件语法检查: ("域名" 文件)
~]# named-checkzone "100.16.172.in-addr.arpa." /var/named/100.16.172.in-addr.arpa.zone
反向查询,通过IP查域名
~]# dig -t prt 11.100.16.172.in-addr.arpa @172.16.100.11 #反向解析域名的
~]# dig -x 172.16.100.11 @172.16.100.11 #反向解析域名的
以上是关于DNS基础的主要内容,如果未能解决你的问题,请参考以下文章
C#基础系列07 --你值得拥有-- 自动化批量DNS名称解析测试