现在的位置: 首页 > 综合 > 正文

在CentOS6.2下安装DNS服务软件Bind并快速配置简单实例

2017年12月11日 ⁄ 综合 ⁄ 共 18829字 ⁄ 字号 评论关闭

[实践Ok]在CentOS6.2下安装DNS并快速配置实例,共八步,心路历程如下:
背景介绍:
在日常的开发中,往往会在测试机和外网的Http的Url实际接口是不一样的,在测试机一个Url地址,在外网中又是一个地址。
这样在我们在开发时,在上线时就会去修改一下接口,在线下测试时用线下的Url接口,最后的情况是,在SVN的管理中会变得
很混乱,也就是在上线上的版本和线下测试的版本在改动上来回切换,版本号不段的切换,为此,为了解决这个问题,必须引入
自己建立一套内网测试系统的DNS来实现其和外网一样的环境,进而在实际开发中就不会出现因URL的接口包含的不同域名而导致
了代码版本管理的版本号不段攀升。

实际操作:
在Linux下尤其是CentOS这样的免费系统上有Yum这样的包管理工具来安DNS服务器,但是我在实践中发现其并不理想,可能是打出的Rpm包多少有些
不太让人满意,我试过用直接运行:yum install bind bind-utils bind-libs bind-chroot caching-nameserver,但后来在配置DNS时出现这样那样的问题.
找不到配置文件?(loading from master file 225.168.192.in-add.arpa failed: file not found)我X,什么权限问题都试了,但就是搞不定,于是否,
改用源码安装,这样来得更保险此些,操控性也强很多,有人问我,你的人生由谁来操盘:我操!

我的上手安装和配置如下:
一:开始安装DNS服务器Bind:
下载 bind  http://www.isc.org,解压bind-9.9.1-P1.tar.gz。
tar -zxvf bind-9.9.1-P1.tar.gz
进入 bind-9.9.1-P1.tar.gz文件夹
cd bind-9.9.1-P1
创建安装目录,我是安装在 /usr/local/named
mkdir /usr/local/named
编译,指定安装目录,指定man目录,开启多线程支持(测试环境也就没有必要搞多线程了,要整看帮助。)
./configure --prefix=/usr/local/named
Make 大约需要几分钟,只要不报错就继续下去。
make
Make install 安装
make install
没有报错,就表示安装成功了。
创建以下目录以备用
mkdir /usr/local/named/namedb

二:开始配置bind
创建 rndc.conf文件,用bind自带程序生成
cd /usr/local/named/
sbin/rndc-confgen > etc/rndc.conf   //一直死在这儿了,只得强制终止。
查原因,在网上搜索:linux安装dns,rndc-confgen没反应,哈,有一篇文章说到点上了,
Url:http://www.nginxs.com/linux/43.html,他说是,摘录如下:
在官方网站上看到这么一条信息
You must use the keyboard to create entropy, since your system is lacking
/dev/random (or equivalent)

start typing:
rndc-confgen: generate key: out of entropy

大概意思就是服务器上没有random产生器,这种情况下我们就手动伪造一个文件代替/dev/random的功能
###新建一个 random 文件随即输入一串数字“记得要长~~
shell $> vim random
asdkfjalsjdflajsldfjlasjdflajsldfjalsjdflajslfjalsjflasjfl
###查看 rndc-confgen 帮助
shell $> ../sbin/rndc-confgen –help
rndc-confgen: invalid argument –
Usage:
rndc-confgen [-a] [-b bits] [-c keyfile] [-k keyname] [-p port] [-r randomfile] [-s addr] [-t chrootdir] [-u user]
  -a:           generate just the key clause and write it to keyfile (/usr/local/named/etc/rndc.key)
  -b bits:      from 1 through 512, default 128; total length of the secret
  -c keyfile:   specify an alternate key file (requires -a)
  -k keyname:   the name as it will be used  in named.conf and rndc.conf
  -p port:      the port named will listen on and rndc will connect to
  -r randomfile: a file containing random data
  -s addr:      the address to which rndc should connect
  -t chrootdir: write a keyfile in chrootdir as well (requires -a)
  -u user:      set the keyfile owner to “user” (requires -a)

  1. shell $> ../sbin/rndc-confgen -r random > rndc.key   

,上面这一句是核心,自己整个Random文件是桥梁。
tail -10 rndc.key | head -9 | sed 's/# //g' > named.conf
把这个named.conf放在etc的文件夹子下:/usr/local/named/etc/named.conf。
ok 问题解决了,接下来我们配置 我们的 域名服务器吧。

三:配置篇
编辑named.conf
# vi  /usr/local/named/etc/named.conf
写入以下内容:我的Ip:192.168.225.128 ,注意:225.168.192.in-add.arpa是Ip的反解,刚好倒过来。

  1. key "rndc-key" {   
  2.   algorithm hmac-md5;   
  3.   secret "SnK8Ph1zCAnnykZ07qt+TQ==";   
  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.   Directory "/usr/local/named";   
  13.   Pid-file "named.pid";   
  14.   Allow-query { any ;};   
  15.   Dump-file "/usr/local/named/data/cache_dump.db";   
  16.   Statistics-file "/usr/local/named/data/named_stats.txt";   
  17. };   
  18. Zone "localhost" in {   
  19.   Type master;   
  20.   File "localhost.zone";   
  21. };   
  22. Zone "0.0.127.in-addr.arpa" in {   
  23.   Type master;   
  24.   File "localhost.rev";   
  25. };   
  26.   
  27. zone "51test.com" {   
  28.       type master;   
  29.       file "51test.com.zone";   
  30. };zone "225.168.192.in-add.arpa" IN {   
  31.         type master;   
  32.          file "225.168.192.in-add.arpa";   
  33. };   
  34.   

退出,保存。
创建并编辑 localhost.zone 文件
vi  /usr/local/named/localhost.zone
写入以下内容:

  1. $TTL 3600   
  2. $ORIGIN 127.0.0.1.   
  3. @  1D IN SOA localhost. root.localhost. (   
  4.                      42         ;   
  5.                      3H         ;   
  6.                      15M        ;   
  7.                      1W         ;   
  8.                      3600);   
  9.    1D IN NS  127.0.0.1   
  10.    1D IN A   127.0.0.1   
  11.   

创建并编辑 localhost.rev 文件
# vi /usr/local/named/localhost.rev

  1. $TTL 3600   
  2. @  IN SOA  localhost.  root.localhost. (   
  3.               1; serial   
  4.               3600; refresh every hour   
  5.               900;  retry every 15 minutes   
  6.               3600000; expire 1000 hours   
  7.               3600); minimun 1 hour   
  8.    IN NS localhost.   
  9. 1  IN PTR localhost.   
  10.   

因前面在,51test.com这个是在其他网页上抄过来的简单示例,于是也就顺便把文件也贴上:
vi  /usr/local/named/51test.com.zone

  1. $TTL 86400   
  2. @        IN        SOA        www.51test.com.  root.localhost (   
  3.                         2 ; serial   
  4.                         28800 ; refresh   
  5.                         7200 ; retry   
  6.                         604800 ; expire   
  7.                         86400 ; ttl   
  8.                         )   
  9.         IN      NS      www.51test.com.   
  10.   
  11. www      IN      A       192.168.225.128   
  12. admin     IN      A      192.168.225.128   
  13.   

再不是51test.com的反解配置文件:
vi /usr/local/named/225.168.192.in-add.arpa

  1. $TTL    86400   
  2. @       IN      SOA     51test.com.  root.51test.com.  (   
  3.                                       1997022700 ; Serial   
  4.                                       28800      ; Refresh   
  5.                                       14400      ; Retry   
  6.                                       3600000    ; Expire   
  7.                                       86400 )    ; Minimum   
  8. @         IN      NS      51test.com.   
  9. 128       IN      PTR    www.51test.com.   
  10. 128       IN      PTR    admin.51test.com.   
  11.   


配置注意事项:
配置文件中的 "@" 符号前不能有任何空白字符
配置文件中的 "IN" 字符前必须有空格或TAB
到此,配置大功告成。

四:
下载一个named.root 到/usr/local/named/下
ftp://ftp.rs.internic.net/domain/named.root
Ftp失效,从这儿下载:

http://www.smth.edu.cn/bbsgcon.php?board=FreeBSD&num=1209

特别注意:bind的配置文档是区分大小写的,因现在那个FTP好像下载不了,于是我也贴下面。
vi /usr/local/named/named.ca

  1. more named.root   
  2. ; This file holds the information on root name servers needed to   
  3. ; initialize cache of Internet domain name servers   
  4. ; (e.g. reference this file in the "cache . <file>"   
  5. ; configuration file of BIND domain name servers).   
  6. ;   
  7. ; This file is made available by InterNIC   
  8. ; under anonymous FTP as   
  9. ; file /domain/named.root   
  10. ; on server FTP.INTERNIC.NET   
  11. ;   
  12. ; last update: Nov 5, 2002   
  13. ; related version of root zone: 2002110501   
  14. ;   
  15. ;   
  16. ; formerly NS.INTERNIC.NET   
  17. ;   
  18. . 3600000 IN NS A.ROOT-SERVERS.NET.   
  19. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4   
  20. ;   
  21. ; formerly NS1.ISI.EDU   
  22. ;   
  23. . 3600000 NS B.ROOT-SERVERS.NET.   
  24. B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107   
  25. ;   
  26. ; formerly C.PSI.NET   
  27. ;   
  28. . 3600000 NS C.ROOT-SERVERS.NET.   
  29. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12   
  30. ;   
  31. ; formerly TERP.UMD.EDU   
  32. ;   
  33. . 3600000 NS D.ROOT-SERVERS.NET.   
  34. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90   
  35. ;   
  36. ; formerly NS.NASA.GOV   
  37. ;   
  38. . 3600000 NS E.ROOT-SERVERS.NET.   
  39. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10   
  40. ;   
  41. ; formerly NS.ISC.ORG   
  42. ;   
  43. . 3600000 NS F.ROOT-SERVERS.NET.   
  44. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241   
  45. ;   
  46. ; formerly NS.NIC.DDN.MIL   
  47. ;   
  48. . 3600000 NS G.ROOT-SERVERS.NET.   
  49. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4   
  50. ;   
  51. ; formerly AOS.ARL.ARMY.MIL   
  52. ;   
  53. . 3600000 NS H.ROOT-SERVERS.NET.   
  54. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53   
  55. ;   
  56. ; formerly NIC.NORDU.NET   
  57. ;   
  58. . 3600000 NS I.ROOT-SERVERS.NET.   
  59. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17   
  60. ;   
  61. ; operated by VeriSign, Inc.   
  62. ;   
  63. . 3600000 NS J.ROOT-SERVERS.NET.   
  64. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30   
  65. ;   
  66. ; housed in LINX, operated by RIPE NCC   
  67. ;   
  68. . 3600000 NS K.ROOT-SERVERS.NET.   
  69. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129   
  70. ;   
  71. ; operated by IANA   
  72. ;   
  73. . 3600000 NS L.ROOT-SERVERS.NET.   
  74. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12   
  75. ;   
  76. ; housed in Japan, operated by WIDE   
  77. ;   
  78. . 3600000 NS M.ROOT-SERVERS.NET.   
  79. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33   
  80. ; End of File   
  81.   

五:运行Bind程序,如下方式加载配置文件启动,加上调试信息参数:

如果运行结果最后一行显示Running
表明安装并启动成功。

最后需要注意的内容是不要忘了是否真正的开启服务器端口(以下是named.conf文件中端口的设置语句,可以看到端口号是 53:telnet x.x.x.x 53)
当然也可以用:nmap localhost ,没有yum安装,这种小工具问题不大用yum来做。
yum install nmap
Total download size: 2.3 M
Installed size: 7.5 M
Is this ok [y/N]: y
Downloading Packages:
root@192.168.225.128:/usr/local/named# nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2012-06-18 03:09 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000033s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
53/tcp   open  domain
80/tcp   open  http
111/tcp  open  rpcbind
3306/tcp open  mysql
9000/tcp open  cslistener

端口号是 53就是DNS Bind的端口。

六:停止及启动:
root@192.168.225.128:/usr/local/named# ps aux|grep name
root     19024  0.0  1.2  10624  6216 pts/0    T    03:00   0:00 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
root@192.168.225.128:/usr/local/named# kill -9 19024
root@192.168.225.128:/usr/local/named# ps aux|grep name
[2]+  已杀死               /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf

七:本机测试,外部机器测试是否dns生效:
vi /etc/resolv.conf
加上,去掉注释其他Dns的Ip值:
nameserver 192.168.225.128
启动Dns后,清楚Bind服务器上的Dns缓存:
root@192.168.225.128:/usr/local/named# ./sbin/rndc flush

root@192.168.225.128:/usr/local/named# ping www.51test.com
PING www.51test.com (192.168.225.128) 56(84) bytes of data.
64 bytes from 192.168.225.128: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 192.168.225.128: icmp_seq=2 ttl=64 time=0.058 ms

八:将服务设置为开机自启,把named 添加到启动项,随操作系统一起启动即可:

但是,我们现在是源码的安装,So,得这样子喔。
修改来自Apache里的启动shell(参看一下自启动的标准),也可以不用修改,直接如下也成,内容如下:

1)保存为/etc/init.d/dns
脚本执行权限添加:
2)chmod -R a+x /etc/init.d/dns  //env: /etc/init.d/dns: 权限不够 ,必须给加上。
3)把脚本拷贝至/etc/init.d/目录下,执行命令:
ln -s /etc/init.d/dns /etc/rc.d/rc3.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc4.d/S61dns
ln -s /etc/init.d/dns /etc/rc.d/rc5.d/S61dns
再执行:
chkconfig --add dns  //解释:相当于Windows下的自动启动服务,特别要注意:chkconfig –add dns的时候,出现dns服务不支持chkconfig。
如果想让服务支持chkconfig,必须定义服务的启动级,启动优先级,关闭优先级,还有描述,如上,必须得加上描述等。
chkconfig --levels dns345 on //也成
开机启动设置完毕:
service dns start
-----------------------------------------------

下次一开机也就会运行这个脚本,以启动自己定义的Dns服务器。

  1. reboot   


启动后,查看是否自己就启动了呢?如下:

  1. root@192.168.225.128:~# ps aux|grep named   
  2. root      1272  0.0  1.1  10232  5680 ?        S    05:20   0:00 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf   
  3. root      2039  0.0  0.1   5956   756 pts/0    S+   05:22   0:00 grep named   


果然,又启动起来了,大功告成,整完收工。
Dns服务器从安装到调试配置并测试完成,Eof。Write and Opt  By:jackxiang 2012/06/17 20:30:00

后来,我自己配置了一个新的域名:naimanqi.com.cn ,我的Linux机器IP是:192.168.1.105
修改配置文件:
1)共用如下:

  1. options {   
  2.         Directory "/usr/local/named";   
  3.         Pid-file "named.pid";   
  4.         Allow-query { any ;};   
  5.         Dump-file "/usr/local/named/data/cache_dump.db";   
  6.         Statistics-file "/usr/local/named/data/named_stats.txt";   
  7. };   
  8. 2)添加如下两个正向解析和反向解析的配置文件:   

  1. vi  /usr/local/named/etc/named.conf   
  2.   
  3. zone "naimanqi.com.cn" {   
  4.       type master;   
  5.       file "naimanqi.com.cn.zone";   
  6. };zone "1.168.192.in-add.arpa" IN {   
  7.         type master;   
  8.          file "1.168.192.in-add.arpa";   
  9. };   

3)反向解析文件:

  1. vi /usr/local/named/1.168.192.in-add.arpa   
  2. $TTL    86400   
  3. @       IN      SOA     naimanqi.com.cn.  root.naimanqi.com.cn.  (   
  4.                                       1997022700 ; Serial   
  5.                                       28800      ; Refresh   
  6.                                       14400      ; Retry   
  7.                                       3600000    ; Expire   
  8.                                       86400 )    ; Minimum   
  9. @         IN      NS      naimanqi.com.cn.   
  10. 128       IN      PTR    www.naimanqi.com.cn.   
  11. 128       IN      PTR    admin.naimanqi.com.cn.   


4)正向解析的文件:

  1. vi  /usr/local/named/naimanqi.com.cn.zone   
  2.   
  3. $TTL 86400   
  4. @        IN        SOA        naimanqi.com.cn.  root.localhost (   
  5.                         2 ; serial   
  6.                         28800 ; refresh   
  7.                         7200 ; retry   
  8.                         604800 ; expire           
  9.                         86400 ; ttl   
  10.                         )   
  11.         IN      NS      naimanqi.com.com.   
  12.   
  13.          IN      A       192.168.1.105   
  14. www      IN      A       192.168.1.105   
  15. admin     IN      A      192.168.1.105   


注意这一行:          IN      A       192.168.1.105
这个目的是把浏览器访问:naimanqi.com.cn这个域名也给解析到IP: 192.168.1.105上来,跟在后面的www  IN      A       192.168.1.105 这个是对www解析的,其实它是一个二级域名和admin 这种二级域名是一个意思:admin     IN      A      192.168.1.105 。。。EOF。

最后,可以这样玩这个DNS,这个CentOs6.3的Linux 不是建立在这个NAT下的嘛,后修改为Bridge(桥连),这样后,反正是在一个网段内(路由器下),把自己外网的这台Windows下的机器的DNS由192.168.1.1修改为:192.168.1.105,这样既可以调试刚才配置的内部DNS进行调试,也可 以访问外网,为什么呢?是因为:

  1. C:\Documents and Settings\Administrator>nslookup justwinit.cn   
  2. DNS request timed out.   
  3.     timeout was 2 seconds.   
  4. *** Can't find server name for address 192.168.1.105: Timed out   
  5. *** Default servers are not available   
  6. Server:  UnKnown   
  7. Address:  192.168.1.105   
  8.   
  9. Non-authoritative answer:   
  10. Name:    justwinit.cn   
  11. Address:  72.46.128.86   


是因,内部DNS没有找到那个地址后,它自动转给上一级DNS去了,后得到那个外部网站的IP地址了。但修改为NAT后,好像启动Centos里的DNS后,再在Windows上修改IP为桥连后的IP好像DNS解析不了,在Linux自己修改 /etc/resolve.conf后是可以的,所以,建议用桥连方式来开发,少用NAT方式,这样可以在一个路由器下的电脑都可以配置上这个Dns来访问该网站和开发网部(samba),很是方便,而DNS设置后,如果没有这个网站在内网,它便会访问外网,这种机制也是很好的

抱歉!评论已关闭.