centos6.5环境DNS-本地DNS服务器bind的搭建
域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
开始时,域名的字符仅限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“x.台湾”这样的域名可以在地址栏直接输入,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入,难以在国际推广等。
BIND(Berkeley InternetName Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
我们使用的DNS软件就是BIND。
IP地址:
192.168.3.17 DNS1 DNS服务器端
192.168.3.18 DNS2 测试机
我们要架设一个本地DNS服务器一般需要下面三个软件程序包:
bind-libs.x86_64 #提供库文件
bind-utils.x86_64 #提供工具包
bind.x86_64 #提供主程序包
我还没使用安全套件,所以没有使用bind-chroot程序包。
chroot 环境为了系统的安全性考虑,一般来说目前各主要 distributions 都已经自动的将你的 bind 相关程序给他 chroot 了。
yum install -y bind-libs bind-utils bind.x86_64
检查安装情况:
rpm -qa bind*
bind-libs-9.8.2-0.47.rc1.el6.x86_64
bind-utils-9.8.2-0.47.rc1.el6.x86_64
bind-9.8.2-0.47.rc1.el6.x86_64
/etc/named.conf #主配置文件
/etc/named.rfc1912.zones #正反向区域文件
我们首先配置主配置文件:/etc/named.conf
cat /etc/named.conf
===========================================================================
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 { any; };
recursion yes;
pid-file "/var/run/named/named.pid"; //存着named的pid
forwarders { 168.95.1.1; 139.175.10.20; }; // 如果域名服务器无法解析时,将请求交由168.95.1.1; 139.175.10.20来解析
allow-query { any; }; //指定允许进行查询的主机,当然是要所有的电脑都可以查啦
allow-transfer { none; }; //指定允许接受区域传送请求的主机,说明白一点就是辅dns定义,比如辅dns的ip是192.168.139.5,那么可以这样定义{ 192.168.139.5; },要不然主辅dns不能同步,当然,{}里的也可以用下面提到的acl(智能dns会用到动态ip库,acl文件存储着ip列表)。
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
/* 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;
};
};
zone "." IN { #正向解析
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" IN { #反向解析
type master;
file "named.loopback";
allow-transfer { none; };
};
view localhost_resolver { //定义一个视图
match-clients { any; }; //查询者的源地址,any表示localhost_resolver视图对任何主机开放,如果写成{ acl1; },那么就只有acl1表里的ip可以递归查询了
match-destinations { any; }; //查询者的目标地址,这里也可以写成{ localhost; acl1; }
recursion yes; //设置进行递归查询
include "/etc/named.rfc1912.zones"; //包含文件,这里也就是载入/etc/named.rfc1912.zones,正反向解析配置文件
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
===========================================================================
配置文件中的三个文件named.ca、named.localhost、named.loopback上面已经提供有一个了named.ca了、还有这两个named.localhost、named.loopback、同样我们也得提供、也是在/var/named目录下创建:
# vim /var/named/named.localhost
$TTL 86400 ;定义宏
@ IN SOA localhost admin.localhost. (
2014031101 ;序列号
2H ;刷新时间
10M ;失败时重试间隔时间
7D ;过期时间
1D) ;否定答案的时间
IN NS localhost.
localhost. IN A 192.168.3.1
================================
$TTL 86400
@ IN SOA localhost admin.localhost. (
2014031101 ;
2H ;
10M ;
7D ;
1D) ;
IN NS localhost.
localhost. IN A 192.168.3.1
================================
然后复制一份改写named.loopback的文件:
# cp /var/named/named.localhost /var/named/named.loopback
# vim named.loopback
$TTL 86400
@ IN SOA localhost admin.localhost. (
2014031101
2H
10M
7D
1D )
IN NS localhost.
1 IN PTR localhost.
1.区域解析库文件的简要说明:
常见的正解文件 RR 相关信息
[domain] IN [[RR type] [RR data]]
主机名. IN A IPv4 的 IP 地址
主机名. IN AAAA IPv6 的 IP 地址
区域名. IN NS 管理这个领域名的服务器主机名字.
区域名. IN SOA 管理这个领域名的七个重要参数(如上说明)
区域名. IN MX 顺序数字 接收邮件的服务器主机名字
主机别名. IN CNAME 实际代表这个主机别名的主机名字.
单位:W=周、D=日、H=小时、M=分钟。
$TTL 86400 宏定义全局TTL时间
@ IN SOA ns.chinasoft.com. root ( # ns.chinasoft.com. 是DNS服务器的名称
0 ; serial (d. adams) 仅作为序列号而已
1D ;refresh 服务器的更新时间
15M ; retry 重新更新时间间隔
1W ; expiry 多久之后宣布失败
1H ) ;minimum 相当于缓存记忆时间
@ IN NS ns.chinasoft.com.
@ IN MX 5 mail.chinasoft.com.(5为优先级别)
ns IN A 172.16.31.3
www IN A 172.16.31.3
www IN A 172.16.31.3
mail IN A 172.16.31.3
2.配置正向解析库文件:
vim /var/named/chinasoft.com.zone
$TTL 43200 #定义宏,通用变量,单位为秒
@ IN SOA dns.chinasoft.com admin.chinasoft.com. (
2014031101 ; #序列号
2H ; #刷新时间
10M ; #失败重试时间
7D ; #过期时间
1D) ; #否定答案时间
@ IN NS dns
@ IN MX 10 mail
dns IN A 192.168.3.17
mail IN A 192.168.3.10
www IN A 192.168.3.11
pop IN CNAME mail #mail别名
ftp IN CNAME www #www别名
3.配置反向解析库文件:
vim /var/named/3.168.192.zone
$TTL 43200
@ IN SOA dns.chinasoft.com. admin.chinasoft.com. (
2014031202
2H
10M
7D
1D )
IN NS dns.chinasoft.com.
87 IN PTR dns.chinasoft.com.
10 IN PTR mail.chinasoft.com.
11 IN PTR www.chinasoft.com.
cd /var/named
更改文件属组:
chown :named chinasoft.com.zone
chown :named 3.168.192.zone
更改文件权限:
chmod 640 chinasoft.com.zone
chmod 640 3.168.192.zone
检查防火墙,selinux状态:
service iptables status
iptables: Firewall is not running.
getenforce
Disabled
检测区域解析库配置文件语法:
named-checkzone "chinasoft.com" chinasoft.com.zone
zone chinasoft.com/IN: loaded serial 2014121001
OK
service named restart
这两个配置好之后还要改一下你的NDS服务器的指向、编辑/etc/resolv.conf:
# vim /etc/resolv.conf
domain chinasoft.com
search chinasoft.com
nameserver 192.168.3.86
测试正向区域解析情况:
测试反向区域解析情况:
dig -x 192.168.3.11
报错:
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -x 192.168.3.11
;; global options: +cmd
;; connection timed out; no servers could be reached
修改:/etc/named.conf
修改下面两个句子
options {
listen-on port 53 { 192.168.3.17; }; (我就是在这里出问题的默认此处是127.0.0.1,就是因为没把此次IP改为本机IP所以一直解析不到)
allow-query { any; }; (这里可能也要改默认是localhost)
host命令:
检测正向解析库;
检测反向解析库:
# host -t ptr 192.168.3.11 192.168.3.17
Using domain server:
Name: 192.168.3.17
Address: 192.168.3.17#53
Aliases:
11.3.168.192.in-addr.arpa domain name pointer www.chinasoft.com.
# host -t ptr 192.168.3.10 192.168.3.17
Using domain server:
Name: 192.168.3.17
Address: 192.168.3.17#53
Aliases:
10.3.168.192.in-addr.arpa domain name pointer mail.chinasoft.com.
域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
开始时,域名的字符仅限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“x.台湾”这样的域名可以在地址栏直接输入,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入,难以在国际推广等。
BIND(Berkeley InternetName Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
我们使用的DNS软件就是BIND。
实验环境:
CentOS release 6.5(Final) 两台IP地址:
192.168.3.17 DNS1 DNS服务器端
192.168.3.18 DNS2 测试机
我们要架设一个本地DNS服务器一般需要下面三个软件程序包:
bind-libs.x86_64 #提供库文件
bind-utils.x86_64 #提供工具包
bind.x86_64 #提供主程序包
我还没使用安全套件,所以没有使用bind-chroot程序包。
chroot 环境为了系统的安全性考虑,一般来说目前各主要 distributions 都已经自动的将你的 bind 相关程序给他 chroot 了。
一.安装bind程序包
使用yum源安装:yum install -y bind-libs bind-utils bind.x86_64
检查安装情况:
rpm -qa bind*
bind-libs-9.8.2-0.47.rc1.el6.x86_64
bind-utils-9.8.2-0.47.rc1.el6.x86_64
bind-9.8.2-0.47.rc1.el6.x86_64
二.配置Bind
Bind的配置文件存放在/etc/目录下:/etc/named.conf #主配置文件
/etc/named.rfc1912.zones #正反向区域文件
我们首先配置主配置文件:/etc/named.conf
cat /etc/named.conf
===========================================================================
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 { any; };
recursion yes;
pid-file "/var/run/named/named.pid"; //存着named的pid
forwarders { 168.95.1.1; 139.175.10.20; }; // 如果域名服务器无法解析时,将请求交由168.95.1.1; 139.175.10.20来解析
allow-query { any; }; //指定允许进行查询的主机,当然是要所有的电脑都可以查啦
allow-transfer { none; }; //指定允许接受区域传送请求的主机,说明白一点就是辅dns定义,比如辅dns的ip是192.168.139.5,那么可以这样定义{ 192.168.139.5; },要不然主辅dns不能同步,当然,{}里的也可以用下面提到的acl(智能dns会用到动态ip库,acl文件存储着ip列表)。
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
/* 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;
};
};
zone "." IN { #正向解析
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" IN { #反向解析
type master;
file "named.loopback";
allow-transfer { none; };
};
view localhost_resolver { //定义一个视图
match-clients { any; }; //查询者的源地址,any表示localhost_resolver视图对任何主机开放,如果写成{ acl1; },那么就只有acl1表里的ip可以递归查询了
match-destinations { any; }; //查询者的目标地址,这里也可以写成{ localhost; acl1; }
recursion yes; //设置进行递归查询
include "/etc/named.rfc1912.zones"; //包含文件,这里也就是载入/etc/named.rfc1912.zones,正反向解析配置文件
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
===========================================================================
配置文件中的三个文件named.ca、named.localhost、named.loopback上面已经提供有一个了named.ca了、还有这两个named.localhost、named.loopback、同样我们也得提供、也是在/var/named目录下创建:
# vim /var/named/named.localhost
$TTL 86400 ;定义宏
@ IN SOA localhost admin.localhost. (
2014031101 ;序列号
2H ;刷新时间
10M ;失败时重试间隔时间
7D ;过期时间
1D) ;否定答案的时间
IN NS localhost.
localhost. IN A 192.168.3.1
================================
$TTL 86400
@ IN SOA localhost admin.localhost. (
2014031101 ;
2H ;
10M ;
7D ;
1D) ;
IN NS localhost.
localhost. IN A 192.168.3.1
================================
然后复制一份改写named.loopback的文件:
# cp /var/named/named.localhost /var/named/named.loopback
# vim named.loopback
$TTL 86400
@ IN SOA localhost admin.localhost. (
2014031101
2H
10M
7D
1D )
IN NS localhost.
1 IN PTR localhost.
三.区域解析库文件配置
1.区域解析库文件的简要说明:
常见的正解文件 RR 相关信息
[domain] IN [[RR type] [RR data]]
主机名. IN A IPv4 的 IP 地址
主机名. IN AAAA IPv6 的 IP 地址
区域名. IN NS 管理这个领域名的服务器主机名字.
区域名. IN SOA 管理这个领域名的七个重要参数(如上说明)
区域名. IN MX 顺序数字 接收邮件的服务器主机名字
主机别名. IN CNAME 实际代表这个主机别名的主机名字.
单位:W=周、D=日、H=小时、M=分钟。
$TTL 86400 宏定义全局TTL时间
@ IN SOA ns.chinasoft.com. root ( # ns.chinasoft.com. 是DNS服务器的名称
0 ; serial (d. adams) 仅作为序列号而已
1D ;refresh 服务器的更新时间
15M ; retry 重新更新时间间隔
1W ; expiry 多久之后宣布失败
1H ) ;minimum 相当于缓存记忆时间
@ IN NS ns.chinasoft.com.
@ IN MX 5 mail.chinasoft.com.(5为优先级别)
ns IN A 172.16.31.3
www IN A 172.16.31.3
www IN A 172.16.31.3
mail IN A 172.16.31.3
2.配置正向解析库文件:
vim /var/named/chinasoft.com.zone
$TTL 43200 #定义宏,通用变量,单位为秒
@ IN SOA dns.chinasoft.com admin.chinasoft.com. (
2014031101 ; #序列号
2H ; #刷新时间
10M ; #失败重试时间
7D ; #过期时间
1D) ; #否定答案时间
@ IN NS dns
@ IN MX 10 mail
dns IN A 192.168.3.17
mail IN A 192.168.3.10
www IN A 192.168.3.11
pop IN CNAME mail #mail别名
ftp IN CNAME www #www别名
3.配置反向解析库文件:
vim /var/named/3.168.192.zone
$TTL 43200
@ IN SOA dns.chinasoft.com. admin.chinasoft.com. (
2014031202
2H
10M
7D
1D )
IN NS dns.chinasoft.com.
87 IN PTR dns.chinasoft.com.
10 IN PTR mail.chinasoft.com.
11 IN PTR www.chinasoft.com.
四.更改目录权限及属组
cd /var/named
更改文件属组:
chown :named chinasoft.com.zone
chown :named 3.168.192.zone
更改文件权限:
chmod 640 chinasoft.com.zone
chmod 640 3.168.192.zone
检查防火墙,selinux状态:
service iptables status
iptables: Firewall is not running.
getenforce
Disabled
检测区域解析库配置文件语法:
named-checkzone "chinasoft.com" chinasoft.com.zone
zone chinasoft.com/IN: loaded serial 2014121001
OK
五.启动服务
service named restart
这两个配置好之后还要改一下你的NDS服务器的指向、编辑/etc/resolv.conf:
# vim /etc/resolv.conf
domain chinasoft.com
search chinasoft.com
nameserver 192.168.3.86
六.测试DNS服务器的域信息是否正常:
dig命令:测试正向区域解析情况:
- # dig -t SOA chinasoft.com @192.168.3.17
- ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t SOA chinasoft.com @192.168.3.17
- ;; global options: +cmd
- ;; Got answer:
- ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20339
- ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
- ;; QUESTION SECTION:
- ;chinasoft.com. IN SOA
- ;; ANSWER SECTION:
- chinasoft.com. 43200 IN SOA dns.chinasoft.com.chinasoft.com. admin.chinasoft.com. 2014031101 7200 600 604800 86400
- ;; AUTHORITY SECTION:
- chinasoft.com. 43200 IN NS dns.chinasoft.com.
- ;; ADDITIONAL SECTION:
- dns.chinasoft.com. 43200 IN A 192.168.3.17
- ;; Query time: 0 msec
- ;; SERVER: 192.168.3.17#53(192.168.3.17)
- ;; WHEN: Tue Sep 13 10:49:41 2016
- ;; MSG SIZE rcvd: 125
测试反向区域解析情况:
dig -x 192.168.3.11
报错:
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -x 192.168.3.11
;; global options: +cmd
;; connection timed out; no servers could be reached
修改:/etc/named.conf
修改下面两个句子
options {
listen-on port 53 { 192.168.3.17; }; (我就是在这里出问题的默认此处是127.0.0.1,就是因为没把此次IP改为本机IP所以一直解析不到)
allow-query { any; }; (这里可能也要改默认是localhost)
host命令:
检测正向解析库;
- # host -t A www.chinasoft.com 192.168.3.17
- Using domain server:
- Name: 192.168.3.17
- Address: 192.168.3.17#53
- Aliases:
- www.chinasoft.com has address 192.168.3.11
检测反向解析库:
# host -t ptr 192.168.3.11 192.168.3.17
Using domain server:
Name: 192.168.3.17
Address: 192.168.3.17#53
Aliases:
11.3.168.192.in-addr.arpa domain name pointer www.chinasoft.com.
# host -t ptr 192.168.3.10 192.168.3.17
Using domain server:
Name: 192.168.3.17
Address: 192.168.3.17#53
Aliases:
10.3.168.192.in-addr.arpa domain name pointer mail.chinasoft.com.