1、什么是DNS?
域名系统(英文:Domain Name System,DNS)是因特网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
DNS最早于1983年由保罗·莫卡派乔斯(Paul Mockapetris)发明;原始的技术规范在882号因特网标准草案(RFC 882)中发布。1987年发布的第1034和1035号草案修正了DNS技术规范,并废除了之前的第882和883号草案。在此之后对因特网标准草案的修改基本上没有涉及到DNS技术规范部分的改动。
早期的域名必须以英文句号“.”结尾,当用户访问 www.toxingwang.com 的HTTP服务时必须在址栏中输入:http://www.toxingwang.com.,这样DNS才能够进行域名解析。如今DNS服务器已经可以自动补上结尾的句号。
2、DNS的基本概念:
2.1 DNS记录类型及基本格式
SOA记录:表明此 DNS 名称服务器是为该 DNS 域中的数据的信息的来源。
##SOA记录格式
ZONE NAME TTL IN SOA FQDN ADMINISTRATOR_MAILBOX (
serial number
refresh
retry
expire
na ttl )
##时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
##邮箱格式:admin@toxingwang.com -写为-> admin.toxingwang.com
域名服务器记录(NS记录):用来指定某域名由哪个DNS服务器来进行解析。
##NS(Name Server): ZONE NAME –> FQDN
toxingwang.com. 600 IN NS ns1.toxingwang.com.
toxingwang.com. 600 IN NS ns2.toxingwang.com.
ns1.toxingwang.com. 600 IN A 192.168.8.100
ns2.toxingwang.com. 600 IN A 192.168.8.101##NS记录除了NS记录本身,还应该包含NS对应A记录
主机记录(A记录):A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
##A(address): FQDN–>IPv4
mail.toxingwang.com. 600 IN A 192.168.8.3
别名记录(CNAME记录): 用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
##CNAME(Canonical NAME): FQDN–>FQDN
www2.toxingwang.com. IN CNAME www.toxingwang.com.
邮件交换记录(MX记录):用于电子邮件程序发送邮件时根据收信人的地址后缀来定位邮件服务器。
##MX(Mail eXchanger): ZONE NAME –> FQDN
ZONE NAME TTL IN MX pri VALUE
##优先级:0-99,数字越小级别越高,如:
toxingwang.com. 600 IN MX 10 mail.toxingwang.com.
mail.toxingwang.com. 600 IN A 192.168.8.3
IPv6主机记录(AAAA记录): 与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
服务位置记录(SRV记录): 用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。
反向解析记录(PTR记录):用于将一个IP地址映射到对应的域名,也可以看成是A记录的反向,IP地址的反向解析。
NAPTR记录: 它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。
2.2 DNS查询有两种方式:递归 和 迭代。
递归查询图解:
用户使用toxingwang.com的DNS服务器ns.toxingwang.com解析www.kernel.org主机的递归查询过程如下:
迭代查询图解:
同样用户使用toxingwang.com的DNS服务器ns.toxingwang.com查询www.kernel.org主机的迭代查询过程如下:
本地dns服务器需要发起多次查询请求,迭代方式查询到www.kernel.org主机,而对于用户来说,本地dns服务器却是递归查询,用户只需发起一次查询请求,服务器将查询到的结果反馈给用户。
DNS客户端设置使用的DNS服务器(如上图的ns.toxingwang.com)一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器(如上图的根域、org域等)之间一般采用迭代查询方式。以查询 www.kernel.org 为例:
客户端发送查询报文”query www.kernel.org”至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。
如果记录老化或不存在,则
- DNS服务器向根域名服务器发送查询报文”query www.kernel.org”,根域名服务器返回 .org 域的权威域名服务器地址。
- DNS服务器向 .com 域的权威域名服务器发送查询报文”query www.kernel.org”,得到 .kernel.org 域的权威域名服务器地址。
- DNS服务器向 .kernel.org 域的权威域名服务器发送查询报文”query www.kernel.org”,得到主机 www的A记录,存入自身缓存并返回给客户端。
2.3 DNS监听端口
DNS默认使用tcp53和udp53端口,TCP53端口一般用于区域传送,而其他时候使用UDP53。
3、常见DNS服务器:
目前互联网上最为广泛的DNS服务器为bind,而企业内部,由于很多企业使用windows AD域,因此Windows DNS在企业内部应用较多。其他还包括:
DJBDNS (Dan J Bernstein’s DNS implementation)
MaraDNS
NSD (Name Server Daemon)
PowerDNS
4、BIND9的安装:
- 源码安装:
bind官方网站提供了最新版的bind安装源码,可以下载编译安装:http://www.isc.org/downloads/
- yum源安装:
如果使用RHEL、CentOS,可以使用yum在线安装,如果是ubuntu等,则可以使用apt在线安装。
我这里以Centos使用yum安装为例,测试环境如下:
主机名:ns.toxingwang.com
主机IP:192.168.8.101
[root@ns ~]# rpm -q bind ##查看当前是否安装bind,如果安装的是比较旧的版本,则可以先删除
目前centos 6的安装源提供了bind9.8的安装包
[root@ns ~]# yum list |grep “^bind” ##查找bind安装包
bind.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-chroot.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-dyndb-ldap.x86_64 2.3-2.el6_4.1 @updates
bind-libs.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-sdb.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-utils.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-devel.i686 32:9.8.2-0.17.rc1.el6_4.5 updates
bind-devel.x86_64 32:9.8.2-0.17.rc1.el6_4.5 updates
bind-libs.i686 32:9.8.2-0.17.rc1.el6_4.5 updates
这里只须安装最基本的bind、bind-libs、bind-utils三个组件即可
[root@ns ~]# yum -y install bind bind-libs bind-utils
5、BIND9的基本配置:
5.1 bind的文件:
主配置文件:/etc/named.conf
rndc配置文件:/etc/rndc.conf
数据目录:/var/named/
[root@ns ~]# ls /var/named/
dynamic named.empty named.loopback data named.ca named.localhost slaves
5.2 配置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 “toxingwang.com” IN { ##定义本次试验解析域
type master; ##区域类型为master
file “named.toxingwang”; ##区域数据文件
};zone “localhost” IN {
type master;
file “named.localhost”;
};
5.3 配置zone文件
默认数据文件:
安装好bind98后,默认已经有根域和localhost域的数据文件,本次我们不修改其配置。
配置域toxingwang.com数据文件:
##复制localhost域数据文件作为模板修改
[root@ns named]# cp -p named.localhost named.toxingwang.com ##复制时保留原来的权限
##修改数据文件
[root@ns named]# vi named.toxingwang.com
$TTL 1H ##定义全局TTL宏
@ IN SOA ns.toxingwang.com. admin.toxingwang.com. ( ##从这里到下面反括号都是定义SOA记录
2013081701 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.toxingwang.com.
IN MX 10 mail.toxingwang.com.
ns IN A 192.168.8.101
www IN A 192.168.8.100
mail IN A 192.168.8.3
www2 IN CNAME www.toxingwang.com.
配置检查:
[root@ns named]# named-checkconf ##检查named.conf配置文件是否存在语法错误
[root@ns named]# named-checkzone “toxingwang.com” /var/named/named.toxingwang.com ##检查数据文件
zone toxingwang.com/IN: loaded serial 2013081701
OK
检查无误后即可启动named服务器了:
[root@ns named]# chkconfig named on ##加入开机启动
[root@ns named]# service named start
启动 named: [确定]
5.4 测试解析
测试用具:nslookup、dig
使用nslookup测试时,需先指定server 为named服务器地址