linux系统服务架设之DNS架设

 内容简介:

DNS的简述
DNS服务器的安装
DNS常见名词
DNS配置文件详解
配置主要的DNS服务
DNS的简述
网络中为了区别各个主机,必须给每台主机配置一个唯一的IP地址,但这些数字的地址人们比较难以记忆,所以就采用了“域名”的方式来取代这些数字。
当某台主机要与其他主机进行通信时,就可以利用域名通信,域名向DNS服务器进行查询,转换成相应的IP地址进行通信。
早期的DNS服务是有一个文件提供/etc/hosts文件,但是后来随着互联网的开发,这个文件已经不能满足需求,于是由伯克利大学开发了BIND软件,来进行提供更广的DNS服务。
DNS服务器系统由以下四个组成部分:
DBS域名空间
资源记录
DNS服务器
DNs客户端
域分为:
组织域:com、org、net、cc....
  国家域:cn、tw,hk,....
  反向域:IP-->FQDN
 区域的划分:如图1
 

 DNS的查询过程分为两部分进行
  名称查询从客户端开始,并传输给本机的DNS客户服务查询进行解析,如果本地不能在本机解析查询,则向本机设定的DNS服务器进行解析。如图2
 

 DNS服务进行域名解析有两种方式:
  递归查询:只发送一次请求,而后的查询由DNS服务器完成并返回其结果。
  迭代查询:发送一次或者多次查询。DNS服务器返回一个绝对值或参考值,有客户端自己完成查询。如图3
 

hosts文件 
hosts文件是Linux系统中一个负责IP地址与域名快速解析的文件,/etc/hosts 
Hosts文件包含了IP地址和主机名之间的映射,还包括主机名的别名。 
hosts文件的格式如下: 
IP地址 主机名/域名 如图4
 

DNS服务器的安装
软件包:
bind97:程序主包,提供DNS服务的安装
bind97-libs:提供DNS服务器程序运行的库文件
bind97-utils:DNS工具包
bind97-level:开发包
需要安装bind97,bind97-libs,bind97-utils。安装之前需要卸载系统上之的文件,包括库文件和utils。
rpm -qa bind*     //查询已安装的软件包
rpm -e bind-libs bind-utils //卸载软件包
yum install bind97 bind97-libs bind97-utils //安装bind97必须软件包
安装完成后检查所有包是否安装正确:如图5
 

rpm -qa bind97*
DSN服务的启动和停止
1、启动DNS服务
service named start
2、停止DNS服务
service named stop
3、重启NDS服务
service named restart
4、开启DNS服务的启动选项
chkconfig --list named //查看启动项
chkconfig named on  //开启dns启动项
如图6所示
 

5、重读配置文件,不重启服务而使配置文件生效
service named reload
DNS常见名词:
ZONE:DNS名称,其中包含了存储在DNS服务器上的资源记录。
FQDN:(Fully Qualified Domain Name)主机全名
正向解析:域名到IP地址的解析过程
反向解析:从IP到域名的解析过程
DNS配置文件:
/etc/named.conf:主文件,设置一般的参数,指向该服务器使用的域数据库的存放位置
/var/named/named.ca:根域配置服务文件,指向根域名配置的服务器
/var/named/named.localhost.zone:localhost区的正向解析文件,用于将localhost名字转换为Ip127.0.0.1
/var/named/named.loopback:locahost的反向解析文件,用于将IP127.0.0.1转换为localhost主机名
资源记录类型:
SOA资源记录:起始授权记录(Start of Authority Record),简称SOA记录。SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。 
格式:区域名(当前) 记录类型 SOA 主域名服务器(FQDN) 管理员邮件地址 (序列号 刷新间隔 重试间隔 过期间隔 TTL) 
NS资源记录:名称服务器(NS)资源记录表示该区的授权服务器,它们表示SOA资源记录中指定的该区的主和辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS记录。 
格式:区域名 IN NS 完整主机名(FQDN) 
A资源记录:地址(A)资源记录把FQDN映射到IP地址,因而解析器能查询FQDN对应的IP地址。 
格式:完整主机名(FQDN) IN A IP地址 
PTR资源记录:相对于A资源记录,指针(PTR)记录把IP地址映射到FQDN 
格式:IP地址 IN PTR 主机名(FQDN) 
CNAME资源记录:规范名字(CNAME)资源记录创建特定FQDN的别名。 
格式:别名 IN CNAME 主机名 
MX资源记录:邮件交换(MX)资源记录为DNS域名指定邮件交换服务器。 
格式:区域名 IN MX 优先级(数字) 邮件服务器名称(FQDN)
主配置文件/etc/named.conf,如图7
 

named.confi文件的语法格式:
花括号必须成对出现,并且以;结尾
花括号的前后得有空格
花括号内的每段必须也以;结尾
 
type字段指定区域的类型 
master:表示定义的是主域名服务器 。拥有区域数据文件,并对此区域提供管理数据 
slave:表示定义的是辅助域名服务器。拥有主DNS服务器的区域数据文件的副本,辅助DNS服务器会从主DNS服务器同步所有区域数据 
hint:表示是互联网中根域名服务器。当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表 
forward:一个forward zone是每个域的配置转发的主要部分
 
下面来我们自己架构一个简单的根DNS,
根区域定义
1、配置named.conf文件
 
  
  
  
  
  1. 新建一个named.conf,修改属组和属主。权限为640 
  2. vim /etc/named.conf 
  3. options { 
  4.         directory       "/var/named"; 
  5. }; 
  6. zone "." IN { 
  7.         type hint; 
  8.         file "named.ca"; 
  9. }; 
  10. zone "localhost" IN { 
  11.         type master; 
  12.         file "named.localhost"; 
  13. }; 
  14. zone "0.0.127.in-addr.arpa" IN { 
  15.         type master; 
  16.         file "named.loopback": 
  17. }; 
  18.  
  19.     chown root:named /etc/named.conf 
  20.     chmod 640 /etc/named.conf 
  21.     named-checkconf //检查主配置文件是否有语法错误 
  22.     named-checkzone "." /var/named/named.ca //检查区域文件是否有错误 
SELinux:selinux控制的机制比较特殊,启动DNS服务器的时候需要把SELinux关掉。
 
  
  
  
  
  1. [root@localhost etc]# getenforce    //查看SELinux状态 
  2.     Enforcing 
  3.     [root@localhost etc]# setenforce 0 //临时的关闭SELinux 
  4.     [root@localhost etc]# getenforce 
  5.     Permissive 
  6.     [root@localhost selinux]# vim /etc/selinux/config //配置文件,可以永久关闭。 
 
启动DNS服务如下所示,图8
 

netstat -tunlp查看服务的相关端口,如图9
 

测试:
vim /etc/resolv.conf
nameserver 172.16.7.1 //本机IP做DNS服务器
search localdomain
dig -t A localhost @172.16.7.1 //查找localhost的A记录,如图10
 

DNS服务器案例一
需求规划:
主机:
master:172.16.7.1
slave:172.16.7.2
测试机:172.16.7.3
master:
ns  ns1.chris.cm
www 172.16.7.6
ftp 172.16.7.7
mail 172.16.7.8
chris 172.16.7.9
chrislee cname www
slave:
ns2.chris.com
要求:其能实现正反向解析
master设置:
1、vim /etc/named.conf在下面增加
  
  
  
  
  1. zone "chris.com" IN { 
  2.         type master; 
  3.         file "chris.com.zone" 
  4.     }; 
  5.  
  6.     zone "7.16.172.in-addr.arpa" IN { 
  7.         type master; 
  8.         file "172.16.6.zone"; 
  9.     } 
  10.     如图11所示 
  11.  
  12.     2、vim /var/named/chris.com.zone     //配置chirs.com的正向数据 
  13.     $TTL 600 
  14.     chris.com.      IN      SOA     ns1.chirs.com.  admin.chris.com ( 
  15.                         2013040401 //序列号 
  16.                         1H       //刷新间隔   
  17.                         5M       //重试间隔 
  18.                         2D       //过期间隔 
  19.                         6H)      //否定答案的缓存时长 
  20.                 IN      NS      ns1.chris.com.           
  21.                 IN 10   MX      mail 
  22.     ns1             IN      A       172.16.7.1 
  23.     www             IN      A       172.16.7.6 
  24.     ftp             IN      A       172.16.7.7 
  25.     mail            IN      A       172.16.7.8 
  26.     chris           IN      A       172.16.7.9 
  27.     chrislee        IN      CNAME   chris 
 

 

3、vim /var/named/172.16.7.zone 如下图13
 

4、更改这两个文件的权限和属主属组并测试配置
  
  
  
  
  1. [root@localhost named]# chown root:named chris.com.zone  
  2.     [root@localhost named]# chown root:named 172.16.7.zone  
  3.     [root@localhost named]# chmod 640 chris.com.zone  
  4.     [root@localhost named]# chmod 640 172.16.7.zone  
  5.     [root@localhost named]# named-checkconf  
  6.     [root@localhost named]# named-checkzone "chris.com" /var/named/chris.com.zone  
  7.     [root@localhost named]# named-checkzone "chris.com" /var/named/chris.com.zone  
  8.     zone chris.com/IN: loaded serial 2013040401 
  9.     OK                      //正常 
  10.     [root@localhost named]# named-checkzone "7.16.172.in-addr.arpa" /var/named/172.16.7.zone  
  11.     zone 7.16.172.in-addr.arpa/IN: loaded serial 2013040401 
  12.     OK                      //正常 
5、测试:如图14、15
 

 

slave服务器的设置:
1、先在master服务器上配置named.conf配置文件
  
  
  
  
  1. options { 
  2.         directory       "/var/named"; 
  3. #       recursion yes|no;               //是否为客户端开启递归查询,默认是开启的 
  4.         allow-recursion {172.16.7.0/8; }; //开启递归查询,并规定客户端范围 
  5. #       allow-transfer {any;};          //全局定义,开启区域传输,并规定传输的客户端,默认是开启给所有主机传输 
  6.         
  7. }; 
  8.  
  9.  
  10. zone "." IN { 
  11.         type hint; 
  12.         file "named.ca"; 
  13. }; 
  14.  
  15. zone "localhost" IN { 
  16.         type master; 
  17.         file "named.localhost"; 
  18.         allow-transfer {none; };        //不给任何客户端传输其区域 
  19. }; 
  20. zone "0.0.127.in-addr.arpa" IN { 
  21.         type master; 
  22.         file "named.loopback"; 
  23.         allow-transfer {none; };     //不给任何客户端传输其区域 
  24. }; 
  25.  
  26. zone "chris.com" IN { 
  27.         type master; 
  28.         file "chris.com.zone"; 
  29.         allow-transfer {172.16.7.2; };  //只给客户端172.16.7.2传输此区域 
  30. }; 
  31.  
  32. zone "7.16.172.in-addr.arpa" IN { 
  33.         type master; 
  34.         file "172.16.7.zone"; 
  35.         allow-transfer {172.16.7.2; };      //只给客户端172.16.7.2传输此区域 
  36. }; 
2、配置数据文件chris.com.zone
  
  
  
  
  1. $TTL 600 
  2. chris.com.      IN      SOA     ns1.chirs.com.  admin.chris.com ( 
  3.                         2013040403 
  4.                         1H 
  5.                         5M 
  6.                         2D 
  7.                         6H) 
  8.                 IN      NS      ns1.chris.com. 
  9.                 IN      NS      ns2.chris.com.      //配置slave服务器的NS记录和相应的A记录,如果不配置将无法实现增量传输,就是数据号增加的时候客户端无法更新 
  10.                 IN      MX  10  mail 
  11.                 IN      A       172.16.7.2 
  12. ns1             IN      A       172.16.7.1 
  13. ns2             IN      A       172.16.7.2 
  14. www             IN      A       172.16.7.6 
  15. ftp             IN      A       172.16.7.7 
  16. mail            IN      A       172.16.7.8 
  17. chris           IN      A       172.16.7.9 
  18. chrislee        IN      CNAME   chris 
3、配置172.16.7.zone反向解数据文件
  
  
  
  
  1. $TTL 600 
  2. @       IN      SOA     ns1.chirs.com.  admin.chris.com ( 
  3.                         2013040401 
  4.                         1H 
  5.                         5M 
  6.                         2D 
  7.                         6H) 
  8.                 IN      NS      ns1.chris.com. 
  9.                 IN      NS      ns2.chris.com.  ////配置slave服务器的NS记录和相应的PTR记录,如果不配置将无法实现增量传输,就是数据号增加的时候客户端无法更新 
  10. 1               IN      PTR     ns1.chris.com. 
  11. 2               IN      PTR     ns2.chris.com 
  12. 6               IN      PTR     www.chris.com. 
  13. 7               IN      PTR     ftp.chris.com. 
  14. 8               IN      PTR     mail.chris.com. 
  15. 9               IN      PTR     chris.chris.com. 
  16. 9               IN      PTR     chirs.chris.com. 
4、slave只需要配置named.conf
  
  
  
  
  1. options { 
  2.         directory       "/var/named"; 
  3.  
  4. }; 
  5.  
  6.  
  7. zone "." IN { 
  8.         type hint; 
  9.         file "named.ca"; 
  10. }; 
  11.  
  12. zone "localhost" IN { 
  13.         type master; 
  14.         file "named.localhost"; 
  15. }; 
  16. zone "0.0.127.in-addr.arpa" IN { 
  17.         type master; 
  18.         file "named.loopback"; 
  19. }; 
  20.  
  21. zone "chris.com" IN { 
  22.         type master; 
  23.         file "chris.com.zone"; 
  24. }; 
  25.  
  26. zone "7.16.172.in-addr.arpa" IN { 
  27.         type master; 
  28.         file "172.16.7.zone"; 
        解释如图17
 

        5、测试
        解析测试
        启动测试机7.3,编辑etc/resolv.conf
        nameserver 172.16.7.1
search localdomain
dig -t A ftp.chris.com 结果如图18
 

区域传输测试,如图19
 

下面把master上的序列号加1,再重启服务,master的日志文件如图20
 

查看slave服务器上的文件,如图21
 

OK,此服务器到此已经实现了我们预设的全部功能,架设完毕。
 
泛域名解析:
只需建立一个A记录 *.ZONE NAME.    IN  A  IP
fg:*.chris.com.  IN  A  172.168.0.1
rndc:服务本地/远程控制命令
rndc-confgrn > /etc/rndc.conf //生成rdnc配置文件
如图22所示
 

vim /etc/rndc.conf
:,$-1w >> /etc/named.conf把配置文件追加到named.conf内
vim /etc/named.conf,如图23
 

rndc的子命令选项,如图24
 

利用rdns查询信息,如图25
 

远程主机连接的时候需要把/etc/rndc.conf拷贝到客户端主机上面
scp /etc/rndc.conf 172.16.7.3:/root/
然后修改配置,如图26
 

由于远程控制开启不安全,所以建议不要开启DNS的远程控制
 
DNS子域授权
格式:SUB_NAME IN NS NSSERVER_SUB_ZONE_NAME 
 NSSERVER_SUB_ZONE_NAME IN A IP
fg:ns1.fin.chris.com 172.16.100.1
   ns1.market.chris.com 172.16.200.1
只需要在named.cof内增以下配置即可
fin IN NS ns1.fin
ns1.fin IN A 172.16.100.1
market IN NS ns1.market
ns1.market IN   A   172.16.200.1
然后在100.1和200.2上分别建立相应的DNS服务器,只是域为fin.chris.com和market.chris.com。这样就可以完成DNS的子域授权了,以后这两个小域可以分别负责自己域内主机的域名解析了。
解析转发:
  
  
  
  
  1. 【forward {only|first} 
  2.      forwards {172.16.100.1;}】:所有解析不出来的都转发给父域 
  3.      zone内设置只针对某个域的解析不�_来的转发格式: 
  4.      zone "ZONE_NAME"  
  5.     【forward first; 
  6.      forwards {172.16.100.1;}】: 
  7. 访问控制列表 
  8.     acl ACL_NAME { 
  9.          172.16.0.0/16; 
  10.          127.0.0,0/8 
  11.          };             //外面单独定义 
  12.     allow-query {ACL_NAME;}; //域内调用即可 
  13.         系统内置的两个列表: 
  14.               none 
  15.               any 
智能DNS:视图view
格式
view VIEW_NAME {
    };
一旦定义视图,所有的区域都必须定义在视图中。根区域只需要定义在需要递归的视图内。
fg:
需求规划:
172.16.10.0/8网段通过chris.com域解析
剩余的其他网段通过chrislee.com域解析
编辑named.conf
  
  
  
  
  1. cal a { 
  2.         172.16.10.0/8; 
  3.         127.0.0.1/8; 
  4.     }; 
  5.     options{ 
  6.         directory "/var/named" 
  7.     }; 
  8.     view chris { 
  9.         match-clients {a; }; 
  10.         zone "chris.com" IN { 
  11.             type master; 
  12.             file "chris.com.zone"; 
  13.         }; 
  14.     }; 
  15.     view chrislee   { 
  16.         match-client {any; }; 
  17.         zone "chrislee.com" IN { 
  18.             type master; 
  19.             file "chrislee.com.zone"; 
  20.         }; 
  21.     }; 
下面配置chris.com.zone和chrislee.com.zone数据文件即可实现其分类解析功能

你可能感兴趣的:(linux,bind,dns)