在CentOS6.2下安装DNS服务软件Bind并快速配置简单实例
生活随笔
收集整理的這篇文章主要介紹了
在CentOS6.2下安装DNS服务软件Bind并快速配置简单实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[實踐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)
view plaincopy to clipboardprint?shell?$>?../sbin/rndc-confgen?-r?random?>?rndc.key ??
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的反解,剛好倒過來。
view plaincopy to clipboardprint?key?"rndc-key"?{ ?? ??algorithm?hmac-md5; ?? ??secret?"SnK8Ph1zCAnnykZ07qt+TQ=="; ?? }; ?? ?? controls?{ ?? ??inet?127.0.0.1?port?953 ?? ????allow?{?127.0.0.1;?}?keys?{?"rndc-key";?}; ?? }; ?? ?? options?{ ?? ??Directory?"/usr/local/named"; ?? ??Pid-file?"named.pid"; ?? ??Allow-query?{?any?;}; ?? ??Dump-file?"/usr/local/named/data/cache_dump.db"; ?? ??Statistics-file?"/usr/local/named/data/named_stats.txt"; ?? }; ?? Zone?"localhost"?in?{ ?? ??Type?master; ?? ??File?"localhost.zone"; ?? }; ?? Zone?"0.0.127.in-addr.arpa"?in?{ ?? ??Type?master; ?? ??File?"localhost.rev"; ?? }; ?? ?? zone?"51test.com"?{ ?? ??????type?master; ?? ??????file?"51test.com.zone"; ?? };zone?"225.168.192.in-add.arpa"?IN?{ ?? ????????type?master; ?? ?????????file?"225.168.192.in-add.arpa"; ?? }; ?? ??
key "rndc-key" {algorithm hmac-md5;secret "SnK8Ph1zCAnnykZ07qt+TQ==";
};controls {inet 127.0.0.1 port 953allow { 127.0.0.1; } keys { "rndc-key"; };
};options {Directory "/usr/local/named";Pid-file "named.pid";Allow-query { any ;};Dump-file "/usr/local/named/data/cache_dump.db";Statistics-file "/usr/local/named/data/named_stats.txt";
};
Zone "localhost" in {Type master;File "localhost.zone";
};
Zone "0.0.127.in-addr.arpa" in {Type master;File "localhost.rev";
};zone "51test.com" {type master;file "51test.com.zone";
};zone "225.168.192.in-add.arpa" IN {type master;file "225.168.192.in-add.arpa";
};
退出,保存。
創建并編輯 localhost.zone 文件
vi??/usr/local/named/localhost.zone
寫入以下內容:
$TTL?3600 ?? $ORIGIN?127.0.0.1. ?? @??1D?IN?SOA?localhost.?root.localhost.?( ?? ?????????????????????42?????????; ?? ?????????????????????3H?????????; ?? ?????????????????????15M????????; ?? ?????????????????????1W?????????; ?? ?????????????????????3600); ?? ???1D?IN?NS??127.0.0.1 ?? ???1D?IN?A???127.0.0.1 ?? ??
$TTL 3600
$ORIGIN 127.0.0.1.
@??1D IN SOA localhost. root.localhost. (42???????? ;3H???????? ;15M????????;1W???????? ;3600);1D IN NS??127.0.0.11D IN A?? 127.0.0.1
創建并編輯 localhost.rev 文件
# vi /usr/local/named/localhost.rev
$TTL?3600 ?? @??IN?SOA??localhost.??root.localhost.?( ?? ??????????????1;?serial ?? ??????????????3600;?refresh?every?hour ?? ??????????????900;??retry?every?15?minutes ?? ??????????????3600000;?expire?1000?hours ?? ??????????????3600);?minimun?1?hour ?? ???IN?NS?localhost. ?? 1??IN?PTR?localhost. ?? ??
$TTL 3600
@??IN SOA??localhost.??root.localhost. (1; serial3600; refresh every hour900;??retry every 15 minutes3600000; expire 1000 hours3600); minimun 1 hourIN NS localhost.
1??IN PTR localhost.
因前面在,51test.com這個是在其他網頁上抄過來的簡單示例,于是也就順便把文件也貼上:
vi??/usr/local/named/51test.com.zone
$TTL?86400 ?? @????????IN????????SOA????????www.51test.com.??root.localhost?( ?? ????????????????????????2?;?serial ?? ????????????????????????28800?;?refresh ?? ????????????????????????7200?;?retry ?? ????????????????????????604800?;?expire ?? ????????????????????????86400?;?ttl ?? ????????????????????????) ?? ????????IN??????NS??????www.51test.com. ?? ?? www??????IN??????A???????192.168.225.128 ?? admin?????IN??????A??????192.168.225.128 ?? ??
$TTL 86400
@????????IN????????SOA????????www.51test.com.??root.localhost (2 ; serial28800 ; refresh7200 ; retry604800 ; expire86400 ; ttl)IN??????NS??????www.51test.com.www??????IN??????A?????? 192.168.225.128
admin???? IN??????A??????192.168.225.128
再不是51test.com的反解配置文件:
vi /usr/local/named/225.168.192.in-add.arpa
$TTL????86400 ?? @???????IN??????SOA?????51test.com.??root.51test.com.??( ?? ??????????????????????????????????????1997022700?;?Serial ?? ??????????????????????????????????????28800??????;?Refresh ?? ??????????????????????????????????????14400??????;?Retry ?? ??????????????????????????????????????3600000????;?Expire ?? ??????????????????????????????????????86400?)????;?Minimum ?? @?????????IN??????NS??????51test.com. ?? 128???????IN??????PTR????www.51test.com. ?? 128???????IN??????PTR????admin.51test.com. ?? ??
$TTL????86400
@?????? IN??????SOA???? 51test.com.??root.51test.com.??(1997022700 ; Serial28800??????; Refresh14400??????; Retry3600000????; Expire86400 )????; Minimum
@???????? IN??????NS??????51test.com.
128?????? IN??????PTR????www.51test.com.
128?????? IN??????PTR????admin.51test.com.
配置注意事項:
配置文件中的 "@" 符號前不能有任何空白字符
配置文件中的 "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
view plaincopy to clipboardprint?more?named.root ?? ;?This?file?holds?the?information?on?root?name?servers?needed?to ?? ;?initialize?cache?of?Internet?domain?name?servers ?? ;?(e.g.?reference?this?file?in?the?"cache?.?<file>" ?? ;?configuration?file?of?BIND?domain?name?servers). ?? ; ?? ;?This?file?is?made?available?by?InterNIC ?? ;?under?anonymous?FTP?as ?? ;?file?/domain/named.root ?? ;?on?server?FTP.INTERNIC.NET ?? ; ?? ;?last?update:?Nov?5,?2002 ?? ;?related?version?of?root?zone:?2002110501 ?? ; ?? ; ?? ;?formerly?NS.INTERNIC.NET ?? ; ?? .?3600000?IN?NS?A.ROOT-SERVERS.NET. ?? A.ROOT-SERVERS.NET.?3600000?A?198.41.0.4 ?? ; ?? ;?formerly?NS1.ISI.EDU ?? ; ?? .?3600000?NS?B.ROOT-SERVERS.NET. ?? B.ROOT-SERVERS.NET.?3600000?A?128.9.0.107 ?? ; ?? ;?formerly?C.PSI.NET ?? ; ?? .?3600000?NS?C.ROOT-SERVERS.NET. ?? C.ROOT-SERVERS.NET.?3600000?A?192.33.4.12 ?? ; ?? ;?formerly?TERP.UMD.EDU ?? ; ?? .?3600000?NS?D.ROOT-SERVERS.NET. ?? D.ROOT-SERVERS.NET.?3600000?A?128.8.10.90 ?? ; ?? ;?formerly?NS.NASA.GOV ?? ; ?? .?3600000?NS?E.ROOT-SERVERS.NET. ?? E.ROOT-SERVERS.NET.?3600000?A?192.203.230.10 ?? ; ?? ;?formerly?NS.ISC.ORG ?? ; ?? .?3600000?NS?F.ROOT-SERVERS.NET. ?? F.ROOT-SERVERS.NET.?3600000?A?192.5.5.241 ?? ; ?? ;?formerly?NS.NIC.DDN.MIL ?? ; ?? .?3600000?NS?G.ROOT-SERVERS.NET. ?? G.ROOT-SERVERS.NET.?3600000?A?192.112.36.4 ?? ; ?? ;?formerly?AOS.ARL.ARMY.MIL ?? ; ?? .?3600000?NS?H.ROOT-SERVERS.NET. ?? H.ROOT-SERVERS.NET.?3600000?A?128.63.2.53 ?? ; ?? ;?formerly?NIC.NORDU.NET ?? ; ?? .?3600000?NS?I.ROOT-SERVERS.NET. ?? I.ROOT-SERVERS.NET.?3600000?A?192.36.148.17 ?? ; ?? ;?operated?by?VeriSign,?Inc. ?? ; ?? .?3600000?NS?J.ROOT-SERVERS.NET. ?? J.ROOT-SERVERS.NET.?3600000?A?192.58.128.30 ?? ; ?? ;?housed?in?LINX,?operated?by?RIPE?NCC ?? ; ?? .?3600000?NS?K.ROOT-SERVERS.NET. ?? K.ROOT-SERVERS.NET.?3600000?A?193.0.14.129 ?? ; ?? ;?operated?by?IANA ?? ; ?? .?3600000?NS?L.ROOT-SERVERS.NET. ?? L.ROOT-SERVERS.NET.?3600000?A?198.32.64.12 ?? ; ?? ;?housed?in?Japan,?operated?by?WIDE ?? ; ?? .?3600000?NS?M.ROOT-SERVERS.NET. ?? M.ROOT-SERVERS.NET.?3600000?A?202.12.27.33 ?? ;?End?of?File ?? ??
more named.root
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . <file>"
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC
; under anonymous FTP as
; file /domain/named.root
; on server FTP.INTERNIC.NET
;
; last update: Nov 5, 2002
; related version of root zone: 2002110501
;
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; operated by VeriSign, Inc.
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
;
; operated by IANA
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File
五:運行Bind程序,如下方式加載配置文件啟動,加上調試信息參數:
/usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
如果運行結果最后一行顯示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 添加到啟動項,隨操作系統一起啟動即可:
root@192.168.225.128:/usr/local/named# chkconfig --list named named?????????? 0:關閉??1:關閉??2:關閉??3:關閉??4:關閉??5:關閉??6:關閉 root@192.168.225.128:/usr/local/named# chkconfig --level 345 named on root@192.168.225.128:/usr/local/named# chkconfig --list named???????? named?????????? 0:關閉??1:關閉??2:關閉??3:啟用??4:啟用??5:啟用??6:關閉
但是,我們現在是源碼的安裝,So,得這樣子喔。
修改來自Apache里的啟動shell(參看一下自啟動的標準),也可以不用修改,直接如下也成,內容如下:
#!/bin/bash?? #chkconfig:345 61 61?? #description: dns start shell?? echo "Starting DNS daemon..." pkill -9 named?? ulimit -SHn 51200?? nohup??/usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf > /dev/null 2>&1 &??
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
-----------------------------------------------
;特別要注意:chkconfig –add dns的時候,出現dns服務不支持chkconfig。 chkconfig --add dns service dns start Starting DNS daemon... ps aux|grep named root???? 19441??0.0??1.1??10364??5872 pts/2????S????04:29?? 0:00 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
下次一開機也就會運行這個腳本,以啟動自己定義的Dns服務器。
reboot ??
reboot
啟動后,查看是否自己就啟動了呢?如下:
root@192.168.225.128:~#?ps?aux|grep?named ?? 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 ?? root??????2039??0.0??0.1???5956???756?pts/0????S+???05:22???0:00?grep?named ??
root@192.168.225.128:~# ps aux|grep named
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
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)共用如下:
view plaincopy to clipboardprint?options?{ ?? ????????Directory?"/usr/local/named"; ?? ????????Pid-file?"named.pid"; ?? ????????Allow-query?{?any?;}; ?? ????????Dump-file?"/usr/local/named/data/cache_dump.db"; ?? ????????Statistics-file?"/usr/local/named/data/named_stats.txt"; ?? }; ?? 2)添加如下兩個正向解析和反向解析的配置文件: ??
options {Directory "/usr/local/named";Pid-file "named.pid";Allow-query { any ;};Dump-file "/usr/local/named/data/cache_dump.db";Statistics-file "/usr/local/named/data/named_stats.txt";
};
2)添加如下兩個正向解析和反向解析的配置文件:
view plaincopy to clipboardprint?vi??/usr/local/named/etc/named.conf ?? ?? zone?"naimanqi.com.cn"?{ ?? ??????type?master; ?? ??????file?"naimanqi.com.cn.zone"; ?? };zone?"1.168.192.in-add.arpa"?IN?{ ?? ????????type?master; ?? ?????????file?"1.168.192.in-add.arpa"; ?? }; ??
vi??/usr/local/named/etc/named.confzone "naimanqi.com.cn" {type master;file "naimanqi.com.cn.zone";
};zone "1.168.192.in-add.arpa" IN {type master;file "1.168.192.in-add.arpa";
};
3)反向解析文件:
view plaincopy to clipboardprint?vi?/usr/local/named/1.168.192.in-add.arpa ?? $TTL????86400 ?? @???????IN??????SOA?????naimanqi.com.cn.??root.naimanqi.com.cn.??( ?? ??????????????????????????????????????1997022700?;?Serial ?? ??????????????????????????????????????28800??????;?Refresh ?? ??????????????????????????????????????14400??????;?Retry ?? ??????????????????????????????????????3600000????;?Expire ?? ??????????????????????????????????????86400?)????;?Minimum ?? @?????????IN??????NS??????naimanqi.com.cn. ?? 128???????IN??????PTR????www.naimanqi.com.cn. ?? 128???????IN??????PTR????admin.naimanqi.com.cn. ??
vi /usr/local/named/1.168.192.in-add.arpa
$TTL????86400
@?????? IN??????SOA???? naimanqi.com.cn.??root.naimanqi.com.cn.??(1997022700 ; Serial28800??????; Refresh14400??????; Retry3600000????; Expire86400 )????; Minimum
@???????? IN??????NS??????naimanqi.com.cn.
128?????? IN??????PTR????www.naimanqi.com.cn.
128?????? IN??????PTR????admin.naimanqi.com.cn.
4)正向解析的文件:
view plaincopy to clipboardprint?vi??/usr/local/named/naimanqi.com.cn.zone ?? ?? $TTL?86400 ?? @????????IN????????SOA????????naimanqi.com.cn.??root.localhost?( ?? ????????????????????????2?;?serial ?? ????????????????????????28800?;?refresh ?? ????????????????????????7200?;?retry ?? ????????????????????????604800?;?expire???????? ?? ????????????????????????86400?;?ttl ?? ????????????????????????) ?? ????????IN??????NS??????naimanqi.com.com. ?? ?? ?????????IN??????A???????192.168.1.105 ?? www??????IN??????A???????192.168.1.105 ?? admin?????IN??????A??????192.168.1.105 ??
vi??/usr/local/named/naimanqi.com.cn.zone$TTL 86400
@????????IN????????SOA????????naimanqi.com.cn.??root.localhost (2 ; serial28800 ; refresh7200 ; retry604800 ; expire????????86400 ; ttl)IN??????NS??????naimanqi.com.com.IN??????A?????? 192.168.1.105
www??????IN??????A?????? 192.168.1.105
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進行調試,也可 以訪問外網,為什么呢?是因為:
view plaincopy to clipboardprint?C:\Documents?and?Settings\Administrator>nslookup?justwinit.cn ?? DNS?request?timed?out. ?? ????timeout?was?2?seconds. ?? ***?Can't?find?server?name?for?address?192.168.1.105:?Timed?out ?? ***?Default?servers?are?not?available ?? Server:??UnKnown ?? Address:??192.168.1.105 ?? ?? Non-authoritative?answer: ?? Name:????justwinit.cn ?? Address:??72.46.128.86 ??
C:\Documents and Settings\Administrator>nslookup justwinit.cn
DNS request timed out.timeout was 2 seconds.
*** Can't find server name for address 192.168.1.105: Timed out
*** Default servers are not available
Server:??UnKnown
Address:??192.168.1.105Non-authoritative answer:
Name:????justwinit.cn
Address:??72.46.128.86
是因,內部DNS沒有找到那個地址后,它自動轉給上一級DNS去了,后得到那個外部網站的IP地址了。但修改為NAT后,好像啟動Centos里的DNS后,再在Windows上修改IP為橋連后的IP好像DNS解析不了,在Linux自己修改 /etc/resolve.conf后是可以的,所以,建議用橋連方式來開發,少用NAT方式,這樣可以在一個路由器下的電腦都可以配置上這個Dns來訪問該網站和開發網部(samba),很是方便,而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)
view plaincopy to clipboardprint?
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的反解,剛好倒過來。
view plaincopy to clipboardprint?
退出,保存。
創建并編輯 localhost.zone 文件
vi??/usr/local/named/localhost.zone
寫入以下內容:
創建并編輯 localhost.rev 文件
# vi /usr/local/named/localhost.rev
因前面在,51test.com這個是在其他網頁上抄過來的簡單示例,于是也就順便把文件也貼上:
vi??/usr/local/named/51test.com.zone
再不是51test.com的反解配置文件:
vi /usr/local/named/225.168.192.in-add.arpa
配置注意事項:
配置文件中的 "@" 符號前不能有任何空白字符
配置文件中的 "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
view plaincopy to clipboardprint?
五:運行Bind程序,如下方式加載配置文件啟動,加上調試信息參數:
/usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
如果運行結果最后一行顯示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 添加到啟動項,隨操作系統一起啟動即可:
root@192.168.225.128:/usr/local/named# chkconfig --list named named?????????? 0:關閉??1:關閉??2:關閉??3:關閉??4:關閉??5:關閉??6:關閉 root@192.168.225.128:/usr/local/named# chkconfig --level 345 named on root@192.168.225.128:/usr/local/named# chkconfig --list named???????? named?????????? 0:關閉??1:關閉??2:關閉??3:啟用??4:啟用??5:啟用??6:關閉
但是,我們現在是源碼的安裝,So,得這樣子喔。
修改來自Apache里的啟動shell(參看一下自啟動的標準),也可以不用修改,直接如下也成,內容如下:
#!/bin/bash?? #chkconfig:345 61 61?? #description: dns start shell?? echo "Starting DNS daemon..." pkill -9 named?? ulimit -SHn 51200?? nohup??/usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf > /dev/null 2>&1 &??
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
-----------------------------------------------
;特別要注意:chkconfig –add dns的時候,出現dns服務不支持chkconfig。 chkconfig --add dns service dns start Starting DNS daemon... ps aux|grep named root???? 19441??0.0??1.1??10364??5872 pts/2????S????04:29?? 0:00 /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
下次一開機也就會運行這個腳本,以啟動自己定義的Dns服務器。
啟動后,查看是否自己就啟動了呢?如下:
果然,又啟動起來了,大功告成,整完收工。
Dns服務器從安裝到調試配置并測試完成,Eof。Write and Opt??By:jackxiang 2012/06/17 20:30:00
后來,我自己配置了一個新的域名:naimanqi.com.cn ,我的Linux機器IP是:192.168.1.105
修改配置文件:
1)共用如下:
view plaincopy to clipboardprint?
view plaincopy to clipboardprint?
3)反向解析文件:
view plaincopy to clipboardprint?
4)正向解析的文件:
view plaincopy to clipboardprint?
注意這一行:??????????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進行調試,也可 以訪問外網,為什么呢?是因為:
view plaincopy to clipboardprint?
是因,內部DNS沒有找到那個地址后,它自動轉給上一級DNS去了,后得到那個外部網站的IP地址了。但修改為NAT后,好像啟動Centos里的DNS后,再在Windows上修改IP為橋連后的IP好像DNS解析不了,在Linux自己修改 /etc/resolve.conf后是可以的,所以,建議用橋連方式來開發,少用NAT方式,這樣可以在一個路由器下的電腦都可以配置上這個Dns來訪問該網站和開發網部(samba),很是方便,而DNS設置后,如果沒有這個網站在內網,它便會訪問外網,這種機制也是很好的
總結
以上是生活随笔為你收集整理的在CentOS6.2下安装DNS服务软件Bind并快速配置简单实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git(9)-diff
- 下一篇: (五)深入浅出TCPIP之TCP流量控制