你的位置:首页 > 操作系统

[操作系统]Linux 学习之DNS服务器


概念:

DNS:Domain Name System 域名系统

FQDN:Fully Qualified Domain Name 完整主机名

正向解析:由主机名查IP地址

SOA:开始验证(Start of Authority)的缩写,

NS:名称服务器(Name Server)的缩写

A 地址记录(Ipv4)
AAAA 地址记录(Ipv6)
AFSDB Andrew文件系统数据库服务器记录(应该是一种文件服务器的类型)
ATMA ATM地址记录(不是自动提款机,具体功能不知道)
CNAME 别名记录
HINFO 硬件配置记录,包括CPU、操作系统信息
ISDN 域名对应的ISDN号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录(从IP地址解释域名)
RP 负责人记录
RT 路由穿透记录(不懂)
SRV TCP服务器信息记录(不懂)
TXT 域名对应的文本信息
X25 域名对应的X.25地址记录

关于上面的名词有一些是我找来的,具体的功能我在实验中也没有涉及。如果有懂的朋友还请教我一下。谢谢

反向解析:由IP查询主机名

PTR:指向(PoinTeR)的缩写,后面记录的数据就是反解到主机名

端口:TCP/UDP 53   TCP 用来主从同步数据,UDP用来用户查询

环境:

服务器:CentOS 6.5 final  服务器名:Server.rhce.ce, IP:192.168.88.254

客户端:Windows XP

实验:

/etc/hosts:手动设置主机名和IP的对应关系

/etc/resolv.conf:linux中配置DNS的文件

/etc/nsswitch.conf :设置DNS优先还是hosts优先

安装软件:

bind          bind主程序
bind-utils客户端查找主机名的相关命令
bind-libsbind相关函数库
bind-chroot锁定bind默认主目录

 

 

 

主要配置文件

因为安装的chroot,所以bind的主目录是/var/named/chroot/

具体信息可以参考:/etc/sysconfig/named文件

cp -p /etc/named* /var/name/chroot/etc/

cd /var/named

cp -p data/  dynamic/ slaves/ named*  chroot/var/named/

***************************************

/var/name/chroot/etc/named.conf            主配置文件

/var/name/chroot/etc/named.iscdlv.key          

/var/name/chroot/etc/named.rfc1912.zones

/var/name/chroot/etc/named.root.key

######################

/var/name/chroot/var/named/data/

/var/name/chroot/var/named/dynamic/

/var/name/chroot/var/named/slaves/

/var/name/chroot/var/named/named.ca

/var/name/chroot/var/named/named.empty

/var/name/chroot/var/named/named.localhost

/var/name/chroot/var/named/named.loopback

 

************************************

主配置文件

named.conf

 1 // named.conf 2  3 options { 4     listen-on port 53 { any; }; 5 //监听 6     listen-on-v6 port 53 { any; }; 7     directory    "/var/named/chroot/etc/named/";   //配置文件目录 8     dump-file    "/var/named/data/cache_dump.db"; 9     statistics-file "/var/named/data/named_stats.txt";10     memstatistics-file "/var/named/data/named_mem_stats.txt";11     allow-query   { any; };12 //访问列表,允许的范围13     recursion yes;14 //是否允许递归查询15     dnssec-enable yes;16     dnssec-validation yes;17 18     /* Path to ISC DLV key */19     bindkeys-file "/etc/named.iscdlv.key";20 21     managed-keys-directory "/var/named/dynamic";22 };23 24 logging {25     channel default_debug {26         file "data/named.run";27         severity dynamic;28     };29 };30 31 zone "." IN {32     type hint;33     file "named.ca";34 };35 //我配置的正向解析域36 zone "rhce.ce" IN {37     type master;38     file "rhce.ce";39 };40 //反向解析域41 zone "88.168.192.in-addr.arpa" IN {42     type master;43     file "88.168.192.in-addr.arpa";44 };45 include "/etc/named.rfc1912.zones";46 include "/etc/named.root.key";

named.conf 完成配置

 rhce.ce 正向域

关于解析文件的内容说明,正解文件资源记录(Resource Record RR)格式,RR type 和RR data

$TTL  600   //缓存记忆时间。默认单位秒,可通过M分,H时,D天,W周来设置

Serial:序号代表这个数据库的新旧,越大表示越新,如果有Slave服务器同步是会根据这个判断,一般采用日期的方式设置

Refresh:更新频率,Slave用来判断多久去向Master要求数据更新。

Retry:失败重试时间,由于某些因素导致Slave无法对Master连接,Slave会尝试重新连接,重新连接的时间就是这个

Expire:失效时间,如果尝试一直失败,Slave就会放弃尝试,并且删除这份下载的zone file信息。

Minumun TTL:

一般各参数默认约定,可根据实际情况设定

Serial <2的32次方Refresh>=Retry*2Refresh+Retry<ExpireExpire>=Retyr*10Expire>=7D

zone 里的类型:hint ,master,slave

zone "." in {type hint;  file "named.ca"; }; 高速缓存DNS."."是DNS的root,仅用来转发请求或缓存

hint:根域使用

master:主域

slave:从域

rhce.ce 正向解析文件

 

 1 $TTL 1D 2 @    IN   SOA   server.rhce.ce. server.rhce.ce. ( 3 ;域名  class  type  域主机名  管理员邮箱 4                     0    ; serial 5                     1D   ; refresh 6                     1H   ; retry 7                     1W   ; expire 8                     3H )  ; minimum 9 @    IN   NS   server.rhce.ce.10 @    IN   NS   rhce.ce.11 @    IN   A    192.168.88.25412 server IN   A    192.168.88.25413 @    IN MX  10   rhce.ce.14 www   IN   A    192.168.88.25415 client IN   A    192.168.88.116 17 18 19 20 21 ;@=当前域,rhce.ce

rhce.ce 正向域配置文件

 

88.168.192.in-addr-arpa  反向解析文件

 1  $TTL 1D 2  @    IN SOA server.rhce.ce. server.rhce.ce. ( 3                     0    ; serial 4                      1D   ; refresh 5                      1H   ; retry 6                      1W   ; expire 7                      3H )  ; minimum 8  @    NS   server.rhce.ce. 9 254   IN   PTR   server.rhce.ce.10 254   IN   PTR   www.rhce.ce.11 254   IN   PTR   ftp.rhce.ce.12 254   IN   PTR   mail.rhce.ce.13 254   IN   PTR   rhce.ce.14 1    PTR   client.rhce.ce.

rhce.ce 反向域配置文件

 

以上是简单的域配置文件及简单的说明

更多的扩展说明

前面我们说了几个DNS的记录类型这里简单的说一下,在我的配置里并没有设置CNAME和AAAA。AAAA就不用讲了,类型类似A,只不过地址是IPV6。这里讲一下CNAME。编辑我们的域配置文件(我的是rhce.ce)添加下面的信息

1 www   IN   A    192.168.88.2542 www1  IN   CNAME  www3 www2  IN   CNAME  www4 www3  IN   CNAME  www

 

分别通过通过dig 命令解析出来的结果如下

  dig www1.rhce.ce
;; ANSWER SECTION:www1.rhce.ce.      86400  IN   CNAME  www.rhce.ce.www.rhce.ce.      86400  IN   A    192.168.88.254 dig www2.rhce.ce;; ANSWER SECTION:www2.rhce.ce.      86400  IN   CNAME  www.rhce.ce.www.rhce.ce.      86400  IN   A    192.168.88.254 dig www3.rhce.ce;; ANSWER SECTION:www3.rhce.ce.      86400  IN   CNAME  www.rhce.ce.www.rhce.ce.      86400  IN   A    192.168.88.254

cache-only DNS Server 设置只有缓存功能的DNS,这个DNS不需要添加其它zone,所以如果设置cache-only 需要删除其它的zone.打开named.conf

 1 options { 2     listen-on port 53 { any; }; 3  4     listen-on-v6 port 53 { any; }; 5     directory    "/var/named/chroot/etc/named/"; 6     dump-file    "/var/named/data/cache_dump.db"; 7     statistics-file "/var/named/data/named_stats.txt"; 8     memstatistics-file "/var/named/data/named_mem_stats.txt"; 9     allow-query   { any; };10 11     recursion yes;12    13     dnssec-enable yes;14     dnssec-validation yes;15     dnssec-lookaside auto;16     forward only;17     forwarders {              //设置转发服务器18     114.114.114.114;          //转发服务器地址19     8.8.8.8;20 };21     /* Path to ISC DLV key */22     bindkeys-file "/etc/named.iscdlv.key";23 24     managed-keys-directory "/var/named/dynamic";25 };26 保留logging 和zone ". "

named.conf  仅做转发

 

======================================================================

 双DNS,主从机

简单主从DNS

master

allow-transfer { 192.168.88.1 ;};    //设置仅允许192.168.88.1来同步我的数据,如果不设置则允许所有人同步我的数据

 Slave

1 zone "rhce.ce" IN {2 3   type slave;4 5   file "slaves/rhce.ce.slave";        //设置从服务器的区域文件名6 7   masters { 192.168.88.254; };      //指定master的地址8 9 };

 ===========================================================================

主从验证设置(TSIG 事务签名)

 上面提到使用allow-transfer来设置允许的从服务器, 但是如果客户端修改IP为我指定的DNS服务器的地址也同样可以获取我的配置文件,所以可能通过加密密钥来验证主从关系。

dnssec-keygen   -a   HAMC-MD5   -b   128   -n   HOST   rhce

//使用dnssec-keygen命令添加一下HMAC-MD5加密的,长度为128位的,指定host类型,文件名为rhce。然后会在当前目录生成两个文件,打开以.private结尾的文件,我们需要使用其中的加密信息

master

  allow-transfer { key; };    //修改原来的IP地址为key,使用key验证    server 192.168.88.253 {        //指明从服务器的是谁        keys {rhce;};           //指明keys文件的名称};    key rhce{                //建立有关key文件的相关数据    algorithm hmac-md5;          //加密类型    secret Pt8a74gEOy0qoI+odK9gRw==;    //密钥值};


除allow-transfer外,所有配置文件都需要写在options{} 外面

 slave

    server 192.168.88.254 {        //指明主服务器的是谁        keys {rhce;};           //指明keys文件的名称};    key rhce{                //建立有关key文件的相关数据    algorithm hmac-md5;          //加密类型    secret Pt8a74gEOy0qoI+odK9gRw==;    //密钥值};

 

 注意:密钥名必须对应

视图VIEW ,可以让不能的机器使用DNS获取不同的IP地址解析,这里我们创建了视图,指定了区域,一般在公司了主要分内网和外网,我们其它可以区别内网和外网,内我们使用自己建议的区域文件,外网我就可以直接使用“.” 这个根域进行转发查询

 1 acl rhca{ 192.168.88.0/24;};    //指定acl策略,配置网段或者主机 2 acl rhce{ 172.30.30.0/24;}; 3 view rhca{                 //创建一个视图名为rhca,使用rhca配置文件 4 match-clients{rhca;};         //指定使用本视图的区域/主机/网段 5 zone "." IN { 6     type hint; 7     file "named.ca"; 8 }; 9 zone "rhce.ce" IN {          //配置文件改变,不改变域名10     type master;11     file "rhca.ca";          //指定域配置文件12 };13 };14 15 view rhce{               //创建一个视图名为rhca,使用rhca配置文件16 match-clients{rhce;};       //指定使用本视图的区域/主机/网段17 zone "." IN {18     type hint;19     file "named.ca";20 };21 zone "rhce.ce" IN {         //配置文件改变,不改变域名22     type master;23     file "rhce.ce";        //指定域配置文件24 };25 };

 ==========================================================================

 子域授权

父层服务器.rhce.ce。

rhce.ce域配置文

test  NS   test.rhce.ce.test  A    192.168.88.253//增加以上两行,test.rhce.ce为子域的服务器名称。并A记录指向IP地址

子域test.rhce.ce

修改named.conf

1 zone "test.rhce.ce" IN {2     type master;3     forward first;                      //设置转发优先4     file "test.rhce.ce";5     forwarders {192.168.88.254;};         //设置转发服务器,父服务器6 };7     
//如果我们只一个域的时候,可以把forwarders设置在options里,如果我们有多个域且只想对这个域进行转发就设置在zone里面

test.rhce.ce子域配置文件

 1 $TTL 1D 2 @    IN SOA test.rhce.ce. root.test.rhce.ce. ( 3                     0    ; serial 4                     1D   ; refresh 5                     1H   ; retry 6                     1W   ; expire 7                     3H )  ; minimum 8 @    NS   test.rhce.ce. 9 @    A    192.168.88.25310 www   A    192.168.0.80

 

到此学习的DNS相关的配置全部完成,后期如果有学习到新的DNS功能再补充,下面是一些操作优化及知识扩充

利用RNDC管理DNS服务器

RNDC是在BIND  version9以后出现的一个功能。它可以轻松管理DNS服务器:检查已经存在的DNS缓存,重新更新某个zone而不需要重启,DNS状态及统计资料等,因为RNDC可以很深入的管理DNS服务器,所以控制的方式是经理RNDC来设置建立密钥(rndc key),并将相关密钥信息写入到named.con中的。

rndc-confgen -r /dev/urandom -a 创建一个rndc key  。默认是会自动创建的

rndc  status  查看rndc 状态

rndc stats        

将目前系统的DNS统计数据记录下来,会在/var/named/data/内产生新文件

rndc dumpdb

 将目前高速缓存的数据记录下来,制作成一个文件同样保存在/var/named/data内。以.db结尾


================================================================

 

查询及验证常用命令

dig

dig  www.rhce.ce

dig -t soa www.rhce.ce

dig -x 192.168.88.254

dig +trace  rhce.ce //通过追踪查询可以看到所经历的DNS服务器

 

nslookup

nslookup www.rhce.ce 

nslookup

set type=any 表示在查询某个domainname 时,将和这个domainname的一些相关数据一并显示出来

>set type=soa

>rhce.ce  查询

nslookup –qt=类型目标域名    //各类型查看上面的概念中说明的

>set q=MX/A/CNAME  

>rhce.ce

 更多nslookup 信息参考  百度NSLOOKUP

host

host  -a  www.rhce.ce   //列出该主机所有的相关信息,包括IP,TTL与排错信息

host  -l   rhce.ce  //列出该domain下的所有主机对应关系,domain的设置要allow-transfer才可以查询

host   www.rhce.ce   192.168.88.53  //强制以192.168.88.53这台DNS来查询

 

***************************************************************************************************************************

本文是一个学习日记,如果大家有参考发现其中问题的可以与我联系。我们一起学习。希望看到的朋友可以多多提问题有意见。谢谢