开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

DNS服务器搭建

简介:
+关注继续查看

DNS解析
DNS是一种基于分布式的数据库系统,并采用客户/服务器模式进行主机名称与IP地址之间的转换DNS作为Internet的服务,实现映射IP与域名的解析

DNS解析类型:

正向解析(Forward Resolve) 功能 :由 Domain Name 查询出 IPAddress,使得网络程序能够通过主机域名访问到目的服务器主机
反向解析(Reverseresolve) 功能 :由 IP Address查询出 DomainName ,用于查询连接工作站是属于哪一个网络域

查询类型:

递归查询:客户送出查询请求后,DNS服务器必须告诉客户机正确的数据(IP地址)或通知客户机找不到其所需数据。如果DNS服务器内没有所需要的数据,则DNS服务器会代替客户机向其他的DNS服务器查询。客户机只需接触一次DNS服务器系统,就可得到所需的节点地址

迭代查询:客户送出查询请求后,若该DNS服务器中不包含所需数据,它会告诉客户机另外一台DNS服务器的IP地址,使客户机自动转向另外一台DNS服务器查询,依次类推,直到查到数据,否则由最后一台DNS服务器通知客户机查询失败

DNS工作原理:

客户机要首先从DNS服务器获www.cnnic.net.cn对应的IP地址,才能和远地服务器建立连接。
DNS域名空间的域名是由分布在不同地方的域名服务器来管理的,域名解析是由用户指定的域名服务

器来完成的。

DNS域名服务采用的是客户/服务器(client/server)工作模式。客户方的解析过程函数

(resolver),嵌套在其它应用的客户程序之内的。

本地域名服务器。本地域名服务器始终运行它的域名服务器进程(named),该进程收到客户请求时,就开始进行域名解析

DNS解析过程:

(1)DNS客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
(2)当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该记录项,则本地的域名服务器就直接把查询的结果返回。
(3)如果本地的缓存中没有该记录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
(4)本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关的下级的域名服务器的地址。
(5)重复第四步,直到找到正确的记录。
(6)本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

资源记录类型:

A:主机记录,建立域名与IP地址之间的映射

CNAME:别名记录,为其它资源记录指定名称的替补

SOA:初始授权记录

NS:名称服务器记录,指定授权的名称服务器

PTR:指针记录,用来实现反向查询

MX:邮件交换记录,指定用来交换或者转发邮件信息的服务器

HINFO:主机信息记录,指明CPU与OS

注:dns的每次查询都是经过查询本地的解析库来完成,每一个解析库文件中所保存的都是资源记录,或宏定义,任何解析库的第一个文件必须是SOA,

安装DNS服务器:首先要安装bind: #yum install bind, #rpm –qc bind :查看生成列表,在 /etc/named.conf 下是主配置文件,其中还包含了其他许多xinetd配置文件

            DNS解析

任何一个dns服务器要想实现解析,第一它要负责这个区域的区域文件

dig –t NS表示要请求解析的类型,NS表示要请求一个NS记录

dig –t NSroot-server.net 查根域的

dig –t NSroot-server.net @a.root-server.net 表示查找 @a.root-server.ne这个域的NS记录有哪些,

dig –t NS .@root-server.net shuom

dig –t NS. 后跟点,是表示直接找根

dig命令:

dig -t 资源记录类型;名称 @server-ip:通过哪台服务器来找;

每个主机中由/etc/resolv.conf指向主机nameserver IP

dig -x IP @server-ip

dig +trace

dig -t axfr zone 验证完全区域传送指定一个区域,

dig –t NS. 直接找根

dig –x IP @server-ip(加资源记录名称):查询反向解析

dig –x 1.1.1.1

dig +trace 跟踪解析过程

dig –t NS . +trace

定义本地负责的一个DNS区域的解析:

第一、首先要去修改主配置文件 /etc/named.conf:注释掉options段中如下选项,也可以修改

//listen-on port 53 { 127.0.0.1; }; --à默认是监视本机

//listen-on-v6 port 53 { ::1; }; -à默认监听本机的53号端口

//allow-query { localhost; }; --à只允许本机查询;默认是监听所以地址上的,支持所以地址查询

当这些注释掉以后启动起来,此时启动named服务:但是缓存DNS服务器;他给用户的客户端数量是有限的,默认是1000 ;如果期望他是个主DNS服务器的话这时候只需要进行一下步骤

文件中options:用来定义全局配置文件

directory:用来定义工作目录的,就是区域文件放在什么地方;所起指的相对路劲都是相对他而言的

allow-query用来定义允许谁来查询的;localhost:只允许本地查询

任何一个配置问价必须要告诉他跟在什么地方,

第二步、去编辑配置文件 # vim /etc/named.rfc1912.zons :在文件尾部新增一个zone
type 指定区域服务类型: master表示是主DNS服务器,

file 指定区域文件名,一般是区域名称加 .zone 定义;

格式:

zone “magedu.com”IN { magedu.com是区域名

typemaster; ----> master 表示主DNS服务器

file “magedu.com.zone”; ------>file:后跟区域文件,一般是区域名称加.zone “magedu.com.zone”指的是相对路劲

};

检测主配置文件语法错误:named-checkconf

然后创建magedu.com.zone的文件

切换到 # /cd /var/named 下

在这里手动创建个

查看# /vim /magedu.com.zone : 这个文件都是资源记录,第一个资源记录必须是SOA

还可以定义宏,最长的宏是TTL:全局定义,

使用: $TTL 600 :说明这是一个宏,600秒:说明这个区域每一个设备文件如果没有定义TTL值都是600秒

#hostname 查看本地主机名

@ ttl IN SOA 主DNS服务器FQDN 管理员邮箱 (

2013081201 ---à序列号

2H ---à刷新时间, refresh time, 通知(notify): 只通知给本区域解析库文件中定义NS记录的所有主机

5M ---à重试时长retry time

7D ---à过期时长

1d ---à否定回答的TTL值

例:

编辑文件切换到/var/named下编辑文件# vim magedu.com.zone

$TTL 600

@ IN SOA dns.magedu.com. admin.magedu.com. ( -à指定主服务器

2013081301

2H -----à表示刷新时间

10M -----à重试时间,10M表示10分钟重试一次

7D -----à过期时间,7D表示一周过期

6H) -----à否定回答的时间,6H表示否定回答6个时

IN NS dns ------à后面可以不用写,它会自动找到定义在/etc/named.rfc1912.zone中与之对应的区域的名称,并会自动补全到后面,如果后面不不全一定不能加点。写全时 一定要加点。如果这一条名称跟第一条一样,前面可以省略@;

IN MX 10 mail

dns IN A 172.16.100.1

mail IN A 172.16.100.2

www IN A 172.16.100.6

www IN A 172.16.100.7 ----à一个主机名可以有两个地址

pop IN A 172.16.100.7

ftp IN CNAME www

检测区域文件语法错误:named-checkzone

以上只是个数据库,地址可以不存在,不管有没有这台主机,都可以完成解析

写完以后,使用 # ls –l 查看文件magedu.com.zone的权限属主属组确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named;

如果不是root和named,就要先改权限: # chmod 640 magedu.com.zone 然后改属主属组# chmodroot:named magedu.com.zone

然后检查主配置文件是否有语法错误: # named-checkconf

再来检查magedu.con.zone的区域对应的文件有无语法错误:

named-checkzone “magedu.com”/var/namd/magedu.com.zone

如果写的没问题使用# service named restart 如果每次写的文件都要重启,服务正在被互联网上使用,你重启正在被请求就会被断掉,一般服务不使用restart

而是用# service named reload

让服务不用重启还能重读配置文件使

dig –t A www.magedu.com @172.16.100.1查看本机能不能完成解析,查看A记录

host –t A www.magedu.com 172.16.100.1 也可以查看

#dig –t NSmagedu.vom @172.16.100.1 这个前面不能加www :查看NS记录

#dig –t MXmagedu.vom @172.16.100.1 查看MX记录

dig –t CNAME ftp查看ftp的正式名称是什么

#dig –t CNAME ftp.magedu.com @172.16.100.1 查看magedu.com的全名是什么

#dig –t SOAmagedu.com @172.16.100.1

dig也可以完成区域传送: #dig –t axfr magedu.com @172.16.100.1 把SOA,NS,MX,A CNAME 全都显示出来axfr 显示完全域名

上面每次都要指向本机@172.16.100.1态麻烦,可以编辑# vim/etc/resolv.conf直接指向本机,

ss–tuan 查看utp协议监听进程:dns named即会监听tcp的53号端口,又会监听utp的53

也可以使用 # netstat – tunl 也可以查看

建立反向区域解析库:

反向区域的区域名称:网络地址反过来.in-addr.arpa

例:100.16.172.in-addr.arpa

第一步编辑 #vim /etc/nemed.rfc1912.zone 在最后面加上

zone “100.16.172.in-addr.arpa”IN {

type master

file “172.16.100.zone”;

};

然后检查主配置文件的语法错误# named-checkconf

接着建立区域设备文件;可也直接把正向的复制过来改动就可以:CNAME不需要反向

cpmagdu.com.zone 172.16.100.zone

然后编辑# vim 172.16.100.zone 反向区域文件不需要MX记录的

$TTL 600

@ IN SOA dns.magedu.com. admin.magedu.com. (

2013081301

2H

10M

7D

6H)

IN NS dns dns.magedu.com. --à后面必须补全,

1.100.16.172.in.addr.arpa. IN NSdns.magedu.com. --à1 后面可以不写,会自动补全

1 IN PTR dns.magedu.com

2 IN PTR mail.magedu.com

6 IN PTR www.magedu.com

8 IN PTR www.magedu.com

8 IN PTR pop.magedu.com

在反向解析库中这些名字必须写全

然后改权限:属主root,属组named权限640 使用# ls –l查看

检查:# named-checkzone “100.16.172.in-addr.arpa”/var/name/172.16.100.zone

然后重新载入 # service named reload

载入后想查看服务器怎么样# rndc status

rndcstats

rndcreload

rndcreconfig

rndc:Remote Name Domain Contoller :远程名称域,或名称服务,进程或控制器;这是个专门控制DNS服务器的工具;它能够让dns服务器听到,也能让dns重新装载主配置文件,重新装载区域文件,显示各个区域的状态信息等,甚至还可以让dns服务器清空缓存,

反向测试:# dig –x 172.16.100.1

对方向区域做完全传送:#dig –t axfr 100.16.172..in-addr.arpa

创建一个辅助dns服务器:

从服务器不是区的从,是域的从,它主要是建立在域的级别上

如果有多台dns服务器,那么必须为每个dns服务器建立ns记录,否则主DNS将不向发送通知

区域定义:编辑 # vim /etc/named.rfc1912.zones

zone "区域名称" IN {

type slave;

file"slaves/ZONE_NAME.zone";

masters { ----àmasters后指向主服务器是谁,括号里写上IP,括号内可以有多个,每一个后面都要以分好结尾,就算有一个也要跟分号,

MASTER_DNS_IP;

MASTER_DNS2_IP;

};

}

例:编辑 # vim /etc/named.rfc1912.zones

zone “magedu.com”IN {

type slave;

file “slaves/magedu.con.zone”

masters { 172.16.100.1; };

};

创建完后检查语法: #named-checkconf

然后回到主服务器。还没定义这个服务器。先要给他一个ns记录

编辑他的区域文件 # /vim magedu.com.zone

加一个ns记录: IN NS ns2

指定ns2是那台主机: ns2 In A 172.16.100.17

注:每一个dns必须有一个ns记录。而且这个ns记录对应的主机名一定得有个A记录,而且这个A记录一定是那台服务器的地址;有一点差错主从服务器都会有故障,

检查: # named-checkzone “magedu.con”magedu.com.zone

在主服务器上先装载下: # rndc reload

然后检测: # dig –t NS magedu.com

启动:# service named start

查看日志:跟dns相关的日志都在、var/log/messages下

tail /var/log/messages

确保从服务器有权限: # dig –t axfr magedu.com @172.16.100.1




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



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

相关文章
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载