当前位置:  技术问答>linux和unix

怎么在FreeBSD上作个DNS服务器?

    来源: 互联网  发布时间:2015-08-12

    本文导语:  哪位高手能讲讲,多谢! | A simple chroot of bind9.2.3 on FreeBSD5.x  http://www.chinaunix.net 作者:ports  发表于:2004-05-30 09:01:07  FreeBSD5.2.1-RELEASE-p8  bind9.2.3 installed by port_replace_base  Notes: It is...

哪位高手能讲讲,多谢!

|
A simple chroot of bind9.2.3 on FreeBSD5.x 
http://www.chinaunix.net 作者:ports  发表于:2004-05-30 09:01:07 

FreeBSD5.2.1-RELEASE-p8 
bind9.2.3 installed by port_replace_base 

Notes: It is just a install memo of me but not a text for named.  

[code:1:d452d51f00]  

$ man named 

...... 

OPTIONS 

       -t directory 
              chroot() to directory after processing the  command  line  argu- 
              ments, but before reading the configuration file. 

              Warning:  This  option should be used in conjunction with the -u 
              option, as chrooting a process running as root  doesn't  enhance 
              security  on  most systems; the way chroot() is defined allows a 
              process with root privileges to escape a chroot jail. 
...... 

# ps -ax|grep named 
 2611  ??  Ss     0:00.79 /usr/sbin/named -c /etc/namedb/named.conf -u bind 

[/code:1:d452d51f00] 

the original bind's working directory in FreeBSD5.x 

[code:1:d452d51f00] 

working directory: 

/etc/namedb 
/var/run/named 
/etc 
/dev 

files options of the original named.conf: 

...... 

include "/etc/namedb/rndc.key"; 

controls { 
         inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; }; 
         inet ::1 allow { localhost; } keys { "rndc-key"; }; 
}; 

options { 
         directory "/etc/namedb"; 
         pid-file "/var/run/named/pid"; 
         version "Windows 95"; 
recursion no; 
         auth-nxdomain yes; 
         listen-on-v6 { 
                any; 
         }; 
         dump-file "s/named_dump.db"; 
}; 

logging { 
        channel bind_log { 
                file "/var/log/named/named.log"; 
                severity info; 
         }; 
        category xfer-out { 
                bind_log; 
         }; 
        category default { 
                default_syslog; 
         }; 
}; 

zone "." { 
         type hint; 
         file "named.root"; 
}; 

...... 

[/code:1:d452d51f00] 

Then, Let's run a named with "option -t". 

Step 1: check what is chroot's named process need. 

[code:1:d452d51f00] 

+/var/named($chroot) 
 +---dev/ 
 |      +null 
 |      +random 
 | 
 +---etc/ 
 |      +localtime 
 |      +namedb/ 
 |             +named.conf 
 |             +rndc.conf 
 |             +rndc.key 
 |             +*.zone 
 |             +*.rev 
 |             +named.root 
 |             +s/ 
 |   
 +var/ 
     +log/ 
     |   +named/named.log 
     | 
     +run/ 
         +named/ 
               +pid 

[/code:1:d452d51f00] 

Step 3: Make new chroot directory for bind9 

[code:1:d452d51f00] 

# cd /var/ && mkdir named && cd /var/named 
# mkdir -p dev etc/namedb dev var/run/named var/log/named 
# cd dev && mknod null c 1 3 && mknod random c 249 0 && chmod 666 * 
# cd ../etc && cp /etc/localtime .  
# cd namedb ; cp -Rp /etc/namedb/* . 
# cd ../../var ; chown -R bind:bind * 

[/code:1:d452d51f00] 

Step 4: restart named service. 

[code:1:d452d51f00] 

# kill `cat /var/run/named/pid` 
# /usr/sbin/named -t /var/named -c /etc/namedb/named.conf -u bind 
# ps -aux | grep named 
  bind   2858  1.8  1.6  4168 2900  ??  Ss    9:36AM   0:00.13 /usr/sbin/named -t /var/named -c /etc/namedb/named.conf -u bind 

# tail /var/log/messages 
  May 30 09:36:26 tech named[2858]: starting BIND 9.2.3 -t /var/named -c /etc/namedb/named.conf -u bind 
  May 30 09:36:26 tech named[2858]: command channel listening on 127.0.0.1#953 
  May 30 09:36:26 tech named[2858]: command channel listening on ::1#953 

# /usr/sbin/rndc status 
  number of zones: 12 
  debug level: 0 
  xfers running: 0 
  xfers deferred: 0 
  soa queries in progress: 0 
  query logging is OFF 
  server is up and running 

* It is OK ! 

[/code:1:d452d51f00] 

Step 5: edit the named service option in /etc/rc.conf 

[code:1:d452d51f00] 

# vi /etc/rc.conf 
..... 
named_enable="YES" 
named_program="/usr/sbin/named" 
named_flags="-t /var/named -c /etc/namedb/named.conf -u bind" 
..... 

[/code:1:d452d51f00]

|
在FREEBSD 5.2上安装配置DNS SERVER(BIND 9)

樊礼(梦飞) 

FREEBSD 5.2出来几个月了,一直想系统全面的学习一下它的新功能,但最近工作实在太忙,没有办法全面的学习。今天下午快下班时忙里偷闲,花了一个小时从新安装了一遍DNS SERVER ( BIND 9 ),怕自己以后忘记了,俗话说好记性不如烂笔头嘛,就记在自己的BLOG里面了,也在CNFUG里面发表了。

0、准备工作:
当然要安装FREEBSD,最好更新ports,如果不知道怎么更新,请参考我以前写和FREEBSD 升级优化大全,^_^ 

1、安装BIND9:

# cd /usr/ports/dns/bind9
# make install
运行安装程序,等硬盘响一阵时间后,系统就安装好了,方便吧,*^_^*。在安装完成后,BIND9会提醒你:"如果你使用FREEBSD 4.X。请浏览 http://people.freebsd.org/~dougb/randomness.html 得到更多的信息,如果是FREEBSD 5.X则不需要执行这一步,如果你想要BIND 9运行在chroot环境,必须把/dev/random设备chroot",它还提醒我们要运行" rndc-confgen -a "来生成一个正确的配置文件--随机密钥。系统是以/usr/local为根目录的,所以BIND9的命令文件都放到/usr/local/sbin目录里面和/usr/local/bin目录里面。系统在安装完成BIND 9后,会自动建立uid为53的" bind "用户和gid为53的" bind "群组,以供BIND服务用

我喜欢FREEBSD的PORTS的强大功能,什么东西,只要make install就行啦,呵呵… LINUX还要满世界找RPM包或者源程序,我不喜欢

PS:我个人认为,只要不是对效率要求十分高的环境下,我尽量不采用源代码编译,节约时间。如果我需要看它详细的编译命令,我可以通过读Makefile来获取信息!

安装好的BIND9,是不能直接运行的,还要让系统根据我们的需要配置一下

配置BIND9: 

BIND比较重要的配置文件有:named.conf,named.root,rndc.conf,还有/etc/named目录。因为默认的安装把named.conf,localhost.rev等内容安装在此目录下了(如果我记错了,麻烦大家更正一下),而rndc.conf则被放在了/usr/local/etc目录里面,名字叫rndc.conf.sample

mv /etc/named/named.conf /usr/local/etc/
cd /usr/local/etc
vi named.conf 
options {
directory "/etc/namedb"; // 工作目录
pid-file "/var/run/named/pid"; // 放pid文件到工作目录
}; 
......

请大家注意,这文件里面很多垃圾,自己要小心判断,不要编辑错误了,要不然你是无法正常运行BIND 9 的。最后面那一段有/* 和 */注释的部份和前面内容意思相同,你可以根据需要使用:

zone "onlinecq.com" { //这是域名
type slave;
file "s/onlinecq.com.bak";
masters {
192.168.0.19;
};
};

zone "0.168.192.in-addr.arpa" {
type slave;
file "s/0.168.192.in-addr.arpa.bak";
masters {
192.168.0.19; //这是本机的IP
};
};


再使用 :wq 存盘退出,请注意刚才的配置"s/onlinecq.com.bak",我们并没有s目录,于是现在就建立并给权限吧

mkdir /etc/namedb/s
chown bind:bind /etc/namedb/s
chmod 750 /etc/namedb/s
好了,然后我们再配置localhost.rev文件,一开始,该目录下面是不存在此文件的,但我们可以运行make-localhost,让系统自动生成该文件

chmod 755 make-localhost
./make-localhost
运行后/etc/named目录里面会自动产生 localhost.rev文件和localhost-v6.rev文件,localhost.rev文件是给IPv4使用的,而localhost-v6.rev文件是给IPv6使用的,暂时用不到。

这是我的localhost.rev文件的内容:

$TTL 3600 
@ IN SOA freebsd.onlinecq.com. root.freebsd.onlinecq.com. (
20040217 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS freebsd.onlinecq.com.
1 IN PTR localhost.onlinecq.com.

OK,到此为止,/etc/named目录里面的操作完成

再进入/usr/local/etc目录,你会发现一个rndc.conf.sample的文件,这是一个rndc的样本文件,不用管它,我们自己生成一个即可:

/usr/local/sbin/rndc-confgen > rndc.conf
然后你会发现,当前目录有一个rndc.conf的密钥文件了,呵呵,如果你想看一下内容,也可以使用:

vi rndc.conf
查看一下,我的文件内容是这样子的:

# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "9lLye919/f2DTE+cObb1kg==";
}; 
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
# algorithm hmac-md5;
# secret "9lLye919/f2DTE+cObb1kg==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

注意,请把后面以:

# Use with the following in named.conf, adjusting the allow list as needed:
开始的这一部份,加到/usr/local/etc/named.conf后面并去掉#才可以,否则后面的rndc status将显示超时退出。

嗯,到此为止,好象BIND 9就可以顺利运行了,请按下面的步骤测试吧!

/usr/local/sbin/named -g bind -c /usr/local/etc/named.conf &
& 的作用是在后台运行
-c的作用是以指定的配置文件运行
-g的作用是以一个用户组名初使化,屏幕上面也会显示很多调试信息出来,我的如下:

freebsd# /usr/local/sbin/named -gc /usr/local/etc/named.conf &
[1] 730
Feb 17 20:20:36.892 starting BIND 9.2.3 -gc /usr/local/etc/named.conf
Feb 17 20:20:36.892 using 1 CPU
Feb 17 20:20:36.894 loading configuration from '/usr/local/etc/named.conf'
Feb 17 20:20:36.894 listening on IPv4 interface fxp0, 192.168.0.19#53
Feb 17 20:20:36.895 listening on IPv4 interface lo0, 127.0.0.1#53
freebsd# Feb 17 20:20:36.896 command channel listening on 127.0.0.1#953
Feb 17 20:20:36.896 ignoring config file logging statement due to -g option
Feb 17 20:20:36.898 zone 0.0.127.IN-ADDR.ARPA/IN: loaded serial 20040217
Feb 17 20:20:36.899 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA/IN: loaded serial 20040217
Feb 17 20:20:36.899 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT/IN: loaded serial 20040217
Feb 17 20:20:36.899 running
当你有看到running字样时,说明已经配置正确了,如果要控制BIND 9的运行,更方便的使用rndc命令来进行,比如检测它的状态可以使用下面的命令:

/usr/local/sbin/rndc status
当显示如下信息时,可能会显示如下信息

number of zones: 5
debug level: 0 
xfers running: 0 
xfers deferred: 0 
soa queries in progress: 0 
query logging is OFF 
server is up and running 
如果没有显示上面的信息,请检查你的/usr/local/etc/named.conf文件里面是否配置了/usr/local/etc/rndc.conf里面的key。

还有另外一种测试方法是:
nslook,dig,netstat 等命令,都可以观察是否安装BIND成功,具体方法,建议大家找找其他资料吧,THX!
下面我们再把BIND 9加入系统服务里面,让它每次开机时运行

vi /etc/rc.conf
请在它后面加上下面几行 

named_enable="YES"
named_program="/usr/local/sbin/named" # path to named, if you want a different one.
named_flags="-c /usr/local/etc/named.conf" # Flags for named
因为FREEBSD 5.2系统里面自带了BIND 8的,为了不引起冲突,我们必须加参数,用BIND 9的配置文件引导才可以的。

好了,请重新启动一下你的FREEBSD 即可测试是否完全安装成功了。

结束语 
至此为止,一般可以实际运作的BIND 9就建立起来了,您可以reboot一下,让最新的设置及软件生效。 
如果在安装过程中出现错误,您可以先检查完错误,再接着安装下去。或者你可以选择你感兴趣的某些部份安装! 
当然因为时间仓促,涉及到的知识太广,加上本人能力有限,其中错误在所难免,恳请各位读者提出来,大家共同提高,共同进步! 
我的联络方式是: cqfanli@163.com http://cqfanli.blogbus.com 

注:任何转载或摘抄请保留作者信息和注明文章出处(中文FreeBSD用户组 http://www.cnfug.org)

|
FreeBSD使用大全
www.freebsd.org上的hankbook

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 现在FreeBSD 7.2 和 FreeBSD 8.0哪个更稳定一些
  • 急急急!!!怎样在ftp://ftp.freebsd.cn.org里下载FreeBSD4.6操作系统哪?
  • 我想装FREEBSD,不知它支不支持3COM 3C905B-TX网卡?哪位兄弟装过FREEBSD的请问一下!谢谢
  • XP下装了VMware,并在VMware内装了FreeBSD,请问如何XP下拷文件到FreeBSD
  • 多系统怎样安装FREEBSD?
  • 求FreeBSD论坛或博客(在线等)
  • Freebsd怎么样??
  • 关于freebsd的一些疑问
  • 安装FreeBSD遇到的问题
  • 关于freebsd和linux的问题
  • 如何在freebsd中安装桌面
  • 好象用FreeBSD的人不多啊。:)
  • 刚刚才真正的用上了freebsd,发现了一些问题,比较疑惑。。
  • 安装FreeBSD 6.1 出错
  • FreeBSD和Redhat哪个更快点
  • FreeBSD与Linux到底有什么不同啊?
  • 请问FreeBSD是一个什麽样的操作系统?
  • freebsd做前台 使用win2000做储存器问题问题(非高手免进)
  • FreeBSD虚拟机 VirtualBSD
  • 那有FreeBSD?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3