DNS的详细介绍与具体配置

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

 

域名服务(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,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
域名解析 存储 缓存
DNS是什么?内网电脑需要配置吗?
【10月更文挑战第22天】DNS是什么?内网电脑需要配置吗?
212 1
|
2月前
|
机器学习/深度学习 调度
mmseg配置解析 Polynomial Decay 多项式衰减
Polynomial Decay(多项式衰减)是一种常用的学习率调度方法,通过多项式函数逐步减少学习率,帮助模型更好地收敛。公式为:\[ lr = (lr_{initial} - \eta_{min}) \times \left(1 - \frac{current\_iter}{max\_iters}\right)^{power} + \eta_{min} \]。参数包括初始学习率、最小学习率、当前迭代次数、总迭代次数和衰减指数。适用于需要平滑降低学习率的场景,特别在训练后期微调模型参数。
74 0
mmseg配置解析 Polynomial Decay 多项式衰减
|
2月前
|
网络协议 Docker 容器
docker中的DNS配置
【10月更文挑战第5天】
430 1
|
2月前
|
弹性计算 网络协议 Ubuntu
如何在阿里云国际版Linux云服务器中自定义配置DNS
如何在阿里云国际版Linux云服务器中自定义配置DNS
|
2月前
|
JSON JavaScript 前端开发
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
97 0
|
2月前
|
编解码 计算机视觉
mmseg配置解析 align_corners=False
`align_corners=False` 是图像插值操作中的一个参数,影响输入和输出图像的角点对齐方式。`align_corners=True` 严格对齐角点,而 `align_corners=False` 均匀分布像素点,更适用于保持整体比例关系的任务,如语义分割。
41 0
|
2月前
|
机器学习/深度学习 编解码
mmseg配置解析 contract_dilation=True
`contract_dilation=True` 是 ResNetV1c 中的一种设置,用于解决多层膨胀卷积中的“栅格效应”。通过调整膨胀率,使卷积核在不同阶段更密集地覆盖输入特征图,避免信息丢失,提升特征提取质量,尤其在语义分割任务中效果显著。
48 0
|
2月前
|
XML Java 数据格式
手动开发-简单的Spring基于注解配置的程序--源码解析
手动开发-简单的Spring基于注解配置的程序--源码解析
48 0
|
2月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
86 0
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
95 1

相关产品

  • 云解析DNS
  • 推荐镜像

    更多