DNS服务

DNS服务
一、DNS基础部分
1、域名的概念
说到DNS,那我们必须来看一下域名的概念,平常我们打开一个网页使用的都是域名。而不是IP地址,
在早期的互联网,都是通过IP地址来访问网页的,后来由于IP地址难以记忆,于是人们就在思考以一种比较容易记忆的方式来实现
互联网的访问,于是就有域名管理系统,也叫(名称服务DNS Domain name System).



2、域名主要分为四个部分:
如:www.baidu.com. 严格意义来上来说在.com后面后还有一个点(.)只是这个点一般不写
(1)根 称(根域)
.(点)
(2)类型 称(顶级域)
组织
gov(政府部门) com(商业部门) edu(教育部门) org(民间团体组织) net(网络服务机构) mil(军事部门)
国家/地区
cn(中国) jp(日本) uk(英国) au(澳大利亚) hk(中国香港)
(3)域名 称(二级域)
baidu
(4)域名 称(三级域)或者主机名
www




3、域名对应IP
上面说到IP地址难以记忆,然后就有了域名管理,那么一个域名(www.baidu.com)对应一个IP地址。
这个IP地址通常指的是主机名---对应的IP地址。
日常使用的计算机通常作为一个DNS的客户端,比如说我们的浏览器.
在Linux中一般使用系统底层的提供的函数gethostbyname()功能进行域名解析
解析可以基于以下几种方式:
基于文件(/etc/hosts)
DNS

客户端------------------------------->DNS服务器 8.8.8.8 发起请求
www.baidu.com的IP地址是多少?

客户端<--------------------------------DNS服务器 8.8.8.8 回应请求
www.baidu.com=115.239.210.27


客户端-------------------------------->找到115.239.210.27(www.baidu.com)服务器
然后客户端找到这个服务器发起要访问的内容

客户端<---------------------------------115.239.210.27想应请求,返回数据
响应应请求,返回数据
Linux常用DNS查询命令
#host (输出信息简单)
#dig (输出相信的信息)

#host www.baidu.com
#dig www.baidu.com


(4)DNS查询图
www.baidu.com.
.(点根域root)-------------------> 保存了(顶级域服务器的IP地址)
|
------------------------------------- \|/
| | | | |----------------->(顶级域)(保存各二级域的对应的IP地址)
| | | | | |
net com org cn gov 等等 |
| |
| |
| \|/
|--------------------------------------------->(二级域)(保存各对应的三级域的IP地址)
--------baidu------------------------- |
| |
| |
| |
------------------------------------------ \|/
| | |------------------------------------------>(三级域或者主机名)(保存了主机名对应的IP地址)
mail www ftp

可以是Linux命令查看验证
# dig +trace www.baidu.com





5、DNS查询类型
(1)递归查询
Client------>本地DNS<-->查询根(.) 一级一级查询
Client------>本地DNS<-->查询顶级域(com)
Client------>本地DNS<-->查询二级域(baidu)
(2)迭代查询(也称循环查询)
Client------>本地DNS<-->查询根(.)由根代查询所有. 这种方式根会缓存所有的IP信息.导致信息库庞大。
/|\
|
|
\|/
查询顶级域(com)
/|\
|
|
\|/
查询二级域(baidu)
正常来说。这两种都不会独立指使用某一套。都是混合起来用。比如本地DNS使用循环(可以缓存信息),其它的用递归.


6、DNS资源记录
$ttl 1D
@ IN SOA @ root(
0 ;serital 作为 slave和master更新的依据,一般利用年月日期来设定
3H;refresh 作为 slave多久进行一次主动更新
15M;retry 如果到refresh的时间,但是slave却无法链接master,多久之后,slave会再次重式链接master
1W;expire 如果slave一直无法与master链接,那么经过多久时间之后,则命令slave不在链接master
1D);minimum 没有制定生存周期的数据,可以保存在数据库中的时间以及TTL.
name class type rdata
www IN A 10.0.0.201
mail IN A 10.0.0.202
aaww IN A 10.0.0.201
@ IN mx 10 mail.zytest.com
ppser IN cname www.baidu.com
www IN cnme sdfdsfsfsfs

记录类型:
A 记录(IPV4地址)
AAAA 表示IPV6记录
MX 表示邮件记录
cname表示别名
PTR 指针(逆向指针)
SRV 服务资源

7、DNS服务器类型
Primay DNS server(Master)主服务器
一个域的主服务器保存该域的zone配置文件,该域所有的配置文件、更改都在该服务器上进行

Seconday DNS server(Slave)从服务器
从服务器一般作为冗余负载使用,一个域的从服务器从该域的主服务器上抓取zone配置文件,从服务器不进行信息修改,
所有的修改都去主服务器上同步。

Caching only server
DNS缓存服务器不存在任何ZONE文件,仅仅是依靠缓存文件客户端提供服务,通常用于负载均和以及加速访问使用.

#dig -t mx qq.com 查询QQ的邮件服务器地址
#dit -x www.qq.com
#dit -t soa www.qq.com






二、DNS基本配置
2.1、BIND
如今DNS使用最广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早由伯克利大学的一名学生编写,现在最新的版本是9,由ISC(Internet Systems Consortium)编写和维护.
BIND支持大多数的操作系统(Linux、UNIX、Mac、Windows)
BIND服务的名称成为(named)

2.2、BIND的安装
# yum -y install bind bind-chroot bind-utils
DNS默认使用UDP,TCP协议,使用默认端口为53号(domain),953(mdc)

2.3、BIND配置文件
BIND配置文件主要由两个位置
/etc/named.conf --BIND服务主配置文件
/var/named/ --zone文件

如果安装了bind-chroot,BIND会被封装到一个伪根目录下,配置文件路径为
/var/named/chroot/etc/named.conf ----BIND服务主配置文件 这个文件默认是没有的。
/var/named/chroot/var/named/ --zone文件--这里面默认是空的。
chroot是通过相关文件封装在一个伪根目录当中,达到安全防护的目的,如果DNS服务被攻破。黑客只能在chroot下活动。不能
切换到真实的根目录。


2.4、BIND模板拷贝
DNS根其它的服务不同,BIND安装后,不会在预设的目录下面生成配置文件,但是在BIND的文档文件夹内/usr/share/doc/bind-9.8.2/sample/,为我们提供了配置文件的模板
sample/etc BIND主服配置文件
sample/var --zone文件。
# cp -r /usr/share/doc/bind-9.8.2/sample/etc/* /var/named/chroot/etc/
# cp -r /usr/share/doc/bind-9.8.2/sample/var/* /var/named/chroot/var/










2.5、配置主配置文件named.conf
# vim /var/named/chroot/etc/named.conf
options
{

directory "/var/named";
listen-on port 53 { 10.0.0.201; };

listen-on-v6 port 53 { ::1; };
};

zone "zytest.com" {
type master;
file "zytest.com.zone";
};

# named-checkconf /var/named/chroot/etc/named.conf 检查是否有语法错误。



2.5、配置zone配置文件
# cd /var/named/chroot/var/named
# cp named.localhost zytest.com.zone 这个zytest.com.zone要和主配置文件里面的相对应.
# vim zytest.com.zone
$TTL 1D
@ IN SOA zytest.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS zytest.com.
A 10.0.2.19
AAAA ::1
www IN A 10.0.2.19
gongda IN A 10.0.2.19
mail IN A 10.0.2.19
IN MX 10 mail.zytest.com.


web服务器zone配置:
$TTL 1D
@ IN SOA zytest.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS zytest.com.
A 10.0.2.19 DNS服务器ip
AAAA ::1
www IN A 10.0.2.128 web服务器ip
gongda IN A 10.0.2.128
mail IN A 10.0.2.128
IN MX 10 mail.zytest.com.





启动 bind 时,需产生 rndc.key 文件,但长时间无响应解决办法,建议先手动添加 rndc.key 文件
记得之前版本中, bind 默认会安装该文件,但导致每台机器 key 文件一致 可通过下面先方法手动生成文件

# rndc-confgen -r /dev/urandom -a
wrote key file "/etc/rndc.key"
之后启动 bind 服务一切正常
# service named restart
停止 named: [确定]
启动 named: [确定]




2.6、验证DNS
# host www.zytest.com
# dig www.zytest.com












三、DNS主从配置(Master-Slave)
在正常的企业当中,特别是一些CDN的公司。如果只有一个DNS远远不够的。
由于负载压力大,没有数据冗余这个是非常危险的一件事情,下面我们通过slave来冗余Master。,
当master出现故障后,那么不至于域名无法解析,slave照样可以替代master工作。






3.1、Master配置
# vim /var/named/chroot/etc/named.conf
options
{

directory "/var/named";
listen-on port 53 { any; };

listen-on-v6 port 53 { any; };
forwarders { 218.30.19.40; }; //提供公网的DNS,如果内部有个DNS,所有客户端对局域网内部的DNS访问,但是外部的访问
//我们可以直接指定外部 DNS,这样我们的内部客户机即可以在内部访问本地DNS,也可以访问 外部 DNS

};

zone "zytest.com" {
type master;
file "zytest.com.zone";
};

zone配置:
# vim zytest.com.zone
$TTL 1D
@ IN SOA zytest.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS zytest.com.
A 10.0.2.201
AAAA ::1
www IN A 10.0.2.201
gongda IN A 10.0.2.201
mail IN A 10.0.2.201
IN MX 10 mail.zytest.com.

# rndc-confgen -r /dev/urandom -a

# service named restart



3.2、Slave配置
# yum -y install bind bind-chroot bind-utils
# cp -rv /usr/share/doc/bind-9.8.2/sample/etc/* /var/named/chroot/etc/
# cp -rv /usr/share/doc/bind-9.8.2/sample/var/* /var/named/chroot/var/
# vim /var/named/chroot/etc/named.conf

// Put files that named is allowed to write in the data/ directory:
directory "/var/named"; // "Working" directory
listen-on port 53 { 10.0.0.202; };

listen-on-v6 port 53 { ::1; };
};

zone "zytest.com" {
type slave;
masters { 10.0.0.201; }; //注意空格
file "slaves/zytest.com.zone";
};

# cd /var/named/chroot/var/named
# chown named.named slaves/
drwxr-xr-x 2 named named 4096 3月 31 02:43 slaves //权限是否为named?

# rndc-confgen -r /dev/urandom -a
# /etc/init.d/named restart 重启服务。

# ls -l /var/named/chroot/var/named/slaves
-rw-r--r-- 1 named named 369 3月 31 02:43 zytest.com.zone //是否已经把主的配置文件抓取过来了?

# vim /etc/resolv.conf
nameserver 10.0.0.202 //把DNS指自己,看看是否可以解析?
# host www.zytest.com
# dig www.zytest.com




posted @ 2015-02-01 17:06  大都比2号  阅读(387)  评论(0编辑  收藏  举报