DNS服务介绍、域名解析流程、DNS服务器搭建、资源纪录、反向解析、子域、转发服务器、dig、host、rndc命令

DNS:Domain Name Service 应用层协议
C/S,53/udp, 53/tcp

BIND:Bekerley Internat Name Domain
ISC (www.isc.org)

本地名称解析配置文件:hosts
/etc/hosts%WINDIR%/system32/drivers/etc/hosts
93.46.8.89 www.google.com

DNS域名

根域
一级域名:com, edu, mil, gov, net, org, int,arpa
    组织域、国家域(.cn, .ca, .hk, .tw)、反向域
二级域名
三级域名
最多127级域名

DNS服务器类型

主DNS服务器
从DNS服务器
缓存DNS服务器(转发器)

主DNS服务器:管理和维护所负责解析的域内解析库的服务器

从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔过期时长:从服务器联系不到主服务器时,多久后停止服务

通知机制:主服务器解析库发生变化时,会主动通知从服务器

DNS解析

DNS查询类型:
递归查询
迭代查询

名称服务器:域内负责解析本域内的名称的主机
根服务器:13组服务器

解析类型:
FQDN --> IP
IP --> FQDN
正反向解析是两个不同的名称空间,是两棵不同的解析树

一次完整的查询请求经过的流程:
Client -->hosts文件 -->DNS Service Local Cache --> DNS Server
(recursion) --> Server Cache --> iteration(迭代) --> 根–> 顶级域名DNS–>
二级域名DNS

示例:
访问www.baidu.com
DNS结构

指向顶级域
根域
.com
.net
.org
.baidu
www

根据域名分散的DNS服务器列表,顶级域分别指向.com、.net等域名的DNS服务器,.com又指向了2级域名baidu所在的DNS服务器,最后在二级域名的DNS中找到www域名的主机IP,至此www.baidu.com的IP找到了。

访问流程图

访问DNS
获得.com DNS服务器IP
获得baidu DNS服务器IP
找到www的IP
用户
DNS
有缓存
返回IP给用户
无缓存
根域
.com DNS
baidu DNS
返回给用户

DNS服务器搭建

BIND的安装配置:
dns服务程序包:bind,unbound
程序名:named,unbound
程序包:yum list all bind*
bind:服务器
bind-libs:相关库
bind-utils:客户端
bind-chroot: /var/named/chroot/

服务脚本和名称:/etc/rc.d/init.d/named /usr/lib/systemd/system/named.service
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
解析库文件:/var/named/ ZONE_NAME.ZONE

注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根域文件:named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库

rndc:remote name domain controller,
默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程提供辅助性的管理功能;953/tcp

主配置文件:
/etc/named.conf
全局配置:options {};
其中listen-on的地址可以设置成localhost,否则换IP忘记改就会出现DNS无法访问。
allow-query:允许谁查询,可以写any;也可以写192.168.1.0/24
allow-transfer {192.168.1.3} :允许向192.168.1.3传输区域数据,none拒绝所有
服务监听UPD53和TCP53,UDP53用来查询,TCP53用来主从同步

日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone “ZONE_NAME” IN {};
任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上
修改完配置可以用rndc reload重新加载配置,不用重启服务

缓存名称服务器的配置:
监听外部地址即可
dnssec: 建议关闭dnssec,设为no

主DNS名称服务器:
(1) 在主配置文件中定义区域
zone “ZONE_NAME” IN {
type {master|slave|hint|forward};
file “ZONE_NAME.zone”;
};

例如指向named.ca的zone:

zone "." IN { zone的名字
type hint; hint表示是根域
file "named.ca"; zone的文件
};

(2) 定义区域解析库文件
出现的内容
宏定义
资源记录

添加新的区域解析库:
在/var/named/里有模板文件named.localhost,新建其他解析文件推荐复制这个模板来修改

cp -p named.localhost test.com.zone

打开test.com.zone
资源记录格式:name [TTL] IN rr_type value
这里直接先贴上修改好了的样子再来解释

$TTL 1D 
@ IN SOA @ ms.test.com. admin.test.com. (
	0	; serial
	1D	; refresh
	1H	; retry
	1W	; expire
	3H )	; minimum
  NS ms.test.com
ms  A  192.168.1.2
db  A  192.168.1.3
www CNAME web
web A 192.168.1.10
web A 192.168.1.12

解释:
$TTL 1D  
TTL是有效周期,这里定义默认为1天

@ IN SOA  ms.test.com. @ admin.test.com. (
“@”引用当前区域的名字(name),也可以写成
test.com IN SOA  

IN和域之间之间省略了TTL,所以从默认TTL继承,
如果要设置不同TTL:test.com 88888 IN SOAIN” 照抄就行

SOA是资源纪录类型(rr_type)

ms.test.com. @ admin.test.com. (
ms.test.com. 是主DNS服务器的名称
admin.test.com.是管理员邮箱地址,因为这里的@有特殊含义
所以邮箱中的@用.代替,admin.test.com.等同admin@test.com.

	0	; serial 
	文件版本,数值越大说明版本越新
	
	1D	; refresh
	slave服务器从主服务器检查文件更新的间隔,这里是11H	; retry
	slave服务器检查失败等待多久再次尝试,这里是1小时
	
	1W	; expire
	slave服务器多久没同步则slave服务器数据失效,这里是13H )	; minimum
	不存在记录的缓存时长,比如有人查询了wwww.test.com,首次查询wwww不存在
	下次再查询在缓存里找到这个记录的结果是不存在就直接返回,不重新查询。
	
  NS ms
  当前区域记录其他DNS的服务器名字,这里只写了主服务器的
  如果有从服务器则多加几行填上从服务器
  现在是省略写法,NS的完整写法是 test.com NS ms 或者 @ NS ms
  
  ms  A  192.168.1.2
  指定了ms域名的IP地址,完整写法是
  ms.test.com.省略时会自动加上.test.com.
  
  db  A  192.168.1.3
  db域名的地址
  
  www CNAME web
  www的别名是web,也可以对应其他域名例如www.test2.com
  
  web A 192.168.1.10
  web A 192.168.1.11
  web对应的IP,可以有多个,当有多个IP时会轮询,可以实现简单的负载均衡

A纪录其他写法:
通过泛域名解析至某特定地址,可以避免用户输错时给了错误地址
例如:
@ A 192.168.1.10
* A 192.168.1.10

@可以把test.com解析到192.168.1.10
*可以把其他不匹配其他不符合的地址

$GENERATE 1-254 db$ A 192.168.2.$
这个写法可以自动解析例如:
db1.test.com ---->192.168.2.1
.
↓
db254.test.com---->192.168.2.254

保存好文件后,还要在主配置文件里添加zone信息
/etc/named.conf
也可以在专门存放zone信息的文件里添加
/etc/named.rfc1912.zones

zone "test.com" IN { 
type master;
file "test.com.zone"; 
};

邮箱域名解析:

mail@test.com解析,在zone文件中添加一条MX记录
@ MX 10 mail
mail A 192.168.1.12

10表示优先级,完整写法
test.com. IN MX 10 mail

用dig可以查到邮箱域名的DNS信息
dig -t mx 域名
如果要查指定DNS服务器上的信息
dig -t mx test.com @114.114.114.114

其他纪录类型:

AAAA:
    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

例如:
4.3.2.1.in-addr.arpa. IN PTR www.test.com.

TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,
如:SPF(反垃圾邮件)记录,https验证等

主配置文件语法检查:
named-checkconf

解析库文件语法检查:
named-checkzone 域名 库文件路径
named-checkzone test.com /var/named/test.com.zone

rndc status|reload ;service named reload

反向解析

区域名称:网络地址反写.in-addr.arpa.
例如:
192.168.1 --> 1.168.192.in-addr.arpa

添加反向解析库文件
zone信息添加

zone "1.168.192.in-addr.arpa"  IN {
	type master;
	file "192.168.1.zone";
}

假设现有同网段内其他服务器地址
ftp A 192.168.1.10
web A 192.168.1.11
"192.168.1.zone"文件内容:
$TTL 1D
@	IN SOA db1.test.com. admin.test.com ( 1 1D 1H 1W 1H)
	NS db1
db1 A 192.168.1.9
10 PTR ftp.test.com.
11 PTR web.test.com.
这里是简写,完整写法是10.1.168.192.in-addr.arp PTR ftp.test.com

SOA内容简写,对应是版本号,同步时间隔,尝试间隔,失效时间,不存在缓存时间

当前设定的DNS地址是192.168.1.2,测试反向解析
dig -x 192.168.1.10 @192.168.1.2
可以得到反向解析结果

从服务器设置

zone信息

zone "test.com" IN { 
type slave;
masters {192.168.1.2}
file "slave/test.com.slave.zone"; 
};

在主服务器修改zone解析文件后如果要自动推送给从服务器,需要修改版本号,并且添加NS记录,把从服务器的IP加上

子域

子域授权:分布式数据库
正向解析区域子域方法

父域DNS设置
关闭dnssec功能:
vim /etc/named.conf
dnssec-enable no;
dnssec-validation no;
父域
test.com (192.168.1.2)
子域
aa.test.com (192.168.1.3)

父域test.com.zone文件定义字域
$TTL 1D
@	IN SOA ns1.test.com. admin.test.com ( 1 1D 1H 1W 1H)
	NS ns1
aa  NS ns2
ns1 A 192.168.1.9
ns2 A 192.168.1.3

子域aa.test.com.zone文件
$TTL 1D
@	IN SOA ns2.test.com. admin.test.com ( 1 1D 1H 1W 1H)
	NS ns1
ns1 A 192.168.1.3
www A 192.168.1.13

转发服务器

全局转发: 对非本机所负责解析区域的请求,全转发给指定的服务器
Options {
forward first|only;
forwarders { ip;};
};

特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高
zone “ZONE_NAME” IN {
type forward;
forward first|only;
forwarders { ip;};
};

dig命令

dig [-t type] name [@SERVER] [query options]
dig只用于测试dns系统,不会查询hosts文件进行解析

查询选项:
dig +trace test.com:跟踪解析过程
recurse:进行递归解析

测试反向解析:
dig -x IP
或者
dig –t ptr reverseip.in-addr.arpa

模拟区域传送:
dig -t axfr ZONE_NAME @SERVER
dig -t axfr test.com @10.10.10.10
dig –t axfr 100.1.10.in-addr.arpa @192.168.1.2
dig -t NS . @114.114.114.114
dig -t NS . @a.root-servers.net

host命令

host [-t type] name [SERVER]
host –t NS test.com 192.168.1.2
host –t soa test.com
host –t mx test.com
host –t axfr test.com
host 1.2.3.4

rndc命令

rndc:
rndc --> rndc (953/tcp)
rndc COMMAND

子命令
reload: 重载主配置文件和区域解析库文件
reload zonename: 重载区域解析库文件
retransfer zonename: 手动启动区域传送,而不管序列号是否增加
notify zonename: 重新对区域传送发通知
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志文件/var/log/message
trace: 递增debug一个级别
trace LEVEL: 指定使用的级别
notrace:将调试级别设置为 0
flush:清空DNS服务器的所有缓存记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值