开源DNS服务器软件 BIND的安装、配置与使用

Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。

1、什么是DNS?

域名系统(英文:Domain Name System,DNS)是因特网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

DNS最早于1983年由保罗·莫卡派乔斯(Paul Mockapetris)发明;原始的技术规范在882号因特网标准草案(RFC 882)中发布。1987年发布的第1034和1035号草案修正了DNS技术规范,并废除了之前的第882和883号草案。在此之后对因特网标准草案的修改基本上没有涉及到DNS技术规范部分的改动。

早期的域名必须以英文句号“.”结尾,当用户访问 www.toxingwang.com 的HTTP服务时必须在址栏中输入:http://www.toxingwang.com.,这样DNS才能够进行域名解析。如今DNS服务器已经可以自动补上结尾的句号。

2、DNS的基本概念:

2.1 DNS记录类型及基本格式

SOA记录:表明此 DNS 名称服务器是为该 DNS 域中的数据的信息的来源。

##SOA记录格式

ZONE NAME TTL IN SOA FQDN ADMINISTRATOR_MAILBOX (
serial number
refresh
retry
expire
na ttl )
##时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
##邮箱格式:admin@toxingwang.com -写为-> admin.toxingwang.com

域名服务器记录(NS记录):用来指定某域名由哪个DNS服务器来进行解析。

##NS(Name Server): ZONE NAME --> FQDN
toxingwang.com. 600 IN NS ns1.toxingwang.com.
toxingwang.com. 600 IN NS ns2.toxingwang.com.
ns1.toxingwang.com. 600 IN A 192.168.8.100
ns2.toxingwang.com. 600 IN A 192.168.8.101

##NS记录除了NS记录本身,还应该包含NS对应A记录

主机记录(A记录):A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。

##A(address): FQDN-->IPv4

mail.toxingwang.com. 600 IN A 192.168.8.3

别名记录(CNAME记录): 用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。

##CNAME(Canonical NAME): FQDN-->FQDN
www2.toxingwang.com. IN CNAME www.toxingwang.com.

邮件交换记录(MX记录):用于电子邮件程序发送邮件时根据收信人的地址后缀来定位邮件服务器。

##MX(Mail eXchanger): ZONE NAME --> FQDN
ZONE NAME TTL IN MX pri VALUE
##优先级:0-99,数字越小级别越高,如:
toxingwang.com. 600 IN MX 10 mail.toxingwang.com.
mail.toxingwang.com. 600 IN A 192.168.8.3

IPv6主机记录(AAAA记录): 与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
服务位置记录(SRV记录): 用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。
反向解析记录(PTR记录):用于将一个IP地址映射到对应的域名,也可以看成是A记录的反向,IP地址的反向解析。
NAPTR记录: 它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

2.2 DNS查询有两种方式:递归 和 迭代。

递归查询图解:

用户使用toxingwang.com的DNS服务器ns.toxingwang.com解析www.kernel.org主机的递归查询过程如下:

DNS递归查询过程

迭代查询图解:

同样用户使用toxingwang.com的DNS服务器ns.toxingwang.com查询www.kernel.org主机的迭代查询过程如下:

DNS迭代查询过程

 

本地dns服务器需要发起多次查询请求,迭代方式查询到www.kernel.org主机,而对于用户来说,本地dns服务器却是递归查询,用户只需发起一次查询请求,服务器将查询到的结果反馈给用户。

DNS客户端设置使用的DNS服务器(如上图的ns.toxingwang.com)一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器(如上图的根域、org域等)之间一般采用迭代查询方式。以查询 www.kernel.org 为例:
客户端发送查询报文"query www.kernel.org"至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。
如果记录老化或不存在,则

  • DNS服务器向根域名服务器发送查询报文"query www.kernel.org",根域名服务器返回 .org 域的权威域名服务器地址。
  • DNS服务器向 .com 域的权威域名服务器发送查询报文"query www.kernel.org",得到 .kernel.org 域的权威域名服务器地址。
  • DNS服务器向 .kernel.org 域的权威域名服务器发送查询报文"query www.kernel.org",得到主机 www的A记录,存入自身缓存并返回给客户端。

2.3 DNS监听端口

DNS默认使用tcp53和udp53端口,TCP53端口一般用于区域传送,而其他时候使用UDP53。

3、常见DNS服务器:

目前互联网上最为广泛的DNS服务器为bind,而企业内部,由于很多企业使用windows AD域,因此Windows DNS在企业内部应用较多。其他还包括:

DJBDNS (Dan J Bernstein's DNS implementation)

MaraDNS

NSD (Name Server Daemon)

PowerDNS

mydns

DNS服务工具 Dnsmasq

Windows下的DNS服务器 NtBind

轻量级DNS服务器 djbdns
智能DNS系统 wddns[国产的但社区较为活跃]
基于twisted实现的智能dns系统 smartdns [小米等知名科技公司在用]

DNS 管理系统 NamedManager
集群域名解析管理 mysqlBind
DNS 防攻击工具 dnswall
动态域名服务软件 PyDDnsPod
DNS 服务器 RubyDNS
更多开源DNS服务器 -开源中国社区: http://www.oschina.net/project/tag/108/dnsserver

DNS 服务器 dnspod-sr


        对于一个互联网企业来说,搭建一个公司内部的DNS服务器是很必要的,一来可以通过公司内网的DNS缓存提高公司内部的DNS解析效率,二来域名服务商提供的解析服务并不可靠,为了安全起见,自己搭建(当然也有不错的第三方DNS解析服务,如DNSpod,但需要收费),三来公司内部有一些服务在内网需要解析成内网IP,对于公网的用户访问就需要访问公网的IP,这样可以通过DNS配置轻松实现,当然还有其他很多实现方式。

为了提高DNS可用性部署采用一主多辅的方式部署,使用辅服务器提供解析读服务,主服务处理写服务。另外,为了实现内外网解析的不同,使用bind的ACL+VIEW实现智能解析。

一、搭建环境


为了测试方便我们搭建一主一辅,对个辅服务器配置都雷同。

Mater:192.168.36.54外网:121.42.81.52

Slave:192.168.36.189外网:121.42.81.53

公司内外网解析不同域名:

域名(slimsmart.cn):

主机内网地址外网地址

mail.slimsmart.cn192.168.0.25 121.42.81.20

ftp.slimsmart.cn192.168.0.21121.42.81.21

二、安装bind

请参考:http://blog.csdn.net/zhu_tianwei/article/details/45045431

三、配置

1.生成内外网TSIG

vi /etc/keys.conf

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. key "neiwang_key" {  
  2.         algorithm hmac-md5;  
  3.         secret "XvbglfmP8aZ20CLEP5NL+w==";  
  4. };  
  5.   
  6. key "waiwang_key" {  
  7.         algorithm hmac-md5;  
  8.         secret "6Ube2jTRIPxuIBlL5rCg5Q==";  
  9. };  
关于生成方法参考:dnssec-keygen命令

2.主服务器

vi /etc/named.conf

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. key "rndc-key" {  
  2.         algorithm hmac-md5;  
  3.         secret "GfdVJ8ppCKJiCejNVq3xkQ==";  
  4. };  
  5.   
  6. controls {  
  7.         inet 127.0.0.1 port 953  
  8.                 allow { 127.0.0.1; } keys { "rndc-key"; };  
  9. };  
  10.   
  11. options{  
  12.         listen-on port 53{  
  13.                 192.168.36.54;  
  14.         };  
  15.         version "slim-dns3.0";  
  16.         directory "/var/named";  
  17.         pid-file "/var/run/named.pid";  
  18.         session-keyfile "/var/run/session.key";  
  19.         dump-file "/var/named/data/cache_dump.db";  
  20.         statistics-file "/var/named/data/named_stats.txt";  
  21.         memstatistics-file "/var/named/data/named_mem_stats.txt";  
  22.         recursion no;   
  23.         allow-query{  
  24.                 any;  
  25.         };  
  26.         allow-query-cache{  
  27.                 any;  
  28.         };  
  29.         allow-new-zones yes;  
  30. };  
  31.   
  32. logging {   
  33.         channel default_debug {  
  34.                 file "/var/named/data/named.run";  
  35.                 severity dynamic;  
  36.         };  
  37.         channel query_info {   
  38.                 file "/var/named/log/query.log" versions 1 size 100m;   
  39.                 severity info;   
  40.                 print-category yes;   
  41.                 print-severity yes;   
  42.                 print-time yes;   
  43.         };   
  44.    
  45.         category queries {   
  46.                 query_info;   
  47.                 default_debug;   
  48.         };   
  49.    
  50.         channel notify_info {   
  51.                 file "/var/named/log/notify.log" versions 8 size 128m;   
  52.                 severity info;   
  53.                 print-category yes;   
  54.                 print-severity yes;   
  55.                 print-time yes;   
  56.         };   
  57.    
  58.         category notify {   
  59.                 notify_info;   
  60.         };  
  61.   
  62.         channel xfer_in_log {    
  63.                 file "/var/named/log/xfer_in.log" versions 100 size 10m;    
  64.                 severity info;    
  65.                 print-category yes;    
  66.                 print-severity yes;    
  67.                 print-time yes;    
  68.         };    
  69.     
  70.         channel xfer_out_log {    
  71.                 file "/var/named/log/xfer_out.log" versions 100 size 10m;    
  72.                 severity info;    
  73.                 print-category yes;    
  74.                 print-severity yes;    
  75.                 print-time yes;    
  76.         };    
  77.   
  78.         category xfer-in { xfer_in_log; };    
  79.         category xfer-out { xfer_out_log; };    
  80.    
  81. };  
  82.   
  83. include "/etc/keys.conf";  
  84.   
  85. acl "lan" {  
  86.         10.0.0.0/8;  
  87.         172.16.0.0/12;  
  88.     #192.168.0.0/16;  
  89. };  
  90.   
  91. view "neiwang" {  
  92.         match-clients {  
  93.                 key neiwang_key;  
  94.                 lan;  
  95.                 127.0.0.1;  
  96.         };  
  97.         server 192.168.36.189 {keys neiwang_key;};  
  98.         zone "." in {  
  99.                 type hint;  
  100.                 file "named.root";  
  101.         };  
  102.         zone "localhost" in {  
  103.                 type master;  
  104.                 file "localhost.zone";  
  105.                 allow-update { none; };  
  106.         };  
  107.         zone "0.0.127.in-addr.arpa" in {  
  108.                 type master;  
  109.                 file "localhost.rev";  
  110.                 allow-update { none; };  
  111.         };  
  112.         zone "slimsmart.cn" IN {  
  113.                 type master;  
  114.                 allow-transfer{    
  115.                         192.168.36.189;  
  116.                         key neiwang_key;    
  117.                 };     
  118.                 notify yes;    
  119.                 also-notify{    
  120.                         192.168.36.189;    
  121.                 };  
  122.                 file "zone/neiwang/slimsmart.cn.zone";  
  123.                 allow-update {any; };  
  124.         };  
  125. };  
  126.   
  127.   
  128. view "waiwang" {  
  129.         match-clients {  
  130.                 key waiwang_key;  
  131.                 any;  
  132.         };  
  133.         server 192.168.36.189 {keys waiwang_key;};  
  134.         zone "." in {  
  135.                 type hint;  
  136.                 file "named.root";  
  137.         };  
  138.         zone "localhost" in {  
  139.                 type master;  
  140.                 file "localhost.zone";  
  141.                 allow-update { none; };  
  142.         };  
  143.         zone "0.0.127.in-addr.arpa" in {  
  144.                 type master;  
  145.                 file "localhost.rev";  
  146.                 allow-update { none; };  
  147.         };  
  148.         zone "slimsmart.cn" IN {  
  149.                 type master;  
  150.                 allow-transfer{  
  151.                         192.168.36.189;  
  152.                         key waiwang_key;  
  153.                 };  
  154.                 notify yes;  
  155.                 also-notify{  
  156.                         192.168.36.189;  
  157.                 };        
  158.                 file "zone/waiwang/slimsmart.cn.zone";  
  159.                 allow-update {any;};  
  160.         };  
  161. };  
主服务器不提供查询服务,所以关闭递归服务:recursion no;

由于需要动态添加zone和解析记录RR,所以acl lan排除了自己的网络地址,也可以根据自己的实际情况,使用!排除单个IP地址,如:

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. acl "lan" {  
  2.         10.0.0.0/8;  
  3.         172.16.0.0/12;  
  4.     192.168.0.0/16;  
  5.     !192.168.36.100;  
  6. };  
对于zone允许更新:allow-update {any; };,由于排除自己的IP地址,会根据TSIG查找view。
在/var/named/zone/neiwang和/var/named/zone/waiwang创建slimsmart.cn.zone文件

vi /var/named/zone/neiwang/slimsmart.cn.zone

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. $TTL      86400  
  2. @               IN      SOA     slimsmart.cn.   admin.slimsmart.cn. (  
  3.                                         1       ; serial (d. adams)  
  4.                                         3H      ; refresh  
  5.                                         15M     ; retry  
  6.                                         1W      ; expiry  
  7.                                         1D )    ; minimu  
  8.                 IN      NS      ns.slimsmart.cn.  
  9. ns              IN      A       192.168.36.189  
  10. mail            IN      A       192.168.0.25  
  11. ftp             IN      A       192.168.0.21  
vi /var/named/zone/waiwang/slimsmart.cn.zone

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. $TTL      86400  
  2. @               IN      SOA     slimsmart.cn.   admin.slimsmart.cn. (  
  3.                                         1       ; serial (d. adams)  
  4.                                         3H      ; refresh  
  5.                                         15M     ; retry  
  6.                                         1W      ; expiry  
  7.                                         1D )    ; minimu  
  8.                 IN      NS      ns.slimsmart.cn.  
  9. ns              IN      A       121.42.81.53  
  10. mail            IN      A       121.42.81.20  
  11. ftp             IN      A       121.42.81.21  
3.辅服务器

复制/etc/keys.conf到辅服务器。

vi /etc/named.conf

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. key "rndc-key" {  
  2.         algorithm hmac-md5;  
  3.         secret "6Kb4sKpIUJq5i4ozE2AXzQ==";  
  4. };  
  5.   
  6. controls {  
  7.         inet 127.0.0.1 port 953  
  8.                 allow { 127.0.0.1; } keys { "rndc-key"; };  
  9. };  
  10.   
  11. options{  
  12.         listen-on port 53{  
  13.                 192.168.36.189;  
  14.         };  
  15.         version "slim-dns 3.0";  
  16.         directory "/var/named";  
  17.         pid-file "/var/run/named.pid";  
  18.         session-keyfile "/var/run/session.key";  
  19.         dump-file "/var/named/data/cache_dump.db";  
  20.         statistics-file "/var/named/data/named_stats.txt";  
  21.         memstatistics-file "/var/named/data/named_mem_stats.txt";  
  22.         recursion yes;   
  23.         allow-query{  
  24.                 any;  
  25.         };  
  26.         allow-query-cache{  
  27.                 any;  
  28.         };  
  29.         allow-transfer{  
  30.                 none;  
  31.         };   
  32. };  
  33.   
  34. logging {   
  35.         channel default_debug {  
  36.                 file "/var/named/data/named.run";  
  37.                 severity dynamic;  
  38.         };  
  39.         channel query_info {   
  40.                 file "/var/named/log/query.log" versions 1 size 100m;   
  41.                 severity info;   
  42.                 print-category yes;   
  43.                 print-severity yes;   
  44.                 print-time yes;   
  45.         };   
  46.    
  47.         category queries {   
  48.                 query_info;   
  49.                 default_debug;   
  50.         };   
  51.    
  52.         channel notify_info {   
  53.                 file "/var/named/log/notify.log" versions 8 size 128m;   
  54.                 severity info;   
  55.                 print-category yes;   
  56.                 print-severity yes;   
  57.                 print-time yes;   
  58.         };   
  59.    
  60.         category notify {   
  61.                 notify_info;    
  62.         };   
  63.         channel xfer_in_log {    
  64.                 file "/var/named/log/xfer_in.log" versions 100 size 10m;  
  65.                 severity info;  
  66.                 print-category yes;  
  67.                 print-severity yes;  
  68.                 print-time yes;  
  69.         };  
  70.   
  71.         channel xfer_out_log {  
  72.                 file "/var/named/log/xfer_out.log" versions 100 size 10m;  
  73.                 severity info;  
  74.                 print-category yes;  
  75.                 print-severity yes;  
  76.                 print-time yes;  
  77.         };      
  78.   
  79.         category xfer-in { xfer_in_log; };  
  80.         category xfer-out { xfer_out_log; };   
  81. };   
  82.   
  83. include "/etc/keys.conf";  
  84.   
  85. acl "lan" {  
  86.         10.0.0.0/8;  
  87.         172.16.0.0/12;  
  88.         #192.168.0.0/16;  
  89. };  
  90.   
  91. view "neiwang" {  
  92.         match-clients {  
  93.                 key neiwang_key;  
  94.                 lan;  
  95. 127.0.0.1;  
  96.         };  
  97.         server 192.168.36.54 {keys neiwang_key;};  
  98.         zone "." in {  
  99.                 type hint;  
  100.                 file "named.root";  
  101.         };  
  102.         zone "localhost" in {  
  103.                 type master;  
  104.                 file "localhost.zone";  
  105.                 allow-update { none; };  
  106.         };  
  107.         zone "0.0.127.in-addr.arpa" in {  
  108.                 type master;  
  109.                 file "localhost.rev";  
  110.                 allow-update { none; };  
  111.         };  
  112.         zone "slimsmart.cn" IN {  
  113.                 type slave;  
  114.                 masters {192.168.36.54;};  
  115.                 file "zone/neiwang/slimsmart.cn.zone";  
  116.         };  
  117. };  
  118.   
  119.   
  120. view "waiwang" {  
  121.         match-clients {  
  122.                 key waiwang_key;  
  123.                 any;  
  124.         };  
  125.         server 192.168.36.54 {keys waiwang_key;};  
  126.         zone "." in {  
  127.                 type hint;  
  128.                 file "named.root";  
  129.         };  
  130.         zone "localhost" in {  
  131.                 type master;  
  132.                 file "localhost.zone";  
  133.                 allow-update { none; };  
  134.         };  
  135.         zone "0.0.127.in-addr.arpa" in {  
  136.                 type master;  
  137.                 file "localhost.rev";  
  138.                 allow-update { none; };  
  139.         };  
  140.         zone "slimsmart.cn" IN {  
  141.                 type slave;  
  142.                 masters {192.168.36.54;};  
  143.                 file "zone/waiwang/slimsmart.cn.zone";  
  144.         };  
  145. };  

创建zone目录:mkdir /var/named/zone/{neiwang,waiwang}

四、启动服务

/home/slim/bind/sbin/named -u slim -t /home/slim/chroot/ -c /etc/named.conf -g

使用-g参数查看日志。

五、测试

使用dig命令指定TSIG查询对应的view数据。

内网:

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. $ dig @192.168.36.189 -y neiwang_key:XvbglfmP8aZ20CLEP5NL+w== mail.slimsmart.cn A  
  2.   
  3. ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> @192.168.36.189 -y neiwang_key mail.slimsmart.cn A  
  4. ; (1 server found)  
  5. ;; global options: +cmd  
  6. ;; Got answer:  
  7. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8707  
  8. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2  
  9.   
  10. ;; QUESTION SECTION:  
  11. ;mail.slimsmart.cn.             IN      A  
  12.   
  13. ;; ANSWER SECTION:  
  14. mail.slimsmart.cn.      86400   IN      A       192.168.0.25  
  15.   
  16. ;; AUTHORITY SECTION:  
  17. slimsmart.cn.           86400   IN      NS      ns.slimsmart.cn.  
  18.   
  19. ;; ADDITIONAL SECTION:  
  20. ns.slimsmart.cn.        86400   IN      A       192.168.36.189  
  21.   
  22. ;; TSIG PSEUDOSECTION:  
  23. neiwang_key.            0       ANY     TSIG    hmac-md5.sig-alg.reg.int. 1429441020 300 16 XtXO82VDmuWwuFk80zyjcA== 8707 NOERROR 0   
  24.   
  25. ;; Query time: 2 msec  
  26. ;; SERVER: 192.168.36.189#53(192.168.36.189)  
  27. ;; WHEN: Sun Apr 19 03:57:05 2015  
  28. ;; MSG SIZE  rcvd: 165  
外网:

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. $ dig @192.168.36.189 -y waiwang_key:6Ube2jTRIPxuIBlL5rCg5Q== mail.slimsmart.cn A  
  2.   
  3. ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> @192.168.36.189 -y waiwang_key mail.slimsmart.cn A  
  4. ; (1 server found)  
  5. ;; global options: +cmd  
  6. ;; Got answer:  
  7. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53129  
  8. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2  
  9.   
  10. ;; QUESTION SECTION:  
  11. ;mail.slimsmart.cn.             IN      A  
  12.   
  13. ;; ANSWER SECTION:  
  14. mail.slimsmart.cn.      86400   IN      A       121.42.81.20  
  15.   
  16. ;; AUTHORITY SECTION:  
  17. slimsmart.cn.           86400   IN      NS      ns.slimsmart.cn.  
  18.   
  19. ;; ADDITIONAL SECTION:  
  20. ns.slimsmart.cn.        86400   IN      A       121.42.81.53  
  21.   
  22. ;; TSIG PSEUDOSECTION:  
  23. waiwang_key.            0       ANY     TSIG    hmac-md5.sig-alg.reg.int. 1429441069 300 16 BWW92tBf9nezkxK4nQE91Q== 53129 NOERROR 0   
  24.   
  25. ;; Query time: 1 msec  
  26. ;; SERVER: 192.168.36.189#53(192.168.36.189)  
  27. ;; WHEN: Sun Apr 19 03:57:53 2015  
  28. ;; MSG SIZE  rcvd: 165  
使用nsupdate添加内外网解析记录,

内网:

www.slimsmart.cn  A  1.1.1.1

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. $ ./bind/bin/nsupdate -y neiwang_key:XvbglfmP8aZ20CLEP5NL+w==  
  2. > server 192.168.36.54  
  3. > zone slimsmart.cn  
  4. > update add www.slimsmart.cn 6000 A 1.1.1.1  
  5. > send  
  6. >quit  
外网:

www.slimsmart.cn  A  2.2.2.2

[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. $ ./bind/bin/nsupdate -y waiwang_key:6Ube2jTRIPxuIBlL5rCg5Q==  
  2. > server 192.168.36.54  
  3. > zone slimsmart.cn  
  4. > update add www.slimsmart.cn 6000 A 2.2.2.2  
  5. > send  
  6. > quit  

再使用dig查询一下,解析正常。

BIND9+mysql的其他安装方式

  • 源码安装:

bind官方网站提供了最新版的bind安装源码,可以下载编译安装:http://www.isc.org/downloads/

  • yum源安装:

如果使用RHEL、CentOS,可以使用yum在线安装,如果是ubuntu等,则可以使用apt在线安装。

我这里以Centos使用yum安装为例,测试环境如下:

主机名:ns.toxingwang.com

主机IP:192.168.8.101

[root@ns ~]# rpm -q bind    ##查看当前是否安装bind,如果安装的是比较旧的版本,则可以先删除

目前centos 6的安装源提供了bind9.8的安装包

[root@ns ~]# yum list |grep "^bind"   ##查找bind安装包
bind.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-chroot.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-dyndb-ldap.x86_64 2.3-2.el6_4.1 @updates
bind-libs.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-sdb.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-utils.x86_64 32:9.8.2-0.17.rc1.el6_4.5 @updates
bind-devel.i686 32:9.8.2-0.17.rc1.el6_4.5 updates
bind-devel.x86_64 32:9.8.2-0.17.rc1.el6_4.5 updates
bind-libs.i686 32:9.8.2-0.17.rc1.el6_4.5 updates

这里只须安装最基本的bind、bind-libs、bind-utils三个组件即可

[root@ns ~]# yum -y install bind bind-libs bind-utils

5、BIND9的基本配置:

5.1 bind的文件:

主配置文件:/etc/named.conf

rndc配置文件:/etc/rndc.conf

数据目录:/var/named/

[root@ns ~]# ls /var/named/
dynamic  named.empty named.loopback data named.ca named.localhost slaves

5.2 配置named.conf

named.conf的基本配置中,文件主要分两部分,全局配置和zone配置:

默认情况下,named.conf已经有基本配置,我们删除后重新配置后如下:

options {                      ##全局配置,所有配置都要以分红结尾
listen-on port 53 { 192.168.8.101; };            ##监听端口及地址,注意,大括号与中间内容间需要有空格
allow-query { 192.168.8.0/24; };          ##允许用户发起递归查询的地址范围
directory       "/var/named";          ##数据文件默认目录

};

zone "." IN {             ##定义跟区域
type hint;                      ##区域类型
file "named.ca";           ##区域对应数据文件
};

zone "toxingwang.com" IN {     ##定义本次试验解析域
type master;            ##区域类型为master
file "named.toxingwang";  ##区域数据文件
};

zone "localhost" IN {
type master;
file "named.localhost";
};

5.3 配置zone文件

 默认数据文件:

安装好bind98后,默认已经有根域和localhost域的数据文件,本次我们不修改其配置。

配置域toxingwang.com数据文件:

##复制localhost域数据文件作为模板修改

[root@ns named]# cp -p named.localhost named.toxingwang.com   ##复制时保留原来的权限

##修改数据文件

[root@ns named]# vi named.toxingwang.com

$TTL 1H   ##定义全局TTL宏
@ IN SOA ns.toxingwang.com. admin.toxingwang.com. (      ##从这里到下面反括号都是定义SOA记录
2013081701 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.toxingwang.com.
IN MX 10 mail.toxingwang.com.
ns IN A 192.168.8.101
www IN A 192.168.8.100
mail IN A 192.168.8.3
www2 IN CNAME www.toxingwang.com.

配置检查:

[root@ns named]# named-checkconf  ##检查named.conf配置文件是否存在语法错误

[root@ns named]# named-checkzone "toxingwang.com" /var/named/named.toxingwang.com  ##检查数据文件
zone toxingwang.com/IN: loaded serial 2013081701
OK

检查无误后即可启动named服务器了:

[root@ns named]# chkconfig named on  ##加入开机启动

[root@ns named]# service named start
启动 named: [确定]

5.4 测试解析

测试用具:nslookup、dig

使用nslookup测试时,需先指定server 为named服务器地址

bind_nslookup测试

参考文章:

1.使用bind构建高可用智能dns服务器

2.BIND9 管理员参考手册中文版.pdf - http://www.oschina.net/question/12_10889

任何技能都是从模仿开始,逐步升华

好的架构是进化而来的,好的产品是推广而来的.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值