DNS

 

DNS是什么?

DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。 DNS 命名用于 Internet 等TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。

BIND是什么?

DNS是应用层协议,而BIND是这个协议的具体实现,使用BIND可以完成配置一台DNS服务器。BIND下载地址:https://www.isc.org

DNS记录类型及基本格式

SOA记录

表明此 DNS 名称服务器是为该DNS 域中的数据的信息的来源。

##SOA记录格式

当前区域名字 IN SOA 主服务器的FQDN (

版本号

刷新时间

重试时间

过期时间

否定时间的TTL值)

 ##时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒

##邮箱格式:admin@magedu.com -写为->admin.magedu.com

域名服务器记录(NS记录)

用来指定某域名由哪个DNS服务器来进行解析。

##NS(Name Server): 

区域名  --> 某服务器名

magedu.com IN NS ns1.magedu.com.

##NS记录除了NS记录本身,还应该包含NS对应A记录

主机记录(A记录)

A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。

##A(address): 服务器名   -->      IPv4地址

ns1.magedu.com.   IN   A     192.168.0.1

别名记录(CNAME记录)

用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。

##CNAME(Canonical NAME): 域名  -->   域名
www.mageedu.com.     IN        CNAME        www.magedu.com.

邮件交换记录(MX记录)

用于电子邮件程序发送邮件时根据收信人的地址后缀来定位邮件服务器。

##MX(Mail eXchanger): 区域名   --> 主机名

##优先级:0-99,数字越小级别越高,如:

 magedu.com.    IN    MX    10     mail.magedu.com.

 mail.magedu.com.     IN     A       192.168.8.3

IPv6主机记录(AAAA记录) 

与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址.

反向解析记录(PTR记录)

用于将一个IP地址映射到对应的域名,也可以看成是A记录的反向,IP地址的反向解析。

DNS查询有两种方式:递归和迭代

下面举一个例子演示整个查询过程:

        假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是上图a的几个查询步骤:

 

  •         主机m.abc.com先向本地服务器dns.xyz.com进行递归查询。
  •         本地服务器采用迭代查询。它先向一个根域名服务器查询。
  •         根域名服务器告诉本地服务器,下一次应查询的顶级域名服务器dns.com的IP地址。
  •         本地域名服务器向顶级域名服务器dns.com进行查询。
  •         顶级域名服务器dns.com告诉本地域名服务器,下一步应查询的权限服务器dns.abc.com的IP地址。
  •         本地域名服务器向权限域名服务器dns.abc.com进行查询。
  •         权限域名服务器dns.abc.com告诉本地域名服务器,所查询的主机的IP地址。
  •         本地域名服务器最后把查询结果告诉m.xyz.com。

        整个查询过程共用到了8个UDP报文。

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

        例如,在上面的查询过程中,如果在m.xyz.com的主机上不久前已经有用户查询过y.abc.com的IP地址,那么本地域名服务器就不必向根域名服务器重新查询y.abc.com的IP地址,而是直接把告诉缓存中存放的上次查询结果(即y.abc.com的IP地址)告诉用户。

        由于名字到地址的绑定并不经常改变,为保持告诉缓存中的内容正确,域名服务器应为每项内容设置计时器并处理超过合理时间的项(例如每个项目两天)。当域名服务器已从缓存中删去某项信息后又被请求查询该项信息,就必须重新到授权管理该项的域名服务器绑定信息。当权限服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名解析的正确性。

        不仅在本地域名服务器中需要高速缓存,在主机中也需要。许多主机在启动时从本地服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到名字时才使用域名服务器。维护本地域名服务器数据库的主机应当定期地检查域名服务器以获取新的映射信息,而且主机必须从缓存中删除无效的项。由于域名改动并不频繁,大多数网点不需花精力就能维护数据库的一致性。

DNS监听端口

DNS默认使用tcp53和udp53端口,TCP53端口一般用于区域传送,而其他时候使用UDP53。

常见DNS服务器

目前互联网上最为广泛的DNS服务器为bind,而企业内部,由于很多企业使用windows AD域,因此Windows DNS在企业内部应用较多。其他还包括:

·      DJBDNS (Dan J Bernstein's DNS implementation)

·      MaraDNS

·      NSD (Name Server Daemon)

·      PowerDNS

BIND9的安装

如果使用RHEL、CentOS,可以使用yum在线安装,如果是ubuntu等,则可以用apt在线安装。我这里以Centos使用yum安装为例,测试环境如下:

 

  • 主机名:ns.magedu.com
  • 主机IP:192.168.8.101
[root@ns ~]# rpm -q bind  ##查看当前是否安装bind,如果安装的是比较旧的版本,则可以先删除

目前centos 6的安装源提供了bind9.9的安装包

[root@ns ~]# yum list |grep"^bind"             ##查找bind安装包
·      bind.x86_64 32:9.8.2-0.17.rc1.el6_4.5 

·      bind-chroot.x86_64 32:9.8.2-0.17.rc1.el6_4.5 

·      bind-dyndb-ldap.x86_64 2.3-2.el6_4.1 

·      bind-libs.x86_64 32:9.8.2-0.17.rc1.el6_4.5

·      bind-sdb.x86_64 32:9.8.2-0.17.rc1.el6_4.5 

·      bind-utils.x86_64 32:9.8.2-0.17.rc1.el6_4.5 

·      bind-devel.i686 32:9.8.2-0.17.rc1.el6_4.5 

·      bind-devel.x86_64 32:9.8.2-0.17.rc1.el6_4.5 

·      bind-libs.i686 32:9.8.2-0.17.rc1.el6_4.5 

这里只须安装最基本的bind、bind-libs、bind-utils三个组件即可

[root@ns ~]# yum -y install bindbind-libsbind-utils   ##安装三个包

BIND9的基本配置

bind的文件

1.        主配置文件:/etc/named.conf

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

3.        数据目录:/var/named/

配置named.conf

named.conf的基本配置中,文件主要分两部分,全局配置和zone配置:

默认情况下,named.conf已经有基本配置,我们删除后重新配置后如下:

options {                                       ##全局配置,所有配置都要以分红结尾
listen-on port 53 { 192.168.8.101; };           ##监听端口及地址,注意,大括号与中间内容间需要有空格
allow-query { 192.168.8.0/24; };                ##允许用户发起递归查询的地址范围
directory      "/var/named";                    ##数据文件默认目录

};
zone "."IN {               ##定义跟区域
type hint;                 ##区域类型
file "named.ca";           ##区域对应数据文件
};
zone "magedu.com" IN {    ##定义本次试验解析域
type master;              ##区域类型为master
file "magedu.zong";       ##区域数据文件
};
zone "localhost" IN { #本地区域
type master;
file "named.localhost";
};

配置zone文件

 默认数据文件:

安装好bind9后,默认已经有根域和localhost域的数据文件,本次我们不修改其配置。

配置域magedu.com数据文件

##修改数据文件

[root@ns named]# vi magedu.zone
$TTL 1H                                           ##定义全局TTL宏
@ IN SOA  ns.magedu.com. admin.magedu.com. (      ##从这里到下面反括号都是定义SOA记录
2013081701 ; serial
1D ; 
1H ; 
1W ; 
3H ) ; 
IN NS ns.magedu.com.
IN MX 10 mail.magedu.com.
ns IN A 192.168.8.101
www IN A 192.168.8.100
mail IN A 192.168.8.3

配置检查

[root@ns named]# named-checkconf                                             ##检查named.conf配置文件是否存在语法错误

[root@ns named]#named-checkzone"magedu.zong" /var/named/magedu.zong           ##检查数据文件

检查无误后即可启动named服务器了

[root@ns named]# chkconfig named on                 ##加入开机启动

[root@ns named]# service named start                ##重启服务
 
posted @ 2018-11-26 18:55  cyzcyzz  阅读(176)  评论(0)    收藏  举报