DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。 通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。 Internet 的顶级域名由 Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为 Internet的每一台主机分配唯一的 IP 地址。全世界现有三个大的网络信息中心: 位于美国的 Inter-NIC,负责美国及其他地区; 位于荷兰的RIPE-NIC,负责欧洲地区;位于日本的APNIC ,负责亚太地区。 FQDN:(Fully Qualified Domain Name)完全合格域名/全称域名,是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。DNS解析流程:首先查找本机HOSTS表,有的直接使用表中定义,没有查找网络连接中设置的DNS 服务器由他来解析 您可以把DNS服务器配置成以下3类之一: 1.主DNS服务器:数据修改 2.辅助DNS服务器:定期更改,向主服务器请求数据同步,当主服务器出现故障,辅助服务器就停止运作 servial number:版本号,序列号 refresh:刷新时间,检查时间周期,定义多长时间更新一次 retry:重试时间 小于检查时间 expire:过期时间,辅助服务器停止运作 nagative answer TTL:否定答案的缓存时间 (保存于数据文件中) 3.缓存DNS服务转发器是网络上的域名系统 (DNS) 服务器,用来将外部 DNS 名称的 DNS 查询转发给该网络外的 DNS 服务器。也可使用“条件转发器”按照特定域名转发查询。
4.转发器:通过让网络中的其他 DNS 服务器将它们在本地无法解析的查询转发给网络上的 DNS 服务器,该 DNS 服务器即被指定为转发器。使用转发器可管理网络外的名称的名称解析(例如,Internet 上的名称),并改进网络中的计算机的名称解析效率 器: 一个DNS查询可能会是一个非递归查询或递归查询: 一个非递归查询的DNS服务器提供了一个记录的域,它是权威本身,或没有查询其他服务器,它提供了一个结果。 一个递归查询的DNS服务器将全面解答如需要查询其他名称服务器查询(或给出错误)。不支持递归查询的DNS服务器。 解析器,或另一台DNS服务器递归代表的情况下,域名解析器,协商使用递归服务,使用查询头位。解决通常需要遍历多个名称服务器,找到所需要的信息。然而,一些解析器的功能更简单地只用一个名称服务器进行通信。这些简单的解析器依赖于一个递归名称服务器(称为“存根解析器”),为他们寻找信息的执行工作。 根节点服务器a.root-server.net------m.root-server.net
透过主机名查询ip地址的流程: 例:在浏览器输入 时 1.收到用户的请求,先看看自身有木有缓存记录,若无,则向.查询:因为DNS是阶层式架构,每部主机都会管理自己辖下的主机名解释而已, 2.想顶层.(root)查询。但是由于.只记录了.com的信息,此时,会告知“我不知道这部主机。你可以向.com询问,告诉你.com的地址” 3.向第三曾.com查询。依次类推,最后找到 这些我们可以通过dig指令来查看 [root@localhost ~]# dig +trace DNS使用的port number:53 你可以在你的linux系统查/etc/services档案,搜寻domain这个关键词,可以查到53这个port 区域传送类型: 增量区域传送:ixfr 只传送改变的条目 完全区域传送:axfr 适用于主从服务器 区域类型: 主区域:master 从区域:slave 提示区域:hint 定义根所在的地方,记录.的zone 转发区域:forward DNS数据库的记录:正解、反解、ZONE的意义 正向:FQDN-->IP 反向:IP-->FQDN
数据库中的,每一个条目称作一个资源记录 资源记录的格式 NAME (名称) (TTL可省略,可全局定义) IN(网络类型) RT(资源记录类型) VALUE(数据) IN A 1.1.1.1 1.1.1.1 IN PTR 资源记录类型: SOA(Start Of Authority):起始授权记录,只能有一条, ZONE NAME TTL IN SOA MASTER_NS_server_FQDN ADMINSTRATOR_MAILBOX( serial number:版本号,序列号 refresh:刷新时间,检查时间周期,定义多长时间更新一次 retry:重试时间 小于检查时间 expire:过期时间,辅助服务器停止运作 na ttl ):否定答案的缓存时间 时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒 邮箱格式: -写为-> admin.magedu.com(@被识别为域名) 例:magedu.com. 600 IN SOA ns1.magedu.com. admin.magedu.com. ( 2013040101 1H 5M 1W 1D )
NS (name server) :(名称服务器)ZONE NAME-->FQDN从区域到主机名的格式 例:magedu.com. 600 IN NS ns1.magedu.com. magedu.com. 600 IN NS ns2.magedu.com. ns1.magedu.com. 600 IN A 1.1.1.2 ns2.magedu.com. 600 IN A 1.1.1.5
MX(Mail eXchanger) :(邮件交换器)ZONE NAME-->FQDN <定义在正向解析之中> ZONE NAME TTL IN MX pri VALUE 优先级:0-99,数字越小,级别越高 例:magedu.com. 600 IN MX 10 mail.magedu.com. mail.magedu.com. 600 IN A 1.1.1.3
A(address) :FQDN-->IPv4 主机名到ip地址 AAAA :FQDN-->IPv6 PTR(pointer) :(指针记录)IP-->FQDN CNAME(Canonical Name):(别名记录)FQDN-->FQDN Alias IN CNAME FQDN 主配置文件:/etc/named.conf BIND进程的工作属性 区域的定义 options { directory "/var/named" allow-recursion{172.16.0.0/16};能够被递归的客户端来源 recursion no 都不进行递归 allow-query 定义哪些客户端来查询,允许的客户端 allow-transfer {none;} 不允许传送 allow-transfer {172.16.0.0/16}允许谁传送 notify yes;通知从服务器改变 根区域:zone "ZONE NAME" IN { type {master|salve|hint|fowward}; }; 主区域: file "区域名称文件“; 从区域: file ”区域数据文件“; masters { master1_ip}; 秘钥文件:/etc/rndc.key (配置信息为/etc/rndc.conf) 区域数据文件:/var/named/ name.localhost name.loopback 例:要求:a.com 172.16.14.0/24 ns1.a.com. 172.16.14.50 ns2.a.com. 172.16.14.51 . 172.16.14.50 172.16.14.53 mail.a.com. 172.16.14.52 ftp www 1.先删除自带的软件 rpm -e bind 2.安装所需要bind软件(本例以bind97为例) [root@localhost ~]# yum install bind97 [root@localhost ~]# yum install bind97-utils 3.主配置文件(先备份,配置个简单的) 先配置缓存文件 vim /etc/named.conf
4.重启dns服务器 [root@localhost ~]# service named restart Stopping named: [ OK ] Starting named: [ OK ] 尽量使用reload,重读数据即可 临时性地关闭SELinux: [root@localhost ~]# setenforce 0 (要想永久的关闭/etc/selinux/config SELINUX=permissive) 5.测试DNS是否可以运行 [root@localhost etc]# ping 若能ping通,证明DNS缓存服务器建立完成 6.让主机成为DNS服务器 [root@localhost ~]# vim /etc/named.conf 7.编辑正向解析文件,改变权限,和属主属组,并检查语法 [root@localhost ~]# vim /var/named/a.com.zone 8.编辑反向解析文件,改变权限,和属主属组,检查语法 [root@localhost ~]# vim /var/named/14.16.172.in-addr.arpa.zone 9.重启 [root@localhost named]# service named restart
Stopping named: [ OK ] Starting named: [ OK ] 检测:10.使用dig指令.还可以使用nslookup、host等命令 11.下次开机时自启 基础的DNS服务器就完成啦(若没有连网,可以把DNS服务器指向主机 /etc/reslov.conf 把nameserver改为自己的所建立的DNS服务器即可)扩展:建立从服务器,上边的配置文件里定义了从服务器为 ns2.a.com. 1.安装BIND软件包 [root@localhost ~]# yum install bind97 [root@localhost ~]# yum install bind97-utils 2.从主服务器拷贝/etc/named.conf配置文件, 先把/etc/named.conf 备份为/etc/named.conf.orig [root@localhost ~]# mv /etc/named.conf /etc/named.conf.orig拷贝文件
[root@server49 ~]# scp 172.16.14.50:/etc/named.conf /etc/ 建立从服务器的主配置文件 [root@server49 ~]# vim /etc/named.conf查看/var/named/slaves/下的文件,这时应该已经同步过来啦
3.更改主服务器的配置文件,传送并通知从服务器,
查看日志
[root@localhost named]# tail /var/log/messages
Apr 3 01:33:18 localhost named[21728]: zone a.com/IN: sending notifies (serial 2013040302) Apr 3 01:40:50 localhost named[21853]: client 172.16.14.51#36344: transfer of 'a.com/IN': AXFR-style IXFR started 实现了主从服务器的同步扩展:建立子域 编辑主服务器的配置文件- [root@localhost named]# vim /var/named/a.com.zone
- $TTL 600
- a.com. IN SOA ns1.a.com admain.a.com (
- 2013040304
- 1H
- 5M
- 2D
- 6H )
- IN NS ns1.a.com.
- IN NS ns2.a.com.
- IN MX 10 mail.a.com.
- ns1 IN A 172.16.14.50
- ns2 IN A 172.16.14.51
- www IN A 172.16.14.50
- www IN A 172.16.14.53
- mail IN A 172.16.14.52
- ftp IN CNAME www
- qqq IN A 172.16.14.54
- www IN A 172.16.14.55
- fin IN NS ns1.fin #建立子域,指定子域的DNS服务器
- ns1.fin IN A 172.16.14.1 #指定子域的DNS服务器地址
- master IN NS ns1.master
- ns1.master IN A 172.16.14.2
添加子域的名字为fin.acom和master.a.com
切换到172.16.14.1这个虚拟机上上,配置主配置文件
vim /etc/named.conf(当然前提是安装bind软件包)
配置/var/named/fin.a.com.zone,这里只做正向解析,反向解析同上边的差不多
重启服务器
检测
dig命令 dig -t RT NAME 查这个域的DNS服务器 dig -x IP 根据IP查FQDN dig -t A @172.16.14.50 指定通过的端口 host: host -t RT NAME nslookup:交互模式 >server DNS服务器的地址 指定DNS服务器
希望对您们有所帮助!