1、检查是否已经安装了DNS服务器软件bind
rpm -qa | grep bind
2、安装dns服务器
yum -y install bind* #dns服务器必装软件 yum remove bind* #删除
/etc/init.d/named start #启动DNS服务器
/etc/init.d/named restart #重启DNS服务器
service named stop #停止服务器
chkconfig named on #设为开机启动
yum -y install bind*
/etc/init.d/named start
/etc/init.d/named restart
service named stop
chkconfig named on
3、配置DNS服务器
1) 配置全局设置
vi /etc/named.conf
#修改以下代码
listen-on port 53 { any; };
allow-query { any; };
//
// 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; };
listen-on port 53 { any; };
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; };
allow-query { any; };
recursion yes;
forwarders { 8.8.8.8; };
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";
全局配置(options )
options 语句在每个配置文件中只有一个。如果出现多个options, 则第一个options 的配置有效,并会产生一个警告信息。
directory “/var/named”;
zone文件的存放目录,这里的/var/named 是相对目录,在chroot环境下/var/named目录下。
allow-query { any; };
任何地址都解析
forwarders { 8.8.8.8; };可以多个用;分开
自己不解析的都扔到这dns
2)添加正向解析区域及反向解析区域
区域配置(zone )
zone 语句作用是定义DNS 区域,在此语句中可定义DNS 区域选项
zone区域设置,第一步,设置根区域当DNS服务器处理递归查询时,如果本地区域文件不能进行查询的解析,就会转到根DNS服务器查询,所以在主配置文件named.conf文件中还要定义根区域。
type:设置域的类型
file:设置根服务列表文件名
zone “.” IN {
type hint;
file “named.ca”;
};
“.” 意思的根区域
IN 是internet记录
type是类型 根的类型是hint
file是根区域文件
/etc/named.ca记录13组根域名服务器
vi /etc/named.rfc1912.zones
#添加以下代码
zone “qzulab.cn” IN {
type master;
file “qzulab.cn.zone”;
allow-update { none; };
};
zone “1.168.192.in-addr.arpa” IN {
type master;
file “192.168.1.zone”;
allow-update { none; };
};
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
//zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
// type master;
// file "named.loopback";
// allow-update { none; };
//};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
zone "qzulab.cn" IN {
type master;
file "qzulab.cn.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.zone";
allow-update { none; };
};
3)新增正向区域文件
#编辑正向区域文件
cp /var/named/named.localhost /var/named/chroot/var/named/qzulab.cn.zone
vi /var/named/chroot/var/namedqzulab.cn.zone
#添加以下代码
$TTL 1D
@ IN SOA dns.qzulab.cn. root.qzulab.cn. (
20120312 ; serial # 仅作为序列号而已
3H ; refresh # 服务器的更新时间
1H ; retry # 重新更新时间间隔
1W ; expire # 多久之后宣布失败
0) ; minimum # 相当于缓存记忆时间
@ IN NS dns.qzulab.cn.
@ IN MX 10 mail.qzulab.cn.
dns IN A 192.168.1.12
mail IN A 192.168.1.13
www IN A 192.168.1.15
ftp IN CNAME www
$TTL 1D
@ IN SOA dns.qzulab.cn. root (
20120312 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.qzulab.cn.
@ IN MX 10 mail.qzulab.cn.
dns IN A 192.168.1.12
mail IN A 192.168.1.13
www IN A 192.168.1.15
ftp IN CNAME www
chown -R named.named qzulab.cn.zone
TTL是生存期,单位是秒
$TTL是全局定义的
第二行 SOA记录,@取代在/etc/named.conf中指定的域名。
SOA段中的数字,分别为:序列号、刷新、重试、过期、生存期
序列号:序列号用于DNS数据库文件的版本控制。每当数据被改变,这个序列号就应该被增加。
刷新:从服务器向主服务器查询最新数据的间隔周期。每一次检查时从服务器的数据是否需要更改,则根据序列号来判别。
重试:一旦从服务器尝试连接主服务器失败,下一次查询主服务器的延迟时间。
过期:如果从服务器无法连通主服务器,则在经过此时间后,宣告其数据过期。
生存期:服务器回答 ‘无此域名’ 的间隔时间。
数字的默认单位为秒。否则:W= 周、D= 日、H= 小时、M= 分钟。
IN 是internet记录
SOA 是SOA 初始化记录,我们说的是初始授权记录,这个翻译不过,理解很多反正知道是那个意思就行了
dns.qzulab.cn. 是DNS服务器的名称
root 是管理员的邮箱地址
4)新增反向区域文件
#编辑反向区域文件
cp /var/named/named.localhost /var/named/chroot/var/named/192.168.1.zone
vi /var/named/chroot/var/named/192.168.1.zone #
#添加以下代码
$TTL 1D
@ IN SOA dns.qzulab.cn. root.qzulab.cn. (
2011091200 ; serial
3H ; refresh
1H ; retry
1W ; expire
0) ; minimum
@ IN NS dns.qzulab.cn.
12 IN PTR dns.qzulab.cn.
13 IN PTR mail.qzulab.cn.
15 IN PTR www.qzulab.cn.
$TTL 1D
@ IN SOA dns.qzulab.cn. root.qzulab.cn. (
20120310 ; serial
3H ; refresh
1H ; retry
1W ; expire
0) ; minimum
@ IN NS dns.qzulab.cn.
12 IN PTR dns.qzulab.cn.
13 IN PTR mail.qzulab.cn.
15 IN PTR www.qzulab.cn.
chown -R named.named 192.168.1.zone
5)生成rndc.conf配置文件
vim random
输入以下代码,保存
asdlfkjsdfdsfsadlkjowersdfclDSADSFaos
rndc-confgen -r random > /etc/rndc.key
rndc-confgen -a -c /etc/rndc.key
#拷贝至/etc/named.conf文件中
key "rndc-key" {
algorithm hmac-md5;
secret "C1ujGLCguS21IZBPoND/Gg==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
//
// 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; };
listen-on port 53 { any; };
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; };
allow-query { any; };
recursion yes;
forwarders {210.34.120.1;8.8.8.8; };
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";
};
key "rndc-key" {
algorithm hmac-md5;
secret "C1ujGLCguS21IZBPoND/Gg==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
include "/etc/named.rfc1912.zones";
4、测试DNS服务器
vi /etc/resolv.conf #编辑文件
nameserver 127.0.0.1 #将linux服务器的DNS设置为本身
nameserver 8.8.8.8 #为了能够访问外网需要设置备用DNS
nslookup -type=soa qzulab.cn #测试起始授权机构SOA资源记录
nslookup -type=a www.qzulab.cn #测试主机地址A记录资源
nslookup -type=ptr 192.168.1.129 #测试反向解析指针PTR资源记录
nslookup -type=cname ftp.qzulab.cn #测试别名CNAME资源记录
nslookup -type=ns qzulab.cn #测试名称服务器NS资源记录
nslookup -type=mx qzulab.cn #测试邮件交换器MX资源记录
tail -f /var/log/messages #查看日志
named-checkzone /var/named/qzulab.cn.zone #检查正向区域配置文件
named-checkzone 192.168.1.zone /var/named/192.168.1.zone #检查反向区域配置文件cd /var/named/chroot/etc
5、可能出错及解决
1、could not configure root hints from ‘named.ca’: permission denied
chown -R named.named ./* 将/var/named路径下的所有文件改成named用户named组的权限
2、lab named[16425]: none:0: open: /etc/rndc.key: file not found
#没有random产生器,手动伪造一个文件代替/dev/random的功能
#新建一个 random 文件随即输入一串数字“记得要长~~
shell $> vim random
asdSDSDFSDAFSasdkfjalsjdflajsldfHLKLLKOI
rndc-confgen -r random > rndc.key
参考:http://www.nginxs.com/linux/43.html