您的位置:首页 > 理论基础

什么是DNS,怎么用虚拟机搭建DNS服务器

2014-03-20 21:11 281 查看
DNS(Domain Name System) 域名解析系统。在互联网上的每一个计算机都有一个唯一的地址称为“IP 地址“ ip地址 不方便记忆,DNS允许用户用一串常见的字母取代(即域名)。用户可能通过域名 查找互联网的的计算机和 服务。DNS可以将此名称解析为与之相关的信息即IP地址。
DNS域名管理系统的域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP 地址,这一命名 的方法或这样管理域名的系统叫做域名管理系统。
DNS的结构分为顶级域名和一级域名
顶级域名是用以识别域名所属类别、应用范围、注册国家等公用信息的代码。
通用顶级域名指的是来自任何国家的任何人都可以自由使用的顶级域名,如".COM"代表商业 实体;".org"代表非营利性组织;".net"代表网络服务者;专用顶级域名".mil"代表军事机构;".edu"代表教育机构;".gov"代表政府机构。凡属于美国的机构,在此顶级域名下注册时,无需加注国家代码。
国家代码:此标准是将国家与地区的英文名称缩写为两位英文字母形成代码,如cn代表中国;hk 代表 香港;tw代表 中国台湾;us代表美国;uk代表英国等等。多数国家要求凡在域名 中加入其国家代码的,主机必须处于该国。 但也有些国家并无这方面的要求。
二级域名
指由域名使用者自己设计的,能够体现使用者的特殊性,并据以同其他人的域名相区别的字符串。
反向域
.in-addr.arpa即是把IP地址反过来写加上这个后缀,如172.16.1.1的反向域为1.1.16.172.in-addr.arpa这里的. 一个都不可以少。
DNS域名解析过程
一、根域
所谓的根域就是所谓的".",其实我们的网址配置当中应该是有最后有一个点的,一般我们在浏览器里输入时会省 略后面的点。这个点就代表了根域。
二、域名划分
这就是我们上面介绍的顶级域和一级域,及反向域。
三、域名服务器
能提供域名解析的服务器,
记录类型及DNS数据库文件格式
DNS数据库文件是一个文本文件,只能包含资源记录或宏定义
资源记录的格式:
name [ttl] IN rrtype value
例如,www.baidu.com 假如他的IP为192.168.0.0
那么它的格式应该写为以下这样
name [ttl] IN rrtype value
www.baidu.com. 200 IN A 192.168.0.0
注意:com后面的点不可少省,[ttl]的时间单位是秒可以省略不写,IN是关键是这个不变,rrtype是 记录文件类型,value是值。
SOA是区域数据为文件的第一条记录只能有一个
name:区域名称,如badu.com.通常可以简写为@
value:主DNS的

A记录
A(Address)记录是用来指定主机名(或域名)对应的IP地址记录。就是服务器的IP,域名绑定,就是告诉DNS当你输入域名的时候给你引导向设置在DNS的A记录所对应的服务器。简单的说,A记录是指定域名对应的IP地址。
NS记录
NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。您注册域名时,总有默认的DNS服务器,每一个注册的域名都是一个DNS服务器来进行解析的。
MX记录
MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。
CNAME记录
CNAME(canonical Name)别名记录,允许您将多个名字映射到同一台计算机。通常用于同时提供www和mail服务的计算机。
TXT记录
TXT记录,一般指某个主机名或域名的说明,多数指管理员的邮箱地址。
TTL值
TTL(Time-To-Live):是IP协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而被丢弃。有很多原因使包在一定时间内不能被传递到目的地。就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器发出解析请求从而获得解析记录;在获得这个记录后,记录会在DNS服务器中保存一段时间,这段时间内如时果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录,而这个记录在DNS服务器上保留的时间,就是TTL值。
PTR值
PTR用一个IP地址映射到对应的域名,也就是A记录的反向,就是IP地址反向解析。
DNS数据库的记录:正解、反解、Zone的意义
主机名(FQDN)的查询到IP的流程为:正解。
从IP到主机名(FQDN)的查询的流程为:反解。
不管是正解还是反解,每个域的记录就是一个域(Zone),也叫做地址池。
正解文件资源记录(Resource Rrcord,RR)格式:
[domain] [ttl] IN [RR type] [RR data]
[待查数据] [暂存时间(秒)] IN [资源类型] [资源内容]
一般ttl是可以省略的
常见的正解文件记录格式如下:
[domai] IN [RR type] [RR data]
主机名. IN A IPV4的IP地址
主机名. IN AAAA IPV6的IP地址
域名. IN NS 服务器主机的名子
域名. IN SOA 管理这个域名的重要参数
域名. IN MX 优先级 接收邮件的服务器主机名子
主机别名. IN CNAME 实际代表这个主机别名的主机名字
RR type的解释
1.A AAAA:查询IP的记录

2.NS:查询管理区域名的服务器主机名

3.SOA:查询管理域名的服务器管理信息

4.CNAME:设置某主机的别名

5.MX:查询某域名的邮件服务器主机名
反解文件记录的RR数据
反解的Zone必须把IP反过来写,而在结尾加上.in-addr.arpa.
PRT就是反解,即是查询IP反对应的主机名。

搭建服务器的软件
我们要使用的DNS软件就是使用柏克莱大学发展出来的BIND,下面我们就来安装bian软件[root@localhost ~]# rpm -qa | grep '^bind'
bind-utils-9.8.2-0.17.rc1.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6.x86_64
[root@localhost ~]# yum install bind
[root@localhost ~]# /etc/init.d/named start <====启动,这里可能会等一会,可能系统要 随机数,也可以拼命敲 键盘直到出现以下结果

Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
DNS的正解、反解查询命令:host、 nslookup、 dig
host [-a] FQDN [server]
host -l domain [server]
选项和参数:
-a:代表列出该主机所有的相关信息,包括IP 、TTL、与排错信息
-l:若后面接的那个domain设置允许allow-transfer时,则列出domain所管理的所有主机名对应的参数
server:这个参数可有可无。
nslookup [FQDN] [server]
可以直接在nslookup加上待查询的主机名或者是IP,[server]可有可无。
dig [options] FQDN [@server]
+trace:就是从. 开始追踪,正解或反解过程中所经过的网关。
-t type :查询的数据主要有MX、NS、SOA等类型,
-x:查询反解信息。

假设我们有以下案例,看看DNS服务器是怎么搭建的
tianmiaomiao.com 172.16.251.
mail 172.16.251.1
www 172.16.251.2
pop mail<========pop是mail的别名
ftp www<=========ftp是www的别名
dns 172.16.251.7
先定义正向区域
[root@localhost ~]# mv /etc/named.conf /etc/named.conf.origin《=把原配置文件给它移走,我自已创建一个
[root@localhost ~]# vim /etc/named.conf
options {

directory "/var/named";
};
zone "." IN { 《==========================定义根区域
type hint;
file "named.ca";
};
zone "localhost."IN {
type master;
file "named.localhost";
};
zone " tianmiaomiao.com." IN {
type master;
file "tianmiaomiao.com.zone";
};
[root@localhost named]# chown root:named /etc/named.conf<======更改文件的属主和属组
[root@localhost named]# chmod 640 /etc/named.conf<============更改文件的权限

编辑区域文件

[root@localhost ~]# cd /var/named
[root@localhost named]# vim tianmiaomiao.com.zone

$TTL 600
@ IN SOA dns.tianmiaomiao.com. admin.tianmiaomiao.com.(
2014031001
2H
10M
7D
1D)
@ IN NS dns
@ IN MX 10 mail
dns IN A 172.16.251.7
mail IN A 172.16.251.2
www IN A 172.16.251.1
pop IN CNAME mail
ftp IN CNAME www
[root@localhost named]# chown root:named tianmiaomiao.com.zone
[root@localhost named]# chmod 640 tianmiaomiao.com.zone
[root@localhost named]# service named configtest
zone localhost/IN: loaded serial 0
zone tianmiaomiao.com/IN: loaded serial 2014031001
[root@localhost named]# service named restart
Stopping named: [ OK ]

下面定义反向解析:
第一步编辑配置文件vim /etc/named.conf,在后面加上
[root@localhost named]vim /etc/named.conf
zone "251.16.172.in-addr.arpa" IN {
type master;
file "172.16.251.zone";
};

[root@localhost named]# cp tianmiaomiao.com.zone 172.16.251.zone -p《==修改我们上面编辑好的文件, 并保持原来的属主和属组
[root@localhost named]# vim 172.16.251.zone
$TTL 600
@ IN SOA dns.tianmiaomiao.com. admin.tianmiaomiao.com.(
2014031001
2H
10M
7D
1D)
IN NS dns.tianmiaomiao.com.
7 IN PTR dns.tianmiaomiao.com.
1 IN PTR www.tianmiaomiao.com.
2 IN PTR mail.tianmiaomiao.com.

[root@localhost named]# service named configtest

zone localhost/IN: loaded serial 0
zone tianmiaomiao.com/IN: loaded serial 2014031001
zone 251.16.172.in-addr.arpa/IN: loaded serial 2014031001

定义主从同步这里我们再打开一个虚拟机,首先在主服务器的区域文件中添加一条A记录和NS记录
[root@localhost named]# vim tianmiaomiao.com.zone

$TTL 600
@ IN SOA dns.tianmiaomiao.com. admin.tianmiaomiao.com.(
2014031001
2H
10M
7D
1D)
@ IN NS dns
@ IN NS ns2
@ IN MX 10 mail
ns2 IN A 172.16.24.55
dns IN A 172.16.251.7
mail IN A 172.16.251.2
www IN A 172.16.251.1
pop IN CNAME mail
ftp IN CNAME www

先确保从服务器可以跟主的通信
[root@localhost ~]# ping 172.16.251.208
ping 172.16.251.208 (172.16.251.208) 56(84) bytes of data.
64 bytes from 172.16.251.208: icmp_seq=1 ttl=64 time=1.80 ms

这一次我们编辑原来配置文件 ,把没用的项目都给他删了,只留以下几项,(你也可以把原来的注释掉)
[root@localhost ~]vim /etc/named.conf

options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursion yes;

/* Path to ISC DLV key */
};

logging {
channel default_debug {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursion yes;
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};

include "/etc/named.rfc1912.zones";《==这一项我们保留

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "tianmiaomiao.com" IN {
type slave;
masters { 172.16.251.7; };
file "slaves/tianmiaomiao.com.zone";

};

[root@localhost ~]# service named start
[root@localhost ~]# ss -tunl
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port

udp UNCONN 0 0 *:55088 *:*
udp UNCONN 0 0 192.168.1.124:53 *:* 《===53 号端口监听了
udp UNCONN 0 0 172.16.24.55:53 *:* 《===53 号端口监听了
udp UNCONN 0 0 127.0.0.1:53 *:*
tcp LISTEN 0 128 :::111 :::*
tcp LISTEN 0 128 *:111 *:*
tcp LISTEN 0 3 192.168.1.124:53 *:* 《===53号 端口监听了
tcp LISTEN 0 3 172.16.24.55:53 *:* 《===53号 端口监听了
tcp LISTEN 0 3 127.0.0.1:53 *:*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 128 *:22 *:*
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息