DNS的原理部分我就不多说了,可以参看我前面的文章DNS详解及windows环境下私有根的搭建,我里我主要围绕Linux下的DNS的架设来给大家来讲解一下.
 
Linux下的DNS服务的管理套件名字叫作BIND
 
首先我们来查看一下BIND文件是否已经安装.
用命令 # rpm -qa | grep bind  来查看架设所需的安装包是否已经齐备.
bind-utils-9.2.4-16.EL4 <=====是用户端搜寻主机名称的相关指令,服务器测试工具
bind-libs-9.2.4-2 <=========实现域名解析功能必备库文件
ypbind-1.17.2.-3  
 
上面是REHL4里面默认安装的BIND相关包,没有DNS的主程序包,我们还需要手动安装下列包支持来DNS的架设
 
安装文件在:RHEL4的包文件在光盘的 RedHat/RPMS/ 目录中(注意区分大小写)
                       RHEL5在包文件光盘的 Server/ 目录中(同样注意大小写)
 
挂载光盘后进入包所在路径使用安装命令:
# rpm -ivh bind--9.2.4-2.i386.rpm               DNS服务器主程序 (必须)
#rpm -ivh bind-chroot-9.2.4-2.i386.rpm     锁定bind主程序目录(必须)
 
上面的 bind-chroot 包安装后在/var/named/下会多出 chroot/ 目录,DNS的相关配置会转移到/var/named/chroot/下,关于chroot我在下面的文章里有简单的介绍[url]http://liyongxian.blog.51cto.com/432519/112609[/url].
 
关于主配置文件通过观察发现RHEL4和RHEL5是有些出入的
在RHEL4中的配置文件为 /etc/named.conf
在RHEL5中会将RHEL4中的 named.conf 主配置文件拆分成两个配置文件用以说明服务器的配置信息,在安装 caching-nameserver-x.x.x.x-xxxxxxx.rpm后 /var/named/chroot/etc/ 下会在产生文件
named.caching-nameserver.conf (主配置文件,)
named.rfc1912.zones (区域 配置文件)
/etc/下会产生的两个软链接文件与上面的两个文件相链接
 
下面信息RHEL4和RHEL5基本相同
在 /var/named/chroot/var/named/ 下会产生文件
localdomain.zone (本地域 解析文件--可作为正向解析文件模板使用)
named.local          (反向地址 解析文件--可作为反向解析文件模板使用)
localhost.zone      (本地主机 解析文件--解析DNS服务器自己使用)
named.ca             (根服务器地址解析文件)
及其他一些IPv6解析文件,在此不作详细讨论
服务的启动脚本存放于 /etc/init.d/named  他控制BIND服务的启动和停止过程
 
下面我们来逐一修改配置文件
在RHEL5中,默认的主配置文件已经更名为named.caching-nameserver.conf (为了与RHEL4兼容也可将其更名拷贝到/etc/named.conf)
# vim /etc/named.caching-nameserver.conf
打开文件后修改其中的
listen port 53 { any; };
allow-query { any; };
match-clints { any; };
match-destinations { any; };   
include "/etc/named.rfc1912.zones";     #该行指明了区域配置文件的所在,默认为/etc/named.rfc1912.zones
修改完毕后保存退出
 
以下的操作RHEL4同RHEL5基本相同
RHEL4环境下修改主配置文件 /etc/named.conf  的区域说明部分
RHEL5环境下修改 /etc/named.rfc1912.zones  区域配置文件
在上述两个文件里添加区域记录
例:  zone "itet.com" IN {                          # 指明正向解析区域
                 type   master;                         # 服务器类型(master|slave|hint)
                 file  " itet.com.zone " ;           #  正向区域解析文件位置
                 allow-update  { none; }; };       #  自动更新(禁止)
       zone  " 16.172.in-addr.arpa "  IN {      #  反向区域解析网络
                   type  master ;                        #  服务器类型
                   file  " 172.16.local ";                #  反向解析文件位置
                   allow-update  { none; }; };     
这里需要注意的是,反向解析网络中的反网络号问题
举例说明:
A类网络 10.1.2.3        的反网络号为  10.in-addr.arpa
B类网络 172.16.2.3     的反网络号为 16.172.in-addr.arpa
C类网络 192.168.3.5   的反网络号为   3.168.192.in-addr.arpa
 
进入目录 /var/named/chroot/var/named
拷贝上面我提到的模板文件为我们需要的文件,如例中的itet.com.zone及172.16.local
# cd /var/named/chroot/var/named
# cp -p  localdomian.zone  itet.com.zone (推荐使用以 .zone 结尾的文件)
# cp -p  named.local   172.16.local  (推荐使用以 .local 结尾的文件)
-----------------------------------------------------------------------------------
额外补充一下上述两个文件中信息的作用
$TTL   86400    #  数据的最小存活周期
# ORIGIN  域名.   # 指定"域"
@     IN    SOA    localhost.root.localhost. (   # 起始授权记录应使用完全合格域名
               42   ; Serial       # 操作版本号,数值越大说明记录越新
               3H  ;  Refresh   # 主从服务器同步间隔 3 小时,若版本号相同则不更新
             15M  ;  Retry      #  数据同步失败,再次尝试更新间隔  15 分钟
               1W  ;  Expire    #  数据失效时间  1  周
                1D) ;  minimum  #数据的最小存活周期
         IN  NS    localhost   # NS 记录(服务器记录)也可写成 " 主机DNS名. "
@      IN   MX  邮件服务器DNS 名. # 10.1.3.4 IP数值越小优先级越高
在反向区域解析文件中 没有MX邮件交换记录,没有A记录,没有$ORIGIN变量
-------------------------------------------------------------------------------
修改 .zone 结尾的区域解析文件     # vim itet.com.zone
在最下行直接填写所需要的 A记录,CNAME记录等(注意其中的大小写)
www           IN  A           172.16.0.100
ftp               IN  A           172.16.0.101
 
而后修改反向区域解析文件     # vim 172.16.local
PTR记录格式为:  反主机号   IN   PTR    域名.
反主机号示例:
A 类地址 10.1.3.5        反主机号为  5.3.1
B 类地址  172.16.25.33 反主机号为 33.25
C 类地址  192.168.2.5   反主机号为  5
在最下行写入反向解析所需要的 PTR 记录 (同样需要注意大小写问题)
100.0       IN    PTR         [url]www.itet.com[/url].
101.0       IN    PTR         ftp.itet.com.             (别忘记域名后面的".")
将上述文件修改完成后保存退出
至此配置文件部分修改完毕
 
用命令检查区域解析文件的语法是否正确
# named-checkconf  主配置文件名(默认named.conf)     
# named-checkzone  区域名 区域文件位置
 
配置文件完成以后启动服务
通过命令 # chkconfig --list named 发现在开机进入任何模式下该服务都不启动,将其改成在开机后最常用的init 3 5 模式下启动
# chkconfig --level 35 named on
或用命令: # ntsysv 启动服务管理程序,在里面勾选DNS服务 " named "
查看当前服务是否在运行
# service named status  发现服务尚未启动
# service named start    启动服务 (在此之前确认本机的IP已经配置好,并且如果打算使用本机进行DNS测试的话确保 /etc/resolv.conf 已经正确配置了DNS信息)
 
检测运行情况
用ping命令或用测试工具 nslookup 测试解析情况
 
 
 
辅助DNS服务器配置(主,辅DNS服务器不能同时由一台物理主机担当)
在辅助DNS服务器中修改主配置文件加入区域信息
zone   "域名" {
         type   slave ;
         file   "slaves/正向区域解析文件名";   
         masters { 主服务器IP; }; };
zone  "反网络号.in-addr.arpa"  {
           type   slave ;
           file    " slaves/反向区域解析文件名";
           masters  { 主服务器IP ;}; };
其中slaves/ 指 /var/named/chroot/var/named/slaves 文件夹,用于存放更新同步区域解析文件
 
 
 
同一物理主机多DNS配置
服务器部分与单DNS配置基本相同,这里需要作的是在一块物理网卡上绑定多个IP,因此需要多个"逻辑网卡",Linux下多"逻辑网卡"是通过配置文件实现的.
这里需要说明一下:
eth0 为系统中头一块物理网卡
eth0:1 为 eth0 上的头一块逻辑网卡
因此多逻辑网卡的实现方法为
# cd /etc/sysconfig/network-scripts/
# cp  ifcfg-eth0  ifcfg-eth0:1
然后修改 ifcfg-eth0:1 中的
DEVICE=eth0:1
IPADDR=
NETMASK=
GATEWAY=
 
 bind 常用命令.
named-bootconf # 域名服务器的启动配置脚本
named-checkconf # 域名服务器的配置语法检验
named-checkzone # 区域配置文件检验
dns-keygen # Dns加密密钥生成程序
dnssec-keygen # DNSSEC
dnssec-signzone # 加密密钥生成程序
rndc reload # 域名服务的控制程序.