26.Linux服务BIND服务
DNS: Domain Name Service
作用:就是维护一个主机域名与IP地址的对应关系数据库,在需要的时候为客户端网络程序提供地址解析功能。
正向解析:将主机的名称(域名)解析为对应的IP地址,域名的正向解析是DNS服务器的最基本功能,也是最常用的功能。
反向解析:将主机的IP地址解析为对应的域名。
严格的域名最后还有一个“.”,但一般省略不写。
每个域名代表一个IP。DNS就是用来在IP和域名之间进行转换。 DNS由DNS服务器提供。 www. linuxcast. net 主机名 域名 类型
DNS是一个树状结构,DNS查询从域名右向左查询:www.linuxcast.net.
. (.根DNS服务器,保存下一级服务器地址,根域名服务器)
Com net org cn gov …… (顶级域名服务器,各保存以什么结尾。) linuxcast (授权服务器) www ftp mail
www.magedu.com(此为主机名,FQDN:Full Qualified Domain Name, 完全限定域名) 域名:magedu.com和.com
DNS:名称解析,Name Resolving 就是名称转换(因为背后有查询过程,数据库,称为解析) FQDN<-->IP 172.16.0.1 www.magedu.com. 172.16.0.2 mail.magedu.com. TLD:
组织域:.com, .org, .net, .cc 国家域: .cn, .tw, .hk, .iq, .ir, .jp 反向域: IP-->FQDN 反向:IP-->FQDN 正向:FQDN-->IP
查询: 递归:只发出一次请求
如:A问B,B在问C,C回应B,B回应A。 迭代:发出多次请求
如:A问B,B回应A找C,A在问C。
解析:
正向:FQDN-->IP 反向:IP-->FQDN
DNS:分布式数据库 上级仅知道其直接下级; 下级只知道根的位置;(默认)
DNS服务器功能: 接受本地客户查询请求(递归) 外部客户端请求:请求权威答案 肯定答案:TTL值 否定答案:TTL值
(TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服
务器上缓存时间)
外部客户端请求:非权威答案
DNS服务器类型 主DNS服务器: 数据修改在主上完成 辅助DNS服务器:请求数据同步,定期请求,需要设置下面内容 serial number 定义序列号,主的可以手动改变,从的不要手动改变 refresh 刷新时间,多长时间检查主服务器的版本号(序列号) retry 重试时间,检查主服务器没响应,多长时间重试在去连接 expire 过期时间,检查主服务器一直没反应,多长时间就认为挂了
nagative answer TTL 否定答案的缓存时长,比如来查询a主机,可是没有a主机,
为避免老是来查询,也要有缓存
缓存DNS服务器 转发器
资源记录:
数据库中的,每一个条目称作一个资源记录(Resource Record, RR) 资源记录的格式: TTL 600;
NAME [TTL] IN RRT VALUE www.magedu.com. IN A 1.1.1.1
说明例子:把主机名解析IP地址
名称 [TTL值,可省略] IN(internet) 资源记录类型 数据 www.magedu.com. IN A 1.1.1.1 (注意最后的点要写)
反向: 1.1.1.1 IN PTR www.magedu.com.
其中资源记录类型:
主要进行标示当前这条记录所扮演什么角色的,如标示谁是web服务器,谁是mail服务器。 其中主要有: A(address): FQDN-->IPv4
主机名转换为IP地址的,最常用的,只要是主机名转换IP地址的都是A记录 AAAA:FQDN-->IPv6
主机名转换IPV6地址解析 PTR(pointer):IP-->FQDN
指针记录,IP转换主机名
CNAME(Canonical NAME): FQDN-->FQDN 别名 www2.magedu.com.
IN
CNAME
www.magedu.com.
说明www2.magedu.com.是www.magedu.com.的别名
NS(Name Server): ZONE NAME --> FQDN
用来指定该区域由哪个DNS服务器来进行解析。 magedu.com. 600 IN NS ns1.magedu.com. magedu.com. 600 IN NS ns2.magedu.com. ns1.magedu.com. 600 IN A 1.1.1.2 ns2.magedu.com. 600 IN A 1.1.1.5
说明:当前域名为magedu.com,用NS指定他的主机名是ns1.magedu.com.。 当前域名为magedu.com,用NS指定他的主机名是ns2.magedu.com.。 当前主机名为ns1.magedu.com.,转换IP地址为1.1.1.2。
当前主机名为ns2.magedu.com.,转换IP地址为1.1.1.5。 其中NA和A记录要成组出现。
MX(Mail eXchanger): ZONE NAME --> FQDN 用来指定邮件服务器 格式:ZONE NAME TTL
IN
MX pri
VALUE
优先级:,如果有多台,就用比较优先级,0-99,数字越小级别越高 magedu.com. 600 IN MX 10 mail.magedu.com. mail.magedu.com. 600 IN A 1.1.1.3
说明:域名为magedu.com.用MX指定为邮件服务器,主机名为mail.magedu.com.。 主机名为mail.magedu.com.,转换IP是1.1.1.3。 10为优先级,当有多台时,就靠优先级来找。 MX和A记录成对出现。
SOA(Start Of Authority): 必须写在第一条!
第一个的资源记录,在域名系统 (DNS) 区域的任何文件应是起始授权机构 (SOA) 资源记录。SOA 资源记录表明此 DNS 名称服务器是为该 DNS 域中的数据的信息的最佳来源。 ZONE NAME TTL IN SOA FQDN ADMINISTRATOR_MAILBOX ( serial number refresh retry expire na ttl ) 说明格式:区域名称 TTL值 IN 起始授权机构 主机名 邮箱地址( serial number 定义序列号,主的可以手动改变,从的不要手动改变 refresh 刷新时间,多长时间检查主服务器的版本号(序列号) retry 重试时间,检查主服务器没响应,多长时间重试在去连接 expire 过期时间,检查主服务器一直没反应,多长时间就认为挂了
nagative answer TTL 否定答案的缓存时长,比如来查询a主机,可是没有a主机,
为避免老是来查询,也要有缓存)
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒 邮箱格式不能写@符号,用点表示:admin@magedu.com -写为-> admin.magedu.com
说明例子: magedu.com. 600 IN SOA ns1.magedu.com. admin.magedu.com. ( 2013040101 1H 5M 1W 1D )
说明:区域名称是magedu.com.,TTL值为600,用IN表示internet,资源记录SOA,主机名是ns1.magedu.com.,邮件地址为admin.magedu.com.( 版本号,最长不超过10位 刷新时间 重试时间 过期时间
否定答案的缓存时长)
可以写在一行,最后按上面的格式,清晰。
域:Domain 逻辑概念 区域:Zone 物理概念
例如:一个域包括正向解析和反向解析,正向解析叫区域,反向解析是另一个区域。
区域文件中第一条记录必须为SOA。
区域传送
比如当辅助DNS从主DNS更新后,下次连接主DNS需要50分钟后,假如主DNS更改了信息,辅助DNS还有40多分钟后在连接主DNS是否有更新信息,这个时间的信息是不和主DNS一样的,这就需要推送,主DNS一有更新,就推送给辅助DNS,这个转送过程就叫区域传送。
区域传送的类型: 完全区域传送: axfr 增量区域传送:ixfr 区域类型: 主区域:master 从区域:slave 提示区域:hint 转发区域:forward
Bind的简介
Linux下架设DNS服务器通常是使用Bind程序来实现的。Bind是Berkeley Internet Name Domain Service的简写,它是一款实现DNS服务器的开放源码软件。Bind原本是美国DARPA资助伯克里大学(Berkeley)开设的一个研究生课题,后来经过多年的变化发展,已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上绝大多数的DNS服务器有都是用Bind来架设的。
目前Bind软件由因特网软件联合会(Internet Software Consortium,ISC)这个非赢利性机构负责开发和维护。
查看yum中bind版本:
[root@rh5 ~]# yum list | grep \"^bind\" Unable to read consumer identity
bind97.x86_64 32:9.7.0-6.P2.el5_7.4 installed bind97-libs.i386 32:9.7.0-6.P2.el5_7.4 installed bind97-libs.x86_64 32:9.7.0-6.P2.el5_7.4 installed bind97-utils.x86_64 32:9.7.0-6.P2.el5_7.4 installed
bind.x86_64 30:9.3.6-20.P1.el5 newyum bind-chroot.x86_64 30:9.3.6-20.P1.el5 newyum bind-devel.i386 30:9.3.6-20.P1.el5 newyum bind-devel.x86_64 30:9.3.6-20.P1.el5 newyum bind-libbind-devel.i386 30:9.3.6-20.P1.el5 newyum bind-libbind-devel.x86_64 30:9.3.6-20.P1.el5 newyum bind-libs.i386 30:9.3.6-20.P1.el5 newyum bind-libs.x86_64 30:9.3.6-20.P1.el5 newyum bind-sdb.x86_64 30:9.3.6-20.P1.el5 newyum bind-utils.x86_64 30:9.3.6-20.P1.el5 newyum bind97-chroot.x86_64 32:9.7.0-6.P2.el5_7.4 newyum bind97-devel.i386 32:9.7.0-6.P2.el5_7.4 newyum bind97-devel.x86_64 32:9.7.0-6.P2.el5_7.4 newyum [root@rh5 ~]# 说明:
有两个系列,两组不同的包,分别是bind系列和bind97系列,其中utils包提供了很多工具,libs是库文件,所以这两个文件需要装上: [root@rh5 ~]# rpm -ql bind97-utils (命令行工具) /usr/bin/dig /usr/bin/host /usr/bin/nslookup /usr/bin/nsupdate
/usr/share/man/man1/dig.1.gz /usr/share/man/man1/host.1.gz /usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz [root@rh5 ~]#
安装bind97,安装之前先把系统自带的bind卸载:
由于我们选用bind97版本,所以需要先卸载系统自带的bind版本的bind-libs和bind-utils: [root@rh5 ~]# rpm -e bind-libs bind-utils
装上bind97版本的bind97-libs bind97-utils: [root@rh5 ~]# yum install bind97-libs bind97-utils
主包是bind97,我们安装bind97主包: [root@rh5 ~]# yum -y install bind97
查看生成那些文件:
[root@rh5 ~]# rpm -ql bind97
/etc/NetworkManager/dispatcher.d/13-named /etc/logrotate.d/named /etc/named
/etc/named.conf (主配置文件) /etc/named.iscdlv.key /etc/named.rfc1912.zones /etc/named.root.key /etc/rc.d/init.d/named /etc/rndc.conf /etc/rndc.key
/etc/sysconfig/named (服务脚本的配置文件) /usr/lib64/bind
/usr/sbin/named (主程序)
/usr/sbin/named-checkconf (检查配置文件的是否有语法错误) /usr/sbin/named-checkzone (检查区域文件的是否有语法错误) ………………. [root@rh5 ~]#
bind97说明: 主配置文件:/etc/named.conf 定义了BIND进程的工作属性 定义了区域的定义
实现rndc远程控制密钥文件/etc/rndc.key rndc: Remote Name Domain Controller远程名称服务控制器 密钥文件 配置信息:/etc/rndc.conf /var/named/
区域数据文件,需要手动创建
启动脚本文件:/etc/rc.d/init.d/named {start|stop|restart|status|reload} 安装完后有两个检查命令:
named-checkconfig 检查主配置文件的 name-checkzone 检查区域
bind97-chroot.x86_64包说明:(此包以下学习中不装)
chroot 的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是 系统中的一个子目录而已.这样做的目的是为了提高安全性.因为在chroot的模式下,bind可以
访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中.
bind97主配置文件说明: 配置文件说明:
[root@rh5 ~]# vim /etc/named.conf //
// named.conf //
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). //
// See /usr/share/doc/bind*/sample/ for example named configuration files. //
options { (选项,全局选项) listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; };
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\"; allow-query { localhost; }; recursion yes;
dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file \"/etc/named.iscdlv.key\";
};
logging { (定义日志) channel default_debug {
file \"data/named.run\"; severity dynamic; }; };
zone \".\" IN { (定义区域) type hint;
file \"named.ca\"; };
include \"/etc/named.rfc1912.zones\"; (用include包含后面的文件,也可以写进来) [root@rh5 ~]#
/var/named目录下说明: [root@rh5 named]# pwd /var/named
[root@rh5 named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves [root@rh5 named]# named.ca文件:
[root@rh5 named]# ll named.ca
-rw-r----- 1 root named 1892 Feb 18 2008 named.ca [root@rh5 named]#
里面是13个全球根服务器地址,如果该软件没有,可以用命令生成,dig命令: [root@rh5 named]# dig -t NS .
named.localhost正向区域文件: 专门建立本地回环地址的。
[root@rh5 named]# ll named.localhost
-rw-r----- 1 root named 152 Jun 21 2007 named.localhost [root@rh5 named]#
named.loopback反向区域文件
[root@rh5 named]# ll named.loopback
-rw-r----- 1 root named 168 Dec 15 2009 named.loopback [root@rh5 named]#
DNS: 监听的协议及端口: 53/udp :因为udp协议速度快,不需要三次握手。 53/tcp :主辅服务器传输数据,为了保持完整性,需要用到tcp的53端口。
953/tcp, rndc :远程控制时需要用到。
什么叫套接字(SOCKET): 就是ip加端口,IP:PORT 如:192.168.1.56:53
配置文件相关格式说明: listen-on port 53 { 127.0.0.1; };
假设当前主机有两个地址,192.168.0.12:53和172.16.100.1:53,有台主机是192.168.0.13,当前只监听了172.16.100.1:53,当0.13发给0.12:53端口发起请求,这时,并不能响应,因为没有监听这个地址。
当想监听这两个地址时,需要把两个地址都写进来,或者写0.0.0.0:53,表示监听当前主机所有地址或者不写地址:listen-on port 53;。
listen-on就是说明监听哪个地址哪个端口上的,127.0.0.1只能监听本机,所以不能监听远程请求的响应,所以要想让他工作,就需要改为要监听那个网的地址。
options {
listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; };
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\";
allow-query { localhost; }; (设置谁可以来查询,localhost为本地) recursion yes; (给不给别人递归) };
说明:
这是全局配置,下面的zone 区域也要听从该设置,每一行有参数和他的值组成,其中directory的值最关键,需要告诉DNS去哪里找数据文件, 语法:
options { (注意花括号前面的空格) listen-on port 53 { 127.0.0.1; }; (注意花括号前后要有空格) directory \"/var/named\"; (注意结尾的分号) };
首先是options后面要跟空格,用花括号括起来。
每一行完整的语句结尾要有分号,花括号的前后要有空格。
注意named配置文件的属主和属组权限: [root@rh5 named]# ll /etc/named.conf
-rw-r----- 1 root named 930 Feb 15 2010 /etc/named.conf [root@rh5 named]#
区域定义格式:
zone “ZONE NAME” IN {
type {master|slave|hint|forward}; }
说明:
zone为关键字 “区域名字” IN为关键字 { 类型 主|从|根|转发 (从中选一个) }
如果是主区域,还需要定义区域数据文件: zone “ZONE NAME” IN {
type master;
file “区域数据文件”; }
说明:
使用file定义区域数据文件,要和directory定义的一样,可以直接使用相对路径,如named.ca。
如果是从区域,还需要定义区域数据文件: zone “ZONE NAME” IN { type slave;
file “区域数据文件”; masters { master1_ip; }; }
说明:
masters { 主DNS服务器的IP; };,注意花括号里面的分号也要有,可以有多个master2_ip。
如果是根区域,只需要类型为hint,区域文件named.ca就可以: zone “.” IN {
type hint; file \"named.ca\"; }
配置一台基本的DNS:(缓存服务器)
把系统自带的配置文件备份,自己写一个:
[root@rh5 named]# mv /etc/named.conf /etc/named.confbak20150409 [root@rh5 named]# vim /etc/named.conf options {
directory \"/var/named\"; };
zone \".\" IN {
type hint;
file \"named.ca\"; (要确保named.ca该文件有,系统自带) };
zone \"localhost\" IN { (正向解析localhost) type master;
file \"named.localhost\"; (文件可以用系统自带的named.localhost) };
zone \"0.0.127.in-addr.arpa\" IN { (反向解析需要是反过来写网段地址) type master;
file \"named.loopback\"; (文件可以用系统自带的named.loopback) };
\"/etc/named.conf\" [New] 18L, 270C written [root@rh5 named]# 说明:
只要写好上面基本项就可以当成一个服务器了。
更改文件属主属组和权限:
[root@rh5 named]# ll /etc/named.conf
-rw-r--r-- 1 root root 270 Apr 9 14:16 /etc/named.conf [root@rh5 named]# chmod 640 /etc/named.conf
[root@rh5 named]# chown root:named /etc/named.conf [root@rh5 named]# ll /etc/named.conf -rw-r----- 1 root named 270 Apr 9 14:16 /etc/named.conf [root@rh5 named]#
检查配置文件和区域文件有无语法错误:
[root@rh5 named]# named-checkconf /etc/named.conf (没有错误提示就可以) [root@rh5 named]# named-checkzone \".\" /var/named/named.ca
zone ./IN: has 0 SOA records (无关的错误,不用理会) zone ./IN: not loaded due to errors. [root@rh5 named]#
说明:
named-checkzone \"根\" 文件路径
[root@rh5 named]# named-checkzone \"localhost\" /var/named/named.localhost zone localhost/IN: loaded serial 0 OK
[root@rh5 named]# named-checkzone \"0.0.127.in-addr.arpa\" /var/named/named.loopback zone 0.0.127.in-addr.arpa/IN: loaded serial 0 OK
[root@rh5 named]#
启动named服务:
[root@rh5 named]# service named start
Starting named: [ OK ] 启动信息都会记录到/var/log/messages下: [root@rh5 named]# tail -5 /var/log/messages
Apr 9 14:27:56 rh5 named[7072]: command channel listening on ::1#953 Apr 9 14:27:56 rh5 named[7072]: the working directory is not writable
Apr 9 14:27:56 rh5 named[7072]: zone 0.0.127.in-addr.arpa/IN: loaded serial 0 Apr 9 14:27:56 rh5 named[7072]: zone localhost/IN: loaded serial 0 Apr 9 14:27:56 rh5 named[7072]: running [root@rh5 named]#
关闭SELINUX:
[root@rh5 named]# setenforce 0 setenforce: SELinux is disabled [root@rh5 named]#
查看监听端口:
[root@rh5 named]# netstat –tunlp
tcp 0 0 192.168.1.155:53 0.0.0.0:* LISTEN 7072/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 7072/named udp 0 0 192.168.1.155:53 0.0.0.0:* 7072/named udp 0 0 127.0.0.1:53 0.0.0.0:* 7072/named tcp 0 0 ::1:953 :::* LISTEN 7072/named [root@rh5 named]#
测试是否可以做DNS: [root@rh6 ~]# hostname rh6.en
[root@rh6 ~]# cat /etc/resolv.conf nameserver 192.168.1.155 [root@rh6 ~]#
[root@rh6 ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
64 bytes from 220.181.111.188: icmp_seq=1 ttl=53 time=3.18 ms 64 bytes from 220.181.111.188: icmp_seq=2 ttl=53 time=3.01 ms [root@rh6 ~]#
设置开机启动named:
[root@rh5 ~]# chkconfig --list named
named 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@rh5 ~]# chkconfig named on [root@rh5 ~]# chkconfig --list named
named 0:off 1:off 2:on 3:on 4:on [root@rh5 ~]#
就可以在互联网上解析了!目前只是一台缓存服务器!
5:on 6:off 配置一台能够解析域名的DNS:
我们有一个域名:mageedu.com ns为:192.168.1.155 www为:192.168.1.155 mail为:192.168.1.157 ftp和www同一台机子。
能够解析mageedu.com的DNS服务器:
第一步,在主配置文件中定义mageedu.com区域(正向解析): [root@rh5 ~]# vim /etc/named.conf (接上面) zone \"mageedu.com\" IN { type master;
file \"mageedu.com.zone\"; (注意:此时mageedu.com.zone没有) };
\"/etc/named.conf\" 23L, 348C written [root@rh5 ~]#
检查配置文件语法:
[root@rh5 ~]# named-checkconf /etc/named.conf [root@rh5 ~]# service named restart
Stopping named: [ OK ] Starting named:
Error in named configuration: zone localhost/IN: loaded serial 0
zone 0.0.127.in-addr.arpa/IN: loaded serial 0
zone mageedu.com/IN: loading from master file mageedu.com.zone failed: file not found zone mageedu.com/IN: not loaded due to errors. _default/mageedu.com/IN: file not found
[FAILED] [root@rh5 ~]#
说明:语法提示没有错误,但是重启服务提示错误,注意:named-checkconf只是检查语法错误,不能检查配置错误,如文件有没有。
在/va/named目录下建立区域数据文件mageedu.com.zone文件: [root@rh5 named]# vim mageedu.com.zone $TTL 600
@ IN SOA ns1.mageedu.com. admin.mageedu.com. ( 20150109 (以后更改该文件内容把这个+1) 1H 5M 2D
6H ) IN NS ns1 IN MX 10 mail
ns1 IN A 192.168.1.155 mail IN A 192.168.1.157 www IN A 192.168.1.155 ftp IN CNAME www
\"mageedu.com.zone\" [New] 13L, 371C written [root@rh5 named]#
说明:
区域数据文件里面只能放资源记录,第一条一定要是SOA资源记录,而且每条要有TTL值,如果每条都写没有必要,就可以在开头定义一个TTL ,TTL 600代表600秒。
每行的mageedu.com.可以用@代替,自动读取引用/etc/named.conf里面zone区域设置: zone \"mageedu.com\" IN { 就是引号里面的。
ns1.mageedu.com.主DNS服务器的名称,这里假如主机名是这个。 admin.mageedu.com.邮箱名,用点代表@。
NS用来指定该区域由哪个DNS服务器来进行解析。 MX邮件服务器,10为优先级。 A记录主机名转换IP地址。
(也就是说NS和MX要域名对应主机名,再用A记录主机名对应IP地址)
改变区域数据文件权限和属组:
[root@rh5 named]# ll mageedu.com.zone
-rw-r--r-- 1 root root 371 Apr 9 15:23 mageedu.com.zone [root@rh5 named]# chmod 640 mageedu.com.zone
[root@rh5 named]# chown root:named mageedu.com.zone [root@rh5 named]# ll mageedu.com.zone
-rw-r----- 1 root named 371 Apr 9 15:23 mageedu.com.zone [root@rh5 named]#
检查区域数据文件:
[root@rh5 named]# named-checkzone \"mageedu.com.zone\" /var/named/mageedu.com.zone zone mageedu.com.zone/IN: loaded serial 2015040101 OK
[root@rh5 named]#
重启named服务:
[root@rh5 named]# service named restart
Stopping named: [ OK ] Starting named: [ OK ] [root@rh5 named]#
测试: dig命令:
dig –t 资源记录类型NAME dig –x ip 根据IP查找主机名
host命令:
查询名称的解析结果。 host –t 资源记录类型 域名
nslookup命令:
C:\\Users\\dwzhang>nslookup (查看当前DNS服务器) 默认服务器: dialdns.bta.net.cn Address: 202.106.46.151
> server 192.168.1.155 (指定DNS服务器来查询) 默认服务器: localhost Address: 192.168.1.155
> set q=A (用set命令,用q=资源记录来查询) > www.mageedu.com 服务器: localhost
Address: 192.168.1.155
名称: www.mageedu.com Address: 192.168.1.155
> set q=NS
> mageedu.com 服务器: localhost
Address: 192.168.1.155
mageedu.com nameserver = ns1.mageedu.com ns1.mageedu.com internet address = 192.168.1.155 >
查找mageedu.com的A记录: [root@rh6 ~]# dig -t A mageedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> -t A mageedu.com ;; global options: +cmd ;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40121
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION: (问题,找mageedu.com的A记录) ;mageedu.com. IN A
;; AUTHORITY SECTION: (权威DNS服务器)
mageedu.com. 600 IN SOA ns1.mageedu.com. admin.mageedu.com. 2015040101 3600 300 172800 21600
;; Query time: 0 msec
;; SERVER: 192.168.1.155#53(192.168.1.155) ;; WHEN: Thu Apr 9 15:44:24 2015 ;; MSG SIZE rcvd: 75
[root@rh6 ~]#
[root@rh6 ~]# dig -t NS mageedu.com
[root@rh6 ~]# dig -t CNAME ftp.mageedu.com
[root@rh6 ~]# host -t A www.mageedu.com www.mageedu.com has address 192.168.1.155 [root@rh6 ~]# host -t MX mageedu.com
mageedu.com mail is handled by 10 mail.mageedu.com. [root@rh6 ~]# host -t SOA mageedu.com
mageedu.com has SOA record ns1.mageedu.com. admin.mageedu.com. 2015040101 3600 300 172800 21600 [root@rh6 ~]#
[root@rh6 ~]# ping www.mageedu.com
PING www.mageedu.com (192.168.1.155) 56(84) bytes of data. 64 bytes from 192.168.1.155: icmp_seq=1 ttl=64 time=0.171 ms 64 bytes from 192.168.1.155: icmp_seq=2 ttl=64 time=0.149 ms 64 bytes from 192.168.1.155: icmp_seq=3 ttl=64 time=0.187 ms [root@rh6 ~]#
正向解析已经成功!
设置mageedu.com的反向解析:
第一步:在主配置文件中定义mageedu.com区域(反向解析): [root@rh5 named]# vim /etc/named.conf (加上该内容) zone \"1.168.192.in-addr.arpa\" IN { type master;
file \"192.168.1.zone\"; };
\"/etc/named.conf\" 28L, 435C written [root@rh5 named]#
第二步:在/va/named目录下建立区域数据文件192.168.1..zone文件: 可以直接复制正向区域文件,用-p选项,也复制文件属性: [root@rh5 named]# cp -p mageedu.com.zone 192.168.1.zone [root@rh5 named]# ll 192.168.1.zone
-rw-r----- 1 root named 369 Apr 9 15:40 192.168.1.zone [root@rh5 named]# vim 192.168.1.zone $TTL 600
@ IN SOA ns1.mageedu.com. admin.mageedu.com. (
2015040101 (以后更改该文件内容把这个+1) 1H 5M 2D 6H )
IN NS ns1.mageedu.com. 155 IN PTR ns1.mageedu.com. 155 IN PTR www.mageedu.com. 157 IN PTR mail.mageedu.com.
\"192.168.1.zone\" 11L, 355C written [root@rh5 named]# 说明:
SOA记录和正向的一样。
PTR是ip地址对应主机名,主机名需要全写,不要忘记最后的点。
第三步:检查区域数据文件:
[root@rh5 named]# named-checkzone \"1.168.192.in-addr.arpa\" 192.168.1.zone zone 1.168.192.in-addr.arpa/IN: loaded serial 2015040101 OK
[root@rh5 named]#
第四步:重启named服务:
[root@rh5 named]# service named restart
Stopping named: [ OK ] Starting named: [ OK ] [root@rh5 named]#
第五步:测试 windows测试
C:\\Users\\dwzhang>nslookup 默认服务器: dialdns.bta.net.cn Address: 202.106.46.151
> server 192.168.1.155 默认服务器: localhost Address: 192.168.1.155
> set q=PTR > 192.168.1.155 服务器: localhost
Address: 192.168.1.155
155.1.168.192.in-addr.arpa name = www.mageedu.com 155.1.168.192.in-addr.arpa name = ns1.mageedu.com 1.168.192.in-addr.arpa nameserver = ns1.mageedu.com ns1.mageedu.com internet address = 192.168.1.155 >
泛域名解析
所谓“泛域名解析”是指:利用通配符* (星号)来做次级域名以实现所有的次级域名均指向同一IP地址。
泛解析的用途:
1.可以让域名支持无限的子域名(这也是泛域名解析最大的用途)。 2.防止用户错误输入导致的网站不能访问的问题
3.可以让直接输入网址登陆网站的用户输入简洁的网址即可访问网站
DNS递归
查询: 递归:只发出一次请求
如:A问B,B在问C,C回应B,B回应A。 迭代:发出多次请求
如:A问B,B回应A找C,A在问C。
DNS不应该给所有人递归,压力太大,所以一般只给自己管的域递归。
如何定义给谁递归:定义是否开启递归功能。 需要在主配置文件中设置:
[root@rh5 ~]# vim /etc/named.conf options {
directory \"/var/named\"; recursion yes; };
说明:
在全局选项中加入recursion yes;,表示允许递归,但是会给所有都递归。 如果不定义这项,默认也是开启的。
如何定义给指定的客户端递归: [root@rh5 ~]# vim /etc/named.conf options {
directory \"/var/named\"; allow-recursion { 192.168.1.0/24; }; };
说明:
在全局中加入allow-recursion { 192.168.1.0/24; };,表示只给1.0网段递归,注意花括号里面的空格,还有两个分号。
测试跟踪DNS:
[root@rh6 ~]# dig +trace -t A www.baidu.com @192.168.1.155
测试递归:
[root@rh6 ~]# dig +recurse -t A www.baidu.com @192.168.1.155
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> +recurse -t A www.baidu.com @192.168.1.155
;; global options: +cmd ;; Got answer: …………………….
测试一下是否给127.0.0.1递归:
[root@rh6 ~]# dig +recurse -t A www.baidu.com @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> +recurse -t A www.baidu.com @127.0.0.1 ;; global options: +cmd
;; connection timed out; no servers could be reached [root@rh6 ~]#
如果想给本机递归,需要加上127.0.0.1!
区域传送的类型:
完全区域传送: axfr 增量区域传送:ixfr
完全区域传送: axfr,mageedu.com区域的所有记录全部显示。 [root@rh6 ~]# dig -t axfr mageedu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> -t axfr mageedu.com ;; global options: +cmd
mageedu.com. 600 IN SOA ns1.mageedu.com. admin.mageedu.com. 2015040101 3600 300 172800 21600
mageedu.com. 600 IN NS ns1.mageedu.com. mageedu.com. 600 IN MX 10 mail.mageedu.com. ftp.mageedu.com. 600 IN CNAME www.mageedu.com. mail.mageedu.com. 600 IN A 192.168.1.157 ns1.mageedu.com. 600 IN A 192.168.1.155 www.mageedu.com. 600 IN A 192.168.1.155
mageedu.com. 600 IN SOA ns1.mageedu.com. admin.mageedu.com. 2015040101 3600 300 172800 21600 ;; Query time: 1 msec
;; SERVER: 192.168.1.155#53(192.168.1.155) ;; WHEN: Fri Apr 10 09:40:05 2015
;; XFR size: 8 records (messages 1, bytes 216)
[root@rh6 ~]#
注意:这时不安全的,需要定义只可以谁进行传送,一般指定义从服务器进行传送。
定义谁可以传送区域数据文件:
用一条allow-transfer { 192.168.1.157; };如果加在options中,对下面的zone都有效,不过最好对各自定义,加在zone里面,根区域不用加: [root@rh5 ~]# vim /etc/named.conf options {
directory \"/var/named\"; allow-recursion { 192.168.1.0/24; }; };
zone \".\" IN {
type hint;
file \"named.ca\"; };
zone \"localhost\" IN { type master;
file \"named.localhost\"; allow-transfer { none; }; };
zone \"0.0.127.in-addr.arpa\" IN { type master;
file \"named.loopback\"; allow-transfer { none; }; };
zone \"mageedu.com\" IN { type master;
file \"mageedu.com.zone\";
allow-transfer { 192.168.1.157; }; };
zone \"1.168.192.in-addr.arpa\" IN { type master;
file \"192.168.1.zone\";
allow-transfer { 192.168.1.157; }; };
[root@rh5 ~]# service named reload
Reloading named: [root@rh5 ~]#
[root@rh5 ~]# dig -t axfr mageedu.com (在本机查看失败)
[ OK ] ; <<>> DiG 9.7.0-P2-RedHat-9.7.0-6.P2.el5_7.4 <<>> -t axfr mageedu.com ;; global options: +cmd
;; connection timed out; no servers could be reached [root@rh5 ~]#
查看资源记录区域文件更改情况:
[root@rh5 ~]# cat /var/named/mageedu.com.zone $TTL 600
@ IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015040101 1H 5M 2D 6H ) IN NS ns1 IN MX 10 mail
ns1 IN A 192.168.1.155 mail IN A 192.168.1.157 www IN A 192.168.1.155 ftp IN CNAME www [root@rh5 ~]#
改为:
[root@rh5 ~]# cat /var/named/mageedu.com.zone $TTL 600
@ IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015040102 (改完之后要加1) 1H 5M 2D 6H ) IN NS ns1 IN MX 10 mail
ns1 IN A 192.168.1.155 mail IN A 192.168.1.157 [root@rh5 ~]#
[root@rh6 ~]# dig -t IXFR=2015040101 mageedu.com
说明:IXFR=2015040101指的是资源记录SOA里面的序列号,意思是查询mageedu.com序列号为2015040101后的更改情况。
配置DNS的从服务器:辅助服务器
192.168.1.155 主DNS 192.168.1.188 辅DNS
主DNS已经配置好,接上面。
1.首先在1.188上,安装bind97,安装之前先把系统自带的bind卸载:
由于我们选用bind97版本,所以需要先卸载系统自带的bind版本的bind-libs和bind-utils: [root@rh5 ~]# rpm -e bind-libs bind-utils
2.装上bind97版本的bind97-libs bind97-utils: [root@rh5 ~]# yum install bind97-libs bind97-utils
3.主包是bind97,我们安装bind97主包: [root@rh5 ~]# yum -y install bind97
安装完成后,所有默认配置文件和主DNS上是一样的,需要注意,无论是主,还是从DNS服务器上装完包之后都有一个叫做slaves目录,在/var/named目录下: [root@fuzhu named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves [root@fuzhu named]#
需要注意这个目录的属主属组和权限: [root@fuzhu named]# ll -d slaves/
drwxrwx--- 2 named named 4096 Nov 17 2011 slaves/ [root@fuzhu named]#
复制文件要有写权限,/var/named没有,所以无法写入。
4.配置从DNS服务器的主配置文件:
[root@fuzhu ~]# mv /etc/named.conf /etc/named.confbak (备份默认配置文件) 可以从主DNS服务器拷贝过来named.conf配置文件,可以方便点: [root@fuzhu ~]# scp 192.168.1.155:/etc/named.conf /etc/
The authenticity of host '192.168.1.155 (192.168.1.155)' can't be established. RSA key fingerprint is 48:4b:0a:bd:04:b4:8d:f9:88:46:1e:a6:92:44:ae:3e. Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.155' (RSA) to the list of known hosts.
Address 192.168.1.155 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
root@192.168.1.155's password:
named.conf 100% 627 0.6KB/s 00:00 [root@fuzhu ~]#
[root@fuzhu ~]# vim /etc/named.conf options {
directory \"/var/named\"; allow-recursion { 192.168.1.0/24; }; };
zone \".\" IN {
type hint;
file \"named.ca\"; };
zone \"localhost\" IN { type master;
file \"named.localhost\"; allow-transfer { none; }; };
zone \"0.0.127.in-addr.arpa\" IN { type master;
file \"named.loopback\"; allow-transfer { none; }; };
zone \"mageedu.com\" IN { type slave;
file \"slaves/mageedu.com.zone\"; masters { 192.168.1.155; }; allow-transfer { none; }; };
zone \"1.168.192.in-addr.arpa\" IN { type slave;
file \"slaves/192.168.1.zone\"; masters { 192.168.1.155; }; allow-transfer { none; }; };
[root@fuzhu ~]# named-checkconf /etc/named.conf [root@fuzhu ~]#
5.更改主配置文件属组:
[root@fuzhu ~]# ll /etc/named.conf
-rw-r----- 1 root root 688 Apr 10 11:05 /etc/named.conf
[root@fuzhu ~]# chown root:named /etc/named.conf [root@fuzhu ~]# ll /etc/named.conf
(检查一下配置文件) (改为named) -rw-r----- 1 root named 688 Apr 10 11:05 /etc/named.conf [root@fuzhu ~]#
6.到主DNS服务器上在区域数据文件上把辅助DNS主机名加上NS资源记录和A记录: NS记录就是标记DNS是谁的。
[root@rh5 ~]# vim /var/named/mageedu.com.zone $TTL 600
@ IN SOA ns1.mageedu.com. admin.mageedu.com. ( 2015040101 1H 5M 2D 6H ) IN NS ns1
IN NS ns2 (加入此条) IN MX 10 mail
ns1 IN A 192.168.1.155 mail IN A 192.168.1.157 www IN A 192.168.1.155 ftp IN CNAME www
ns2 IN A 192.168.1.188 (加入此条)
\"/var/named/mageedu.com.zone\" 15L, 405C written [root@rh5 ~]#
7.重新载入主DNS服务,启动辅助DNS服务: [root@rh5 ~]# service named reload
Reloading named: [ OK ] [root@rh5 ~]#
[root@fuzhu ~]# service named start
Starting named: [ OK ] [root@fuzhu ~]#
注意:需要把主DNS上的配置文件里面的allow-transfer允许辅助DNS服务器的IP来连接: zone \"mageedu.com\" IN { type master;
file \"mageedu.com.zone\";
allow-transfer { 192.168.1.0/24; }; };
zone \"1.168.192.in-addr.arpa\" IN { type master;
file \"192.168.1.zone\";
allow-transfer { 192.168.1.0/24; }; };
8.查看辅助DNS服务器slaves目录下会从主DNS同步文件: [root@fuzhu slaves]# ll total 8
-rw-r--r-- 1 named named 401 Apr 10 13:02 192.168.1.zone -rw-r--r-- 1 named named 456 Apr 10 13:02 mageedu.com.zone [root@fuzhu slaves]#
rndc远程控制
rndc是BIND安装包提供的一种控制域名服务运行的工具,它可以运行在其他计算机上,通过网络与DNS服务器进行连接,然后根据管理员的指令对named进程进行远程控制,此时,管理员不需要DNS服务器的根用户权限。使用rndc可以在不停止DNS服务器工作的情况进行数据的更新,使修改后的配置文件生效。在实际情况下,DNS服务器是非常繁忙的,任何短时间的停顿都会给用户的使用带来影响。因此,使用rndc工具可以使DNS服务器更好地为用户提供服务。
[root@rh5 ~]# which rndc /usr/sbin/rndc [root@rh5 ~]#
使用帮助-h:
[root@rh5 ~]# rndc -h
Usage: rndc [-c config] [-s server] [-p port] [-k key-file ] [-y key] [-V] command
command is one of the following:
reload 重读配置文件,service named reload相同。 reload zone [class [view]]
重读区域文件,用class可以指定那个区域文件。 refresh zone [class [view]]
维护,重新刷新。 retransfer zone [class [view]]
重新传送。
freeze Suspend updates to all dynamic zones. freeze zone [class [view]]
Suspend updates to a dynamic zone.
thaw Enable updates to all dynamic zones and reload them. thaw zone [class [view]]
Enable updates to a frozen dynamic zone and reload it. notify zone [class [view]]
手动让一个区域发送信息。
reconfig 只重读配置文件和新区域配置文件。 sign zone [class [view]]
Update zone keys, and sign as needed. stats 收集服务器统计信息。 querylog 打开查询日志的。 dumpdb [-all|-cache|-zones] [view ...]
Dump cache(s) to the dump file (named_dump.db). stop 停止服务。
stop -p Save pending updates to master files and stop the server reporting process id.
halt Stop the server without saving pending updates.
halt -p Stop the server without saving pending updates reporting process id.
trace Increment debugging level by one. trace level Change the debugging level. notrace Set debugging level to 0.
flush 清空缓存。
flush [view] Flushes the server's cache for a view. flushname name [view]
Flush the given name from the server's cache(s) status Display status of the server.
recursing Dump the queries that are currently recursing (named.recursing) validation newstate [view]
Enable / disable DNSSEC validation. *restart Restart the server.
* == not yet implemented
Version: 9.7.0-P2-RedHat-9.7.0-6.P2.el5_7.4 [root@rh5 ~]#
rndc与DNS服务器实行连接时,需要通过数字证书进行认证,而不是传统的用户名/密码方式。在当前版本下,rndc和named都只支持HMAC-MD5认证算法,在通信两端使用共享密钥。rndc在连接通道中发送命令时,必须使用经过服务器认可的密钥加密。为了生成双方都认可的密钥,可以使用rndc-confgen命令产生密钥和相应的配置,再把这些配置分别放入named.conf和rndc的配置文件rndc.conf中。
实现rndc与DNS服务器连接:
1.使用rndc-confgen命令生成配置文件: [root@rh5 ~]# rndc-confgen > /etc/rndc.conf [root@rh5 ~]# cat /etc/rndc.conf # Start of rndc.conf key \"rndc-key\" {
algorithm hmac-md5;
secret \"rLtr68ubV0i/0ODdRpeK7A==\"; };
options {
default-key \"rndc-key\"; default-server 127.0.0.1; default-port 953; };
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed: # key \"rndc-key\" {
# algorithm hmac-md5;
# secret \"rLtr68ubV0i/0ODdRpeK7A==\"; # }; #
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { \"rndc-key\"; }; # };
# End of named.conf [root@rh5 ~]#
文件内容是需要把# key \"rndc-key\" {到};放到named主配置文件当中去。 [root@rh5 ~]# vim /etc/named.conf …………………………………..
zone \"1.168.192.in-addr.arpa\" IN { type master;
file \"192.168.1.zone\";
allow-transfer { 192.168.1.0/24; }; };
key \"rndc-key\" {
algorithm hmac-md5;
secret \"rLtr68ubV0i/0ODdRpeK7A==\"; };
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { \"rndc-key\"; }; };
\"/etc/named.conf\" 42L, 823C written [root@rh5 ~]# 说明: controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { \"rndc-key\"; }; };
可以设置谁可以远程控制。
2.删除系统自带的rndc.key文件:
装完bind97后,系统会自动生成rndc.key文件: [root@rh5 ~]# cat /etc/rndc.key key \"rndc-key\" {
algorithm hmac-md5;
secret \"DUof2saddaNeC3yJMVY4Sw==\"; };
[root@rh5 ~]#
[root@rh5 ~]# rm -rf /etc/rndc.key
[root@rh5 ~]# service named restart (重启服务)
Stopping named: [ OK ] Starting named: [ OK ] [root@rh5 ~]#
3.可以用rndc –c命令本机连接:
[root@rh5 ~]# rndc -c /etc/rndc.conf status (查看运行状态) version: 9.7.0-P2-RedHat-9.7.0-6.P2.el5_7.4 CPUs found: 1 worker threads: 1 number of zones: 16 debug level: 0 xfers running: 0 xfers deferred: 0
soa queries in progress: 0 query logging is OFF
recursive clients: 0/0/1000 tcp clients: 0/100
server is up and running [root@rh5 ~]#
[root@rh5 ~]# rndc -c /etc/rndc.conf flush (清空缓存)
4.让192.168.1.0网段可以远程连接主DNS,远程的机子1.188需要密钥,把rndc.conf文件传到远程1.188主机上:
[root@rh5 ~]# scp /etc/rndc.conf 192.168.1.188:/root/
更改主DNS配置文件named.conf: 把最后的改为: controls {
inet 192.168.1.155 port 953
allow { 192.168.1.0/24; } keys { \"rndc-key\"; }; };
[root@rh5 ~]# service named restart
Stopping named: [ OK ] Starting named: [ OK ] [root@rh5 ~]#
用远程1.188登陆:
[root@fuzhu ~]# hostname
fuzhu.en
[root@fuzhu ~]# ls
anaconda-ks.cfg Desktop install.log install.log.syslog rndc.conf [root@fuzhu ~]#
更改配置文件,DNS地址: key \"rndc-key\" {
algorithm hmac-md5;
secret \"rLtr68ubV0i/0ODdRpeK7A==\"; };
options {
default-key \"rndc-key\";
default-server 192.168.1.155; default-port 953; };
[root@fuzhu ~]# rndc -c rndc.conf status (注意配置文件的存在rndc.conf) version: 9.7.0-P2-RedHat-9.7.0-6.P2.el5_7.4 CPUs found: 1 worker threads: 1 number of zones: 16 debug level: 0 xfers running: 0 xfers deferred: 0
soa queries in progress: 0 query logging is OFF
recursive clients: 0/0/1000 tcp clients: 0/100
server is up and running [root@fuzhu ~]#
DNS中ACL应用与配置
allow-recursion { 192.168.1.0/24; }; ##定义给指定的客户端递归
allow-query { 192.168.8.0/24; }; ##允许用户发起递归查询的地址范围
allow-transfer { 192.168.8.100; }; ##允许本区域传输至特定的从DNS服务器
我们测试时只允许了这一个IP段,如果是大型企业或者公网,我们需要允许的客户端有数十个IP段时,这里会写很长,而且如果在多个地方需要用到,则需写多次,配置相当麻烦,且影响查看。因此引入ACL,可以实现集中定义,所有位置均可引用。ACL类似程序开发中的函数。
ACL定义格式:
acl ACL_NAME { (ACL_NAME名字自己定义)
<需要定义的网段>; (每个网络范围一行,可以包含多行) };
注意:ACL定义通常放在配置文件named.conf最上面,以方便下面引用。
例子:
定义一个ACL列表,名字叫trust,网段有172.16.100.0/24; 10.35.0.0/24; 192.168.0.0/24; 127.0.0.1;:
[root@rh5 ~]# vim /etc/named.conf
acl trust { (列表名叫trust) 172.16.100.0/24; 10.35.0.0/24; 192.168.0.0/24; 127.0.0.1; };
options {
allow-query { trust; }; (引用上面定义的ACL名字) ……其他配置省略…… };
……………………………. [root@rh5 ~]#
使用bind实现智能DNS
实现智能DNS解析,如联通客户端解析到联通IP,电信客户端解析到电信IP。
要实现DNS服务器的智能解析,需要先理解一个概念:view
view就是将不同IP地址段发来的查询响应到不同的DNS解析。例如需要对2个不同IP地址段进行配置,就需要明确这些IP地址段,这样View功能才会有效。需要注意的是,一旦使用view,所有域都必须定义在view。
我们就以网段192.168.1.0/24来模拟电信网络;192.168.8.0/24模拟联通网络进行测试:
定义配置文件:
使用view,所有域都必须定义在view。 vim /etc/named.conf
acl \"telecom\" { (定义ACL列表,这个网络是电信的) 192.168.1.0/24; };
options {
listen-on port 53 { 192.168.8.101; }; allow-query { any; }; directory \"/var/named\"; notify yes; };
view telecom { (引用定义的ACL名称) zone \"toxingwang.com\" IN {
match-clients { telecom; }; //引用前面定义的电信网络ACL,指定本view匹配 type master;
file \"telecom.toxingwang.com\"; //定义本view对应的数据文件 };
zone \".\" IN { type hint;
file \"named.ca\"; }; };
view unicom {
match-clients { any; }; //定义除了电信网络外的其他网络 zone \"toxingwang.com\" IN { type master;
file \"unicom.toxingwang.com\"; //指定本view对应的数据文件
};
zone \".\" IN { type hint;
file \"named.ca\"; }; };
说明:根域在两个里面都写了,意思为用两个解析都可以,这种方式可以用于不区分用哪个进行解析,都可以,就需要每个view里面都写,但是区域数据文件都指向一个。
再去建立区域数据文件: 电信view对应数据文件
[root@ns named]# vi /var/named/telecom.toxingwang.com
$TTL 1H
@ IN SOA ns.toxingwang.com. admin.toxingwang.com. ( 2013081703 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum
IN NS ns.toxingwang.com. IN NS ns2.toxingwang.com. ns IN A 192.168.8.101 ns2 IN A 192.168.8.100 www IN A 192.168.1.2
其他view对应数据文件:
[root@ns named]# vi /var/named/unicom.toxingwang.com
$TTL 1H
@ IN SOA ns.toxingwang.com. admin.toxingwang.com. ( 2013081703 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum
IN NS ns.toxingwang.com. IN NS ns2.toxingwang.com. IN MX 10 mail.toxingwang.com. ns IN A 192.168.8.101 ns2 IN A 192.168.8.100
##电信view对应数据文件 使用queryperf对DNS服务器作压力测试
当我们把DNS服务器配置好后,我们肯定会想测试一下DNS服务器的性能如何,上线后如果请求数够多服务器还能否响应?于是,我们可以使用软件模拟环境,对DNS服务器作评估性的测试。在bind中,有一款自带的压力测试软件,queryperf。使用这款软件可以对DNS服务器作请求测试,并且使用方法简单,我们可以使用queryperf测试多次,取一个平均值,这样就算结果不准确,也不会和实际情况相差太大。
找到安装包:
[root@rh5 ruanjainbao]# ll bind-9.7.4.tar.gz
-rwxrw-rw- 1 root root 8316839 Apr 13 15:12 bind-9.7.4.tar.gz [root@rh5 ruanjainbao]#
安装queryperf
[root@rh5 queryperf]# pwd
/root/ruanjainbao/bind-9.7.4/contrib/queryperf [root@rh5 queryperf]# ls
config.h.in configure configure.in input Makefile.in missing queryperf.c README utils
[root@rh5 queryperf]# ./configure [root@rh5 queryperf]# make
通过上面的编译后,展开queryperf目录,在该目录下已经生成了一个queryperf的可执行文件。这个文件就是我们要用到的程序,我们把该程序移动到/usr/bin/目录下就可以使用了: [root@rh5 queryperf]# ls
config.h config.log configure input Makefile.in queryperf queryperf.o utils
config.h.in config.status configure.in Makefile missing queryperf.c README [root@rh5 queryperf]# cp queryperf /bin/
查看queryperf使用帮助: [root@rh5 ~]# queryperf -h
queryperf使用格式:
queryperf [-d datafile] [-s server_addr] [-p port] [-q num_queries] -d: 后面接上一个文件,文件的内容是用户对DNS的请求,一行为一条请求,所以为了测试,我们可以在里面写上几千几万条。 -s: DNS服务器地址 -p: DNS服务器端口 -q: 请求多少次
测试我们建立的mageed.com域:
使用vim命令先创建一个请求文件:vim querytest.txt
[root@rh5 ~]# vim querytest.txt www.mageed.com A mail.mageed.com A mageed.com A mageed.com NS ns1.mageed.com A ………………………….
(复制上千或上万行以便测试)
性能测试: 执行命令:
[root@rh5 ~]# queryperf -d querytest.txt -s 192.168.1.155 Statistics:
Parse input file: once
Ended due to: reaching end of file
Queries sent: 1822 queries (查询了多少条)
Queries completed: 1812 queries (成功查询了多少条) Queries lost: 10 queries Queries delayed(?): 0 queries
RTT max: 2.068421 sec RTT min: 0.000060 sec RTT average: 0.014642 sec RTT std deviation: 0.159137 sec RTT out of range: 0 queries
Percentage completed: 99.45% Percentage lost: 0.55%
Started at: Mon Apr 13 15:36:39 2015 Finished at: Mon Apr 13 15:36:45 2015 Ran for: 6.111291 seconds
Queries per second: 296.500363 qps (每秒钟查询的次数)
[root@rh5 ~]#
性能测试总结
1、在作服务器的性能测试时,最好不要在服务器平台自身使用测试软件测试,最好换另外一台机器,这样CPU处理的结果会更准确。
2、测试时先预估平台会遇到的最大请求数,用这个请求数作测试,量力而为,因为如果服务器遇到大流量的DDOS,单一机器性能再好,也扛不住。
3、使用queryperf作性能测试时,最好测试多次,取平均值。
4、可以修改配置文件的部分参数测试,如,开启递归,开启查询日志等功能作测试。
使用dnstop监控DNS流量
在维护DNS服务器时,用户往往希望知道到底是哪些用户在使用DNS服务器,同时也希望能对DNS状态查询做一个统计,以及时地知道DNS的工作情况和状态。在传统的方式下,用户通常使用的是tcpdump等开源工具(这个工具的具体使用将在本书的后续章节进行详细介绍)来进行抓包并通过查看53端口的流量来查看DNS数据包。由于tcpdump并没有针对DNS流量进行特殊定制,因此使用起来可能不是非常方便。因此,用户可以使用专用于DNS的dnstop工具查询DNS服务器状态。
下载安装包:
[root@rh5 ruanjainbao]# ll dnstop-20140915.tar.tar
-rwxrw-rw- 1 root root 77917 Apr 13 15:45 dnstop-20140915.tar.tar [root@rh5 ruanjainbao]#
由于该软件依赖tcpdump和pcap抓包库(libpcap)对网络上传输的数据包进行截获和过滤,所以用户需要确保系统安装相应软件后才能正常安装和使用dnstop。 安装相关的包:
[root@rh5 dnstop-20140915]# yum install -y libpcap-devel
编译安装:
[root@rh5 dnstop-20140915]# ./configure [root@rh5 dnstop-20140915]# make
[root@rh5 dnstop-20140915]# make install install -m 755 dnstop /usr/local/bin
install -m 644 dnstop.8 /usr/local/share/man/man8 [root@rh5 dnstop-20140915]#
测试:
[root@rh5 ~]# dnstop -4 -i 192.168.1.155 -R eth0 -Q
Queries: 0 new, Mon Apr 13 15:58:47 2015 Replies: 0 new, 0 total
Sources Count % cum% ------------- --------- ------ ------
192.168.1.157 1 100.0 100.0 [root@rh5 ~]#
注意:需要在另一台机子上进行连接测试:
[root@rh6 ~]# dig -t -A www.mageed.com @192.168.1.155
1 total
DNS服务器:
作用:就是维护一个主机域名与IP地址的对应关系数据库,在需要的时候为客户端网络程序提供地址解析功能。
正向解析:将主机的名称(域名)解析为对应的IP地址,域名的正向解析是DNS服务器的最基本功能,也是最常用的功能。
反向解析:将主机的IP地址解析为对应的域名。
严格的域名最后还有一个“.”,但一般省略不写。
每个域名代表一个IP。DNS就是用来在IP和域名之间进行转换。 DNS由DNS服务器提供。 www. linuxcast. net 主机名 域名 类型
DNS查询:host dig命令:
[root@localhost named]# host www.baidu.com www.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 220.181.112.244 www.a.shifen.com has address 220.181.111.188 [root@localhost named]#
或
[root@localhost named]# dig www.baidu.com
DNS是一个树状结构,DNS查询从域名右向左查询:www.linuxcast.net.
. (.根DNS服务器,保存下一级服务器地址,根域名服务器)
Com net org cn gov …… (顶级域名服务器,各保存以什么结尾。) linuxcast (授权服务器) www ftp mail
资源记录:
在DNS服务器上,DNS的信息通过一个叫资源记录的格式保存。 资源记录常用属性:
NAME 记录主机名和域名相关的。
CLASS 资源类别,一般都是IN,代表internet.
TYPE 类型,A代表IPv4,AAAA代表IPv6.CNAME代表别名,MX代表邮件记录。 RDATA 记录数据
如: www IN A 192.168.1.3 Mail IN A 192.168.1.4
Server1 IN CNAME www (server1同名www) IN MX 10 mail.linuxcast.net.
资源记录类型 表示内容
A ipv4地址 AAAA ipv6地址 MX 邮件记录 CNAME 别名
PTR 指针(逆向解析) SRV 服务资源
DNS服务器的类型
DNS域名服务器是用来存储主机-域名映射信息的,这些服务器具体又可以分为3类:
(1)主DNS服务器(primary name server):它是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其管辖域的任何查询。Master
(2)辅助DNS服务器(secondary name server):它可从主服务器中复制一整套域信息。区文件是从主服务器中复制出来的,并作为本地磁盘文件存储在辅助服务器中。这种复制称为\"区文件复制\"。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询。因此,辅助域名服务器也称作权威性服务器。配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。Slave
(3)高速缓存服务器(caching-only server):可运行域名服务器软件,但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的结果,一旦取得一个,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。对于高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这或许是最常见的域名服务器配置。
[root@localhost mail]# dig -t mx capital-micro.com (查询邮件记录) [root@localhost mail]# dig -t soa qq.com [root@localhost mail]# dig -x qq.com
常见的DNS服务器类型: 1. 缓存域名服务器
主要功能是提供域名解析记录的缓存。 2. 主域名服务器
是特定DNS区域的官方服务器。 3. 从域名服务器
或称为辅助域名服务器,主要功能是提供备份,通常与主域名服务器同时提供服务。
BIND域名服务基础:
1. 安装BIND软件:
[root@localhost ~]# yum install -y bind bind-chroot bind-utils bind:域名服务器软件。
bind-utils:包括DNS查询等工具软件。
bind-chroot:保护DNS服务器安全的工具软件。提供一个伪装的根目录以增强安全性, /var/named/chroot/目录下。
[root@localhost sbin]# yum install -y caching-nameserver
caching-nameserver:为配置bind最为缓存域名服务器提供必要的默认配置文件, centos6 不提供 caching-nameserver 这个包了.
2. BIND服务控制
软件安装完毕后,提供的主程序默认位于/usr/sbin/named:
[root@localhost sbin]# pwd /usr/sbin
[root@localhost sbin]# ll named
-rwxr-xr-x. 2 root root 546560 1月 21 01:40 named [root@localhost sbin]#
系统会自动增加named的系统服务:
[root@localhost sbin]# chkconfig | grep named
named 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭[root@localhost sbin]#
启动named服务:
[root@localhost sbin]# /etc/init.d/named start 启动 named:[确定] [root@localhost sbin]#
或
[root@localhost sbin]# service named start 启动 named:named:正在运行[确定] [root@localhost sbin]#
在named运行的状态下重新加载配置: [root@localhost sbin]# service named reload 重新载入named: [确定] [root@localhost sbin]#
查看named服务运行状态:
[root@localhost sbin]# service named status version: 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 CPUs found: 1 worker threads: 1 number of zones: 16
6:关闭 debug level: 0 xfers running: 0 xfers deferred: 0
soa queries in progress: 0 query logging is OFF
recursive clients: 0/0/1000 tcp clients: 0/100
server is up and running named (pid 3498) 正在运行... [root@localhost sbin]#
BIND的配置文件
主要涉及两种类型的配置文件:主配置文件和区域数据库配置文件。
主配置文件:用于设置named服务的全局选项,注册区域及访问控制等参数。 区域数据库配置文件:用于保存特定的DNS区域的地址解析记录。
[root@localhost chroot]# pwd /var/named/chroot
[root@localhost chroot]# ls dev etc usr var
[root@localhost chroot]#
1. 主配置文件
Named服务的主配置文件为named.conf,一般位于/etc/目录中,如果使用了chroot功能,则位于/var/named/chroot/etc/目录下:
[root@localhost etc]# pwd /var/named/chroot/etc [root@localhost etc]# ls
localtime named.conf named.rfc1912.zones pki
named named.iscdlv.key named.root.key rndc.key [root@localhost etc]# 主配置文件中主要包括全局配置和区域配置部分,全局配置参数在形如“options{};”的大括号中,而每个DNS区域的配置参数使用“zone……{};”的形式提供,注意在每个配置行末尾要添加分号;。
(1) 全局配置部分最常见的配置项: options {
// Put files that named is allowed to write in the data/ directory:
directory \"/var/named\"; (设置区域数据库文件的默认存放位置) listen-on port 53 { 127.0.0.1; }; (允许监听的端口号和IP) listen-on-v6 port 53 { ::1; }; };
在上面的配置中,除了directory项,其他都可以省略。
(2) 区域配置部分最常见的配置项 zone \".\" IN { (设置根区域)
type hint; (设置区域类型 hint表示根域,master表示主域,slave表示从域) file \"named.ca\"; (设置对应的根域地址数据库文件) };
zone \"benet.com\" IN { (设置正向DNS区域名称) type master;
file \"benet.com.zone\"; (设置对应的正向区域地址数据库文件) };
zone \"20.168.192.in-addr.arpa\" IN { (设置反向DNS区域名称) type master;
file \"192.168.20.arpa\"; (数据库对应文件) };
说明:
每个zone区域都是可选的,zone配置部分的“IN”关键字可以省略。
反向区域的名称由倒序的网络地址和“.in-addr.arpa”组合而成,例如192.168.1.0//24网段,其反向区域名为“1.168.192.in-addr.arpa”。
File配置项文件名自己随便定义,但是需要和地址数据库名一致。
修改完主配置文件后,可以执行named-checkconf命令对named.conf文件进行语法检查: [root@localhost etc]# named-checkconf /var/named/chroot/etc/named.conf [root@localhost etc]#
没有提示没有语法错误。
2. 区域数据库配置文件
位于/var/named/chroot/var/named/目录中。 [root@localhost named]# pwd /var/named/chroot/var/named [root@localhost named]# ls
data my.external.zone.db named.ca named.local named.loopback localhost.zone my.internal.zone.db named.empty named.localhost slaves [root@localhost named]#
根域.的数据库文件比较特殊,网络上DNS服务器都使用相同的根域数据库,文件名通常为named.ca。其他名称都自己定义。
在区域数据库配置文件中,通常包括TTL配置项,SOA(授权信息开始)记录和地址解析记录,以分号;开始的部分表示注释信息。 (1) 全局TTL配置项及SOA记录
$TTL 86400 (设置解析记录的默认缓存时间)
@ IN SOA benet.com. admin.benet.com. ( (设置SOA标记,域名,域管理邮箱)
2010021901 (更新序列号,10位以内的整数)
3H (刷新时间,从域名服务器更新改地址的间隔时间) 15M (重试延迟,更新失败后,等待多长时间再次尝试) 1W (失效时间,超过该时间仍无法更新,则不再尝试) 1D (设置无效地址解析记录的默认缓存时间)
)
参数时间默认为秒,M分钟,H小时,W周,D天。 @表示当前的区域名:benet. (最后有点)
Admin.benet.com.表示域管理员的电子邮箱地址,由于@由其他表示,所以用.来代替。
(2) 最常见的地址解析记录配置项
@ IN NS ns1.benet.com.
IN MX 10 mail.benet.com. ns1 IN A 192.168.20.17 mail IN A 192.168.20.17
www IN A 192.168.20.17 ftp IN CNAME www
NS域名服务器记录:用于设置当前域的DNS服务器的域名地址。
MX邮件交换记录:用于设置当前域的邮件服务器域名地址,数字10表示邮件优先级,数字越大优先级越低。
A记录:用于记录正向域名解析,“www IN A 192.168.20.17”表示域名www.benet.com对应的IP地址为192.168.20.17。
CNAME别名记录:表示ftp是www的别名。
@符号可以省略,但必须保留一个空格。
反向解析记录:
[root@localhost named]# vi 192.168.20.arpa
$TTL 86400
@ IN SOA benet.com. admin.benet.com. ( 2010021901 3H 15M 1W 1D )
17 IN PTR www.benet.com. 4 IN PTR study.benet.com.
PTR:反向区域解析记录。
17:表示192.168.20.17 IP最后一位。
修改完后可用named-checkzone命令对该文件语法检查:
[root@localhost named]# named-checkzone benet.com benet.com.zone zone benet.com/IN: loaded serial 0 OK
[root@localhost named]#
构建缓存域名服务器:
通常架设企业内部网络,主要目的是提高域名解析的速度和节约对互联网访问的出口带宽。
1. 建立主配置文件named.conf
listen-on port 53 { 127.0.0.1; }; 改为:
listen-on port 53 { 192.168.20.17; };(本机IP,或者注释掉,否则只有本机能用)
[root@localhost etc]# vi named.conf options {
directory \"/var/named\"; // \"Working\" directory
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\"; listen-on port 53 { 192.168.20.17; }; allow-query { 192.168.20.0/24; };
recursion yes;
query-source port 53; };
zone \".\" IN {
type hint;
file \"named.ca\"; };
有时为了提高效率,不向根域提交,向北京联通DNS转发,需要填写DNS: [root@localhost etc]# vi named.conf
forwarders { 202.106.0.20; 202.106.148.1; };
需要去掉zone “.” IN…….。
2. 确认根域地址文件name.ca
[root@localhost named]# pwd /var/named/chroot/var/named [root@localhost named]# named.ca 3. 启动DNS服务:
[root@localhost named]# service named start
4. 验证
修改DNS为设置的DNS。
构建主域名服务器
主要架设在internet环境中,主要目的是为了客户端提供本域内主机名与IP地址的解析。
环境如下:
主域名服务器IP为192.168.20.17,主机名为:ns1.ben.com。 所负责的DNS域为“ben.com”。 为以下服务器提供解析:
网站:www.ben.com IP:192.168.20.27 邮件:mail.ben.com IP:192.168.20.27 在线培训:study.ben.com IP:192.168.20.69 主DNS:192.168.20.17 辅助DNS:192.168.20.24 提供反向解析功能。
1. 确定本机的IP和主机名:
通过配置文件修改,修改DNS为192.168.20.17:
[root@localhost named]# cat /etc/sysconfig/network NETWORKING=yes
HOSTNAME=ns1.ben.com [root@localhost named]#
[root@localhost named]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.20.17
2. 建立主配置文件
[root@localhost etc]# pwd /var/named/chroot/etc
[root@localhost etc]# vi named.conf
options {
// Put files that named is allowed to write in the data/ directory:
directory \"/var/named\"; // \"Working\" directory
listen-on port 53 { 192.168.20.17; }; (需要改为DNS的IP) listen-on-v6 port 53 { ::1; }; };
zone \".\" IN{
type hint;
file \"named.ca\"; };
zone \"ben.com\" IN { type master;
file \"ben.com.zone\";
allow-transfer { 192.168.20.24; }; (允许从域下载该区域数据库文件) };
zone \"20.168.192.in-addr.arpa\" IN { type master;
file \"192.168.20.arpa\";
allow-transfer { 192.168.20.24; };
};
3. 建立区域配置文件
根据named.conf中zone设置,分别建立对应名称的正反区域数据库文件:
[root@localhost named]# pwd /var/named/chroot/var/named
[root@localhost named]# vi ben.com.zone (建立正向区域文件)
$TTL 86400
@ SOA ben.com. admin.ben.com. (
0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS ns1.ben.com. IN NS ns2.ben.com. IN A 192.168.20.17 IN MX 10 mail.ben.com. ns1 IN A 192.168.20.17 ns2 IN A 192.168.20.24
mail IN A 192.168.20.27 www IN A 192.168.20.27 study IN A 192.168.20.69 * IN A 192.168.20.27
建立反向区域文件:
[root@localhost named]# vi 192.168.20.arpa
$TTL 86400
@ SOA ben.com. admin.ben.com. (
2010021901 3H 15M 1W 1D )
IN NS ns1.ben.com. IN NS ns2.ben.com. 27 IN PTR www.ben.com. 69 IN PTR study.ben.com. 17 IN PTR ns1.ben.com. 24 IN PTR ns2.ben.com.
4. 重新启动DNS服务:
[root@ns1 etc]# service named restart
构建从域名服务器:
第二部配置文件修改为slave:
[root@localhost etc]# pwd /var/named/chroot/etc
[root@localhost etc]# vi named.conf
options {
// Put files that named is allowed to write in the data/ directory:
directory \"/var/named\"; // \"Working\" directory };
zone \".\" IN{
type hint;
file \"named.ca\"; };
zone \"ben.com\" IN {
type slave; (类型为slave)
masters { 192.168.20.17; }; (指定主DNS的IP地址) file \"slave/ben.com.zone\"; (下载的数据库保存位置)
};
zone \"20.168.192.in-addr.arpa\" IN { type slave;
masters { 192.168.20.17; }; file \"slave/192.168.20.arpa\";
};
应用最广泛的DNS服务程序。 1. 安装BIND软件
[root@localhost ~]# yum install -y bind
2. BIND配置文件
主要涉及两种类型的配置文件:主配置文件和区域数据库配置文件。
主配置文件用于设置named服务的全局选项,注册区域及访问控制等参数. 区域数据库配置文件用于保存特定DNS区域的地址解析记录。 (1) 主配置文件
主配置文件为named.conf,一般位于/etc/目录中,如果使用了bind-chroot功能,则可能位于/var/named/chroot/etc/目录中。
主配置文件中主要包括全局配置和区域配置部分,全局配置参数包含在形如“options {};的大括号中,而每个DNS区域的配置参数使用“zone……{};”的形式提供,注意在每个配置行末尾要添加分号“;”。主配置文件中以“#”号或“//”开始的部分表示注释信息,如果有大段文字还可以使用“/*…..*/”的注释格式。
全局配置项和区域配置项:
[root@localhost etc]# less named.conf
options { (全局配置项)
listen-on port 53 { 127.0.0.1; }; (设置named监听的端口,ip) listen-on-v6 port 53 { ::1; };
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\";
allow-query { localhost; }; (允许DNS查询的客户端地址)
recursion yes; (设置允许递归查询)
dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file \"/etc/named.iscdlv.key\";
managed-keys-directory \"/var/named/dynamic\"; };
logging {
channel default_debug {
file \"data/named.run\"; severity dynamic; }; };
在以上全局配置项中,除啦directory项通常保留以外,其他项都可以省略。
(区域配置部分)
zone \".\" IN { (设置根区域)
type hint; (设置区域类型,hint表示根域,master表示主域,slave
从域)
file \"named.ca\"; (设置对应的根域地址数据库文件)
};
修改完主配置文件后,可以执行named-checkconf命令对named.conf文件进行语法检查。如果语法没有错误,将不会给任何提示。反之,会出现错误信息。
(2) 区域数据库配置文件
区域数据库配置文件位于/var/named/目录中,如果使用啦bind-chroot功能,则可能位于/var/named/chroot/var/named/目录中。
视频DNS: 1. 安装
[root@localhost ~]# yum install -y bind bind-chroot bind-utils
bind:域名服务器软件。
bind-utils:包括DNS查询等工具软件。
bind-chroot:保护DNS服务器安全的工具软件。
2. BIND配置文件
主要保存两个地方:
/etc/named.conf BIND服务主配置文件。 /var/named/ zone文件。
如果安装了bind-chroot,BIND会被封装到一个伪根目录内,配置文件的位置变为: /var/named/chroot/etc/named.conf BIND服务主配置文件。 /var/named/chroot/vat/named/ zone文件。
不同于其他服务,BIND在安装后不会有与配置文件,但是在BIND的文档内/usr/share/doc/bind-9.8.2目录下,有配置文件模板。 复制模板:
[root@localhost etc]# pwd
/usr/share/doc/bind-9.8.2/sample/etc
[root@localhost etc]# cp named.conf named.rfc1912.zones /var/named/chroot/etc/ [root@localhost etc]#
[root@localhost var]# pwd
/usr/share/doc/bind-9.8.2/sample/var
[root@localhost var]# cp -r named/ /var/named/chroot/var/ [root@localhost var]#
实例中的主配置文件内容较多,可以删减一些:只剩: options { // Put files that named is allowed to write in the data/ directory:
directory \"/var/named\"; // \"Working\" directory (指定工作目录) listen-on port 53 { 127.0.0.1; }; (指定IPV4监听地址) listen-on-v6 port 53 { ::1; }; (指定IPV6监听地址) };
[root@localhost etc]#
3. 配置域主服务器
一个域主服务器(master)是这个域的信息的权威服务器,所有这个域的信息都是由域的主服务器控制,配置一个域主服务器需要以下几个步骤: (1) 在bind的主配置文件中添加该域的zone文件:
zone \"linuxcast.net\"{ type master;
file \"linuxcast.net.zone\"; };
[root@localhost etc]#
(2) 在/var/named/chroot/var/named中创建该域的zone文件:
(3) 编辑zone文件,添加需要的信息:
[root@localhost named]# cat linuxcast.net.zone $TTL 1D
@ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @
A 127.0.0.1 AAAA ::1
www IN A 192.168.1.3 mail IN A 192.168.1.4 [root@localhost named]#
(4) 启动bind服务或使bind刷新配置:
Service named start Service named reload
(需要将本机的DNS指向本机:/etc/resolv.conf nameserver 127.0.0.1) (5) 使用host或dig命令检测域信息是否正常:
Host www.linuxcast.net Dig www.linuxcast.net
说明(1)在bind的主配置文件中添加linuxcast.net的定义: 配置文件位置:
/var/named/chroot/etc/named.conf
在主配置文件中添加一行域的zone定义:
Zone ‘’linuxcast.net’’ { (格式zone “域名” { 定义内容 };括号括起来,最后要有;号)
Type master; (设置类型 为master,意思为linuxcast的主服务器) File “linuxcast.net.zone”; (指定这个域的域文件名,可以随意起) };
步骤(2)说明,为定义的域添加zone配置文件:
Zone文件位置:/var/named/chroot/var/named/linuxcast.net.zone
Zone文件内容比较复杂,一般使用默认模板named.localhost配置文件: [root@localhost named]# pwd /var/named/chroot/var/named [root@localhost named]# ls
data my.external.zone.db my.internal.zone.db named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]# cp named.localhost linuxcast.net.zone (新域名) [root@localhost named]# ls
data my.external.zone.db named.ca named.localhost slaves linuxcast.net.zone my.internal.zone.db named.empty named.loopback [root@localhost named]#
添加一个资源记录(RR): www IN A 192.168.1.3
步骤说明(3)
[root@localhost named]# cat linuxcast.net.zone $TTL 1D
@ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1
[root@localhost named]#
因篇幅问题不能全部显示,请点此查看更多更全内容