打算在公司内部 安装一个 dns 来使用。因为公司内部开发服务器也挺多的。现在都是用IP 。 但我想有个域名好记一点。
打算在网关和一台开发服务器上做 master 和 slave
ip分别为:
网关: 192.168.1.243
开发服务器: 192.168.1.241
我系统是 FreeBsd 的。 那当然是用 ports 安装啦。。哇咔咔
我们先做 master:
# cd /usr/ports/dns/bind94
# make install clean
装完了 记得 修改 /etc/rc.conf 文件 用来启动
# vi /etc/rc.conf
named_enable="YES"
先看下,我的BIND 的文件目录:
files# ls
dynamic master named.127.0.0 named.192.168.1 named.365.com named.conf named.localhost named.root rndc.key slave
好了 接下来 就要开始 配置 bind 正反解信息了。具体如何设置正反解这个不多说了
1 。 配置 named.conf 文件
options { // Relative to the chroot directory, if any directory "/etc/namedb"; pid-file "/var/run/named/pid"; dump-file "/var/dump/named_dump.db"; statistics-file "/var/stats/named.stats"; allow-query { any; }; }; zone "." { type hint; file "named.root"; }; zone "localhost" { type master; file "named.localhost"; }; zone "0.0.127.in-addr.arpa" { type master; file "named.127.0.0"; }; zone "365.com" { type master; file "named.365.com"; allow-transfer { 192.168.1.241; }; //notify yes; }; zone "1.168.192.in-addr.arpa" { type master; file "named.192.168.1"; allow-transfer { 192.168.1.241; }; //notify yes; }; # Use with the following in named.conf, adjusting the allow list as needed: key "rndc-key" { algorithm hmac-md5; secret "LdNFz6l1j4Oyhd2lwk1/aA=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; # End of named.conf
2 。 然后开始设置 我想要的域名 365.com 的 正反zone。 文件名: named.365.com
$TTL 600 @ IN SOA ns.365.com huithe ( 12 28800 14400 720000 86400 ) @ IN NS ns.365.com. @ IN NS ns2.365.com. ns IN A 192.168.1.243 ns2 IN A 192.168.1.241 www IN A 192.168.1.241 xxoo IN CNAME www jjyy IN CNAME www luosuo IN CNAME www test IN CNAME www bb IN A 192.168.1.244 cc IN A 192.168.1.244 jj IN A 192.168.1.244 yehuiming IN A 192.168.1.244 www2 IN CNAME www
反解的。 其实不要反解释的也一样是可以运行的:
$TTL 600 @ IN SOA ns.365.com huithe.ns.365.com. ( 2011030802 28800 14400 720000 86400 ) @ IN NS ns.365.com. @ IN NS ns2.365.com. 243 IN PTR ns.365.com. 241 IN PTR ns2.365.com.
就这样。就可以运行了。
# /etc/rc.d/named start
然后看成功与否 记得去看 /var/log/message 日志。
#tail -n 30 /var/log/message
Mar 8 17:56:31 files named[31213]: starting BIND 9.4.3-P2 -t /var/named -u bind
Mar 8 17:56:31 files named[31213]: command channel listening on 127.0.0.1#953
Mar 8 17:56:31 files named[31213]: running
看到这个。就是成功了。。。。
好了现在开始做 slave:
首先也得安装 bind 啦。。装完以后,我直接就拷贝 master 的配置文件过去修改就行了。不过有两个文件是不要弄过去的。一个是 named.365.com 一个是 named.192.168.1 因为这两个文件是 master 同步 给 slave 的 而不需要 slave 有这两个文件存在。
所以配置 slave 最主要的就只是 named.conf 这个总配置文件
options { // Relative to the chroot directory, if any directory "/etc/namedb"; pid-file "/var/run/named/pid"; dump-file "/var/dump/named_dump.db"; statistics-file "/var/stats/named.stats"; allow-query { any; }; }; zone "." { type hint; file "named.root"; }; zone "localhost" { type master; file "named.localhost"; }; zone "0.0.127.in-addr.arpa" { type master; file "named.127.0.0"; }; zone "365.com" { type slave; file "named.365.com"; masters { 192.168.1.243; }; }; zone "1.168.192.in-addr.arpa" { type slave; file "named.192.168.1"; masters { 192.168.1.243; }; };
够简单吧。呵呵 好了 然后就可以启动了。
启动后 如果成功你可以看到 named.365.com 文件和 named.192.168.1 反解文件 自动就从 master 同步过来了。
然后我们根据自己设的域名 测试下 看是否能解释:
# dig @127.0.0.1 www.365.com
beihai365test# dig @127.0.0.1 www.365.com ; <<>> DiG 9.4.2 <<>> @127.0.0.1 www.365.com ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28909 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.365.com. IN A ;; ANSWER SECTION: www.365.com. 600 IN A 192.168.1.241 ;; AUTHORITY SECTION: 365.com. 600 IN NS ns2.365.com. 365.com. 600 IN NS ns.365.com. ;; ADDITIONAL SECTION: ns.365.com. 600 IN A 192.168.1.243 ns2.365.com. 600 IN A 192.168.1.241 ;; Query time: 14 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Mar 9 10:10:37 2011 ;; MSG SIZE rcvd: 112
能解释那就OK了。。
然后在 master 中添加了新 zone 或者是 二级域名。 只要修改下 serial 号 变大就行了。 然后 我使用 重启bind 或者是
#rndc reload 那么 从就自动更新了... 是不是很方便
在这次的部署中遇到两个问题:
1 。 chroot 导致的文件目录权限问题。查看 /var/log/message 显示:
Mar 8 17:36:58 files named[30498]: the working directory is not writable
解决办法: vi /etc/mtree/BIND.chroot.dist
把
/set type=dir uname=root gname=wheel mode=0755
修改成
/set type=dir uname=bind gname=wheel mode=0755
重启就行了。
2 。 遇到了 master 无法更新 slave 和 slave 重启也无法更新 master 。 用tcpdump 抓包发现。 当 master 重启的时候 根本没有向 slave 发送更新的 包。 百思不得其解。 后来突然醒悟。原来是自己忘记了
master 只会 更新 zone 中 设置的 dns 服务器,也就是 NS 记录的IP 。 而我竟然忘记添加 slave 的 NS 记录了。导致 master 以为只有自己一台 dns 。。所以根本没有发送更新包 给 slave ..最后加上就一切正常了:
@ IN NS ns.365.com.
@ IN NS ns2.365.com.
ns IN A 192.168.1.243
ns2 IN A 192.168.1.241
。。。。。。。。。。。。。
3. 在配置 rndc 的时候 出现:
rndc: connection to remote host closed
这个问题是因为 rndc.conf 里面的 密匙和 rndc.key中的secret不一致引起 。 修改之后 就OK了
完了~~ 给自己记录下。。。