开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

DNS的详细介绍与具体配置

简介:
+关注继续查看

 

域名服务(DNS )是一种组织成域层次结构的计算机和网络命名系统。通过DNS服务可以将域名解析为IP地址,从而使得人们能通过简单好记的域名来代替IP地址访问网络。

通过建立DNS数据库,记录主机名称与IP地址的对应关系,驻留在服务器端,为客户端的主机提供IP地址解析服务。当某台主机要与其他主机通信时,就可以利用主机名称向DNS服务器查询该主机的IP地址。

整个DNS域名系统包括以下部分

1 DNS域名空间;

顶级域名(Top Level Domain):国家顶级域名、通用顶级域名、基础结构域名(反向域名)。

clip_image002

2 资源记录;将DNS域名映射到特定类型的资源信息,以便在名称注册和解析时使用。

3 DNS服务器;提供存储和应答资源记录的名称查询服务。

4 DNS客户端;用来查询DNS服务,将域名解析为查询中指定的资源记录。

一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。每个区设置相应的权限域名服务器(authentication name server),用来保存该区中的所有主机的域名到IP地址的映射。

DNS服务器管辖是以“区”为单位。区是DNS服务器实际管辖的范围。区可能小于等于域,但不可能大于域。

clip_image004

树状结构的DNS域名服务器

域名解析过程:

递归查询:即一级一级地找。主机向本地域名服务器的查询一般都采用递归查询。

如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让该主机进行下一步查询。递归查询返回的结果或者是所要查询的IP地址,或者是报错。

迭代查询:一个一个地找。本地域名服务器向根域名服务器的查询通常采用迭代查询。

当根域名服务器收到本地域名服务器发出的迭代查询请求后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步该向哪个域名服务器进行后续的查询,然后让本地域名服务器进行后续的查询(而不是替本地域名服务器进行后续查询)。即告诉你怎么查,而不是替你去查。

为提高DNS查询效率,减轻根域名服务器的负荷和减少因特网上DNS查询报文数量,在域名服务器中广泛使用了高速缓存(或高速缓存服务器),用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

clip_image006

本地域名服务器采用迭代查询

clip_image008

本地域名服务器采用递归查询

DNS资源记录类型: ——摘自《鸟哥的linux私房菜》

$TTL :当有外部 DNS 服务器对你的 DNS 的这个领域进行查询时,这一笔记录会放置在对方 DNS 服务器内几秒钟的意思。

$ORIGIN:这个设定值可以重新指定 zone 的定义。在预设的情况下, 这个正反解数据库档案中的 zone 是由 /etc/named.conf 所指定的,就是 zone 那个参数的功能。 不过,这个 zone 是可以改的,就是用 $ORIGIN 来修订就是了。通常这个设定值不会用到的。

@:这个符号代表 zone 的意思! 以上面的 named.local 来说, 这个档案由 /etc/named.conf 定义出 zone 为 localhost. ,因此在本档案的 @ 就代表 localhost. !

. :这个点 (.) 很重要!因为他代表一个完整主机名称 (FQDN) 而不是仅有 hostname 而已。举例来说,如果你在本设定档上面规范一个主机名称为 www 时,那部主机的 FQDN 为 www.localhost. 如果你写出 www.localhost 时,由于末了没有那个小数点,则 zone 会主动加入该主机名称, 所以最终的 FQDN 会变成 www.localhost.localhost. !

SOA:Start of Authority 的意思。 这个标志代表着 master/slave 相关的认证、授权资料。 不论你的 DNS 系统有没有设定 master/slave 的架构,都需要含有这个设定才好。 SOA 后面共带有三个参数,所以该行为:

[zone] IN SOA [主机名] [管理员 email] ([五组更新时间参数])

每个设定项目你可以这样看:

主机名:就是 master DNS 的主机名称,通常填写本身主机名即可。还是要注意那个小数点的存在与否!非常重要!

管理员 email:本来应该是 "root@localhost." 的,不过因为 @ 已经被作为特殊代号 (zone), 所以就用小数点来取代,因此 email 就成为 "root.localhost." 。

(五组数字):这五个数字分别代表 serial, refresh, retry, expire, ttl。

至于那五个数字的意义是这样的:

Serial:只是一个序号,但这个序号可被用来作为 slave 与 master 更新的依据。 举例来说, master 序号为 100 但 slave 序号为 90 时,那么这个 zone file 的资料就会被传送到 slave 来更新了。 由于这个序号代表新旧资料,通常我们建议你可以利用日期来设定!举例来说,上面的资料是在 2006/10/20 所写的第一次,所以用 2006102001 作为序号代表!

Refresh:除了根据 Serial 来判断新旧之外,我们可以利用这个 refresh(更新) 命令 slave 多久进行一次主动更新;

Retry:如果到了 Refresh 的时间,但是 slave 却无法连接到 master 时, 那么在多久之后,slave 会再次的主动尝试与主机连线;

Expire:如果 slave 一直无法与 master 连接上,那么经过多久的时间之后, 则命令 slave 不要再连接 master 了! 也就是说,此时我们假设 master DNS 可能遇到重大问题而无法上线,则等待系统管理员处理完毕后, 再重新来到 slave DNS 重新启动 bind 吧!

Minimun:这个就有点象是 TTL !

NS:就是 name server 的缩写,这个标志的参数是:[zone] IN NS [主机名称]

注意, NS 后面接的一定是主机名称!代表的意思是说:“这个 zone 的查询请向后面这部主机要求”的意思。 所以,如果你这个 zone 有两部以上的 DNS 服务器负责时,那就必需要写两个 NS 了!而 NS 后面接的主机名称必需要有 IP 的对应啊!因此就需要 A 这个标志了!

A:是正解的符号,参数是:[hostname] IN A [IP]

意思是说该部主机的 IP 对应之意!也是最常用的一个标志了!

MX:就是 Mail eXchanger(MX) 的简写,他的参数是这样写的: 
[hostname] IN MX [顺序] [主机名称]

注意,这个 MX 与 mail server 有关,没有 mail server 的朋友可以省略这个标志,但是如果你的领域内有 mail server 时,就必需要设定这个 MX 才好。MX 的用途是在于『邮件转递』或者是经由上层邮件主机备份的一个机制, 后面设定的那个主机名称通常是你的上游邮件主机,相关的意义我们会在 mail server 章节再跟大家详谈。 另外, MX 后面接的数值是越小越优先,而接的主机名称必需要具有 A 的标志才可以! 
如果你不知道如何设定,通常建议你直接设定成你的 mail server 主机名称即可

CNAME:顾名思义,这个标志在建立“主机别名”的啦!参数为:[hostname] IN CNAME [主机名称]。注意一下, CNAME 后面接的是主机名称。因为有好几部主机名称都对应到同一个 IP 上头, 你当然可以针对每个主机名称给予一个 A ,不过如果未来要改 IP 时,你就得改好几个啦! 此时改为 CNAME 来处理就很简单。如上表所示,如果我想要知道 ftp.vbird.tsai 的 IP 时, DNS 会先告知 ftp.vbird.tsai 属于 linux.vbird.tsai 的 CNAME ,然后再透过 linux.vbird.tsai 来得到正确的 IP。

TXT:这个东西在进行“说明”而已!亦即是前面那部主机的一些信息。 特别注意的是,没事的话,“信息不要写得太详细,有的时候甚至应该要写些错误的讯息!” 为什么呢?如果写得太详细的话,那么那些个 cracker 不就很简单的就可以将您的网站信息取得, 并进而入侵了吗?

DNS服务器类型:主域名服务器

辅助域名服务器:1)容错能力

2)减少广域链路的通信量

3)减轻主服务器的负载

缓存域名服务器:仅仅负责提供缓存解析的结果。

正向解析:从域名到IP地址解析的过程。

反向解析:从IP地址到域名的解析过程。反向解析的作用为服务器进行身份验证。

BIND:Berkeley Internet Name Domain

PowerDNS MyDNS

bind:进程名称:named

安装包:bind bind-libs bind-utils(提供测试工具) bind-chroot caching-nameserver

[root@station39 ~]# yum install bind

主配置文件/etc/named.conf 需要手动建立

options {

directory "/var/named"; //**数据文件存放位置

};

zone "." IN {

type hint ;

file "named.ca";

};

zone "localhost" IN {

type master;

file "localhost.zone";

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

};

数据库文件存放位置:/var/named

named.ca 根名称服务器的地址

[root@station39 named]# dig -t NS . @a.root-servers.net > /var/named/named.ca //**查找全球

根域名服务器的地址并重定向到named.ca

区域文件:

localhost.zone 把localhost解析成127.0.0.1

[root@station39 named]# cat localhost.zone

$TTL 86400

@ //*指代当前域 IN SOA @ //* 负责该区域名称解析的授权主机名 root// 管理员 (

//* 序列号 42 ; serial (d. adams)

//* 设置更新时间间隔 3H ; refresh

//* 重试时间间隔 15M ; retry

//* 设置过期时间 1W ; expiry

//* 设置最小默认TTL缓存时间 1D ) ; minimum

IN NS @

IN A 127.0.0.1

IN AAAA ::1

序列号:用于标识该区域的数据是否有更新,一般情况下,主服务器会在数据更新之后将序列号加1,当辅助域名服务器需要与主服务器进行区域复制的时候,就会比较这个数值。

更新时间间隔:定义辅助域名服务器隔多久时间与主域名服务器进行一次区域复制操作。

重试时间间隔:当辅助域名服务器在该时间内一直不能与主要名称服务器取得联系时,重试区域复制的时间间隔。

最小默认TTL:区域的默认生存时间(TTL)和缓存时间否定应答的缓存时间

named.local 把127.0.0.1解析成localhost

[root@station39 named]# cat named.local

$TTL 86400

@ IN SOA localhost. root.localhost. (

1997022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NS localhost.

1 IN PTR localhost.

启动脚本/etc/init.d/named

辅助控制工具:rndc 远程名称进程控制器:可以远程控制DNS服务器 重新加载读取配置文件,停止或者重启DNS服务器。默认监听端口:953.。

主配置文件:/etc/rndc.conf

需要手动生成: rndc-confgen > /etc/rndc.conf

[root@station39 named]# cat /etc/rndc.conf

# Start of rndc.conf

key "rndckey" {

algorithm hmac-md5;

secret "8CIXalFy/sjPl1U79wWj6A==";

};

options {

default-key "rndckey";

default-server 127.0.0.1;

default-port 953;

};

# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:

# key "rndckey" {

# algorithm hmac-md5;

# secret "8CIXalFy/sjPl1U79wWj6A==";

# };

#

# controls {

# inet 127.0.0.1 port 953

# allow { 127.0.0.1; } keys { "rndckey"; };

# };

# End of named.conf

[root@station39 named]# tail /etc/rndc.conf | head -9 | sed 's/^# //g'

key "rndckey" {

algorithm hmac-md5;

secret "8CIXalFy/sjPl1U79wWj6A==";

};

controls {

inet 127.0.0.1 port 953

allow { 127.0.0.1; } keys { "rndckey"; };

}; //** 将此文件追加到named.conf 就可以使用rndc来控制DNS服务器了。

chown :named /etc/named.conf

chown :named /var/nmed/* -R

service named configtest

rndc flush //**清空缓存

[root@station39 named]# vim a.com.zone

$TTL 86400

$ORIGIN a.com.

@ IN SOA a.com. root (

100 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS ns

IN MX 5 mail

ns IN A 192.168.0.39

mail IN A 192.168.0.39

www IN A 192.168.0.1

www IN A 192.168.0.254

bbs IN CNAME www

ftp IN A 192.168.0.254

fw IN A 192.168.0.254

[root@station39 named]# chown :named a.com.zone

下面通过配置一个主域名服务器来说明DNS配置过程:

主配置文件:

options {

directory "/var/named"; //**数据文件存放位置

allow-notify { 192.168.0.127; } ;

querylog 1 ; //** 启用日志功能 1 开启 0 关闭

version "None of your business !" //** 禁止查询版本号

listen-on { 192.168.0.39 ; }; //**指定监听的地址

allow-recursion { 192.168.0.0/24; }; //**只给某个网段递归查询,也可以使用ACL

allow-query { 192.168.0.0/24; }; //**只允许谁来查询

};

zone "." IN {

type hint ;

file "named.ca";

};

zone "localhost" IN {

type master;

file "localhost.zone";

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

};

zone "a.com" IN {

type master;

file "a.com.zone";

allow-transfer { 192.168.0.127; }; //** 允许区域传送

};

zone "0.168.192.in-addr.arpa" IN {

type master;

file "0.168.192.zone" ;

allow-transfer { 192.168.0.127;};

};

正向区域解析文件

[root@station39 named]# vim a.com.zone

$TTL 86400

$ORIGIN a.com.

@ IN SOA a.com. root (

100 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS ns

IN NS ns2

IN MX 5 mail

ns IN A 192.168.0.39

ns2 IN A 192.168.0.127

mail IN A 192.168.0.39

www IN A 192.168.0.1

www IN A 192.168.0.254

bbs IN CNAME www

ftp IN A 192.168.0.254

fw IN A 192.168.0.254

[root@station39 named]# chown :named a.com.zone

反向区域解析文件:

$TTL 86400

@ IN SOA a.com. root (

100 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS ns.a.com.

39 IN PTR ns.a.com.

39 IN PTR mail.a.com.

1 IN PTR www.a.com.

254 IN PTR www.a.com.

254 IN PTR ftp.a.com.

254 IN PTR fw.a.com.

从域名服务器:192.168.0.127

主配置文件:

options {

directory "/var/named"; //**数据文件存放位置

};

zone "." IN {

type hint ;

file "named.ca";

};

zone "localhost" IN {

type master;

file "localhost.zone";

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

};

zone "a.com" IN {

type slave;

file "slaves/a.com.zone";

masters { 192.168.0.39 ; };

};

zone "0.168.192.in-addr.arpa" IN {

type slave ;

file "0.168.192.zone" ;

masters { 192.168.0.39; };

};

子域授权

在主域名服务器正向区域文件中添加一条记录

cs.a.com. IN NS ns.cs.a.com.

ns.cs.a.com. IN A 192.168.0.161

在子域名服务器中设置主配置文件:

options {

directory "/var/named"; //**数据文件存放位置

};

zone "." IN {

type hint ;

file "named.ca";

};

zone "localhost" IN {

type master;

file "localhost.zone";

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

};

zone "cs.a.com" IN {

type master;

file "cs.a.com.zone";

};

/var/named添加正向区域文件cs.a.com.zone

$TTL 86400

$ORIGIN cs.a.com.

@ IN SOA cs.a.com. root (

100 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS ns

IN NS ns2

IN MX 5 mail

ns IN A 192.168.0.3

ns2 IN A 192.168.0.15

mail IN A 192.168.0.37

www IN A 192.168.0.74

www IN A 192.168.0.25

bbs IN CNAME www

ftp IN A 192.168.0.25

fw IN A 192.168.0.25

PS :父域可以解析子域,子域要想解析父域就要转发。

修改子域主配置文件,添加:

zone "a.com" IN {

type forward

forwarders { 192.168.0. 39 ; };

};

查询服务器版本号:

[root@station39 ~]# dig txt chaos version.bin @127.0.0.1

View:视图,将用户来源分成不同的类别,当属于某一类用户的时候解析成A结果,当属于另一类用户的时候解析成B结果。

PS:只要声明一个view,那么所有的zone都必须在view中建立。

在主配置文件中添加:

view "localhost" {

matche-clients { 127.0.0.0/8 ; };

zone "." IN {

type hint ;

file "named.ca";

};

zone "localhost" IN {

type master;

file "localhost.zone";

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "named.local";

};

};

view "internal" {

match-clients { 192.168.0.0/24; };

zone "a.com" IN {

type msater;

file "a.com.int.zone";

};

zone "0.168.192.in-addr.arpa" IN {

type master ;

file "0.168.192.zone" ;

};

};

view "external" {

match-clients { 192.168.10.0/24; };

zone "a.com" IN {

type master;

file "a.com.ext.zone";

};

zone "10.168.192.in-addr.arpa" IN {

type master ;

file "10.168.192.zone" ;

};

};

再编辑对应的区域文件即可!










本文转自 490999122 51CTO博客,原文链接:http://blog.51cto.com/lyp0909/521616,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
个人介绍与展望
本文着重讲述了自己的情况以及对阿里云ECS服务器的描述与建议,对于飞天加速计划的评价。最后描述了使用过程中的体验,说一说自身的变化与发展,对日后产生了什么样的想法等等。
24 0
Linux各目录及每个目录的详细介绍
Linux各目录及每个目录的详细介绍
33 0
NRPE介绍
一、简介 1、NRPE介绍 NRPE是Nagios的一个功能扩展,它可在远程Linux/Unix主机上执行插件程序。通过在远程服务器上安装NRPE插件及Nagios插件程序来向Nagios监控平台提供该服务器的本地情况,如CPU负载,内存使用,磁盘使用等。
1194 0
linux各目录及每个目录的详细介绍
【常见目录说明】全网第一家 Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其根目录,如下图: /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.
968 0
OSS介绍
1 基本概念介绍 1.1 存储空间(Bucket) 存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。您可以设置和修改存储空间属性用来控制地域、访问权限、生命周期等,这些属性设置直接作用于该存储空间内所有对象,因此您可以通过灵活创建不同的存储空间来完成不同的管理功能。
3731 0
doT.js详细介绍
doT.js特点是快,小,无依赖其他插件。官网:http://olado.github.iodoT.js详细使用介绍 使用方法:{{= }} for interpolation{{ }} for evaluation{{~ }} for array iteration{{? }} for ...
831 0
泛型介绍(接上一篇,具体的事例随后呈上)
2.2接口约束为了规定某个数据类型必须实现某个接口,需要声明一个接口约束(interface constraint).有了这种约束之后,甚至不需要执行类型转换,就可以调用一个显示的接口成员实现.为了确保T类型参数都是先了IComparable接口,public class Binary where T:System.
658 0
C++开源库详细介绍
C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了。
1277 0
+关注
20376
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载