Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19266764
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: BSD

2008-11-04 11:04:31

这次 在Freebsd7.0上 并成功运行了bind9.5, 感觉还不错.. 以下是我的安装及配置方案..

 1: 安装. 

   你可以通过方式安装. 因为ports里面的是bind9.4.2,之前也装了一次,感觉还是用9.5的爽.嘻嘻..

  ports方法很简单..

  cd /usr/ports/dns/bind94

  make install clean

 我是自己安装的.

 你要的 bind-9.5.0.tar.gz

  -zxvf bind-9.5.0.tar.gz

  cd bind-9.5.0

  ./configure --prefix=/usr/local/named95 --enable-threads  --enable-largefile --enable-ipv6

   # threads 支持 多线程

   # largefile 好像是支持大文件

   # ipv6 支持ipv6 协议 ip解析.

   # 具体参数说明,可以通过 ./configure --help

   make && make install

    2:建立账户

因为之前我用ports方式安装过bind,所以已经帮我自动建立了bind账户. 所以建立账户这步我可以省略了.

如果你是第一次编译安装, 那为了 ,还是新建一个账户来启动bind服务.

groupadd bind
useradd -g bind -d /usr/local/named95 -s /sbin/nologin bind  

#新建bind账户,并绑定目录到bind的安装目录.

3: 配置

/usr/local/named95/sbin/rndc-confgen > /etc/rndc.conf 

 #我的路径不同,不是默认的/sbin这里自己根据情况来修改.        

tail -10 /etc/rndc.conf|head -9|sed s/#\//g > /etc/named.conf 

#这里 是通过rndc来加密bind的连接, 主要是在主副服务器,以及rndc连接的时候做加密用,

#在安全方面做防护. 和 的key方式连接差不多意思.          

建立log文件 下面会用到.

touch /var/log/named/dns_warning

touch /var/log/named/dns_log

chown bind:bind /var/log/named/dns_waring

chown bind:bind /var/log/named/dns_log

 

这里提个醒,写这些文档的时候,注意不要遗漏了{} ; 这几个符号,前后对应,我写的时候也吃了好几次亏.

以下是我的named.conf文件内容,仅作参考:

 key "rndc-key" {
       algorithm hmac-md5;
       secret "HA4Sdtp0QprQbSPH4UFy7g==";
};

controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
};

acl "my-lan" {
127.0.0/8;     216.16.16/24;                             
       #192.168.25/24;
};

 

#acl是控制列表.设置允许dns查询的ip,安全设置

 

 acl bogusnets {
0.0.0.0/8; 1.0.0.0/8; 2.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3; 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16
; };

 # bogusnets 是禁止的列表,其中一部分ip是网络上没有的,防止被攻击,acl的控制名,你可以不用"".


options {
       directory "/usr/local/named95/etc/namedb";      

 

# 这个是域名查询时正反解析文件存放的目录.
       

 forwarders { 202.96.209.6; };                    

 

 #转发器ip的设置.这个是上海的dns,自己根据当地情况修改.
       

 notify no;                                     

 

  # 这个是多dns服务器之间域名更新的通知,我这里设置不通知,暂时没有做多dns的负载.


       pid-file "/var/run/run/named.pid";             

 

 # 这个是bind的进程的pid号存放的文件.


       auth-nxdomain no;                                

 

 设置不支持域内验证.内网域模式管理的,用不到.


       version " server 2008 DNS 8.0";           

 

 # 设置bind的版本,做欺骗作用.安全设置.

 

     blackhole { bogusnets; };  #设置阻止的ip名单.上面写到的.
 
       allow-recursion { "my-lan"; };                

    #设置允许查询的ip列表,就是上面提到的acl控制.
       listen-on port 53 {
                216.16.16.83;                        

};

 

# 设置监听端口,以及ip,因为我的单网卡绑定了双ip, 但我只想监听其中一个ip,作为服务.

#这个在多网卡的服务器上可以用上.


       max-cache-size 50M;                           # 最大缓存大小.
       allow-query {                               

       "my-lan";
};

 

#允许递归循环查询的ip列表.也就是自己域名列表中没有要查询的dns,可以转发到转发器的

#dns得到所要查询的域名,这在内网控制上有用,比如不允许内网个别用户查询公网.这里就可以控制了

       allow-transfer {
# 192.168.25/24;
       216.16.16/24;  127.0.0/8;     };

};

 

transfer 是主副dns服务器之间域名zone 数据的传输许可.

 

logging {
  channel warning {
   file "/var/log/named/dns_warning" versions 3 size 1240k;
   severity warning;
   print-category yes;
   print-severity yes;
   print-time yes;
  };
  channel general_dns {
      file "/var/log/named/dns_log" versions 3 size 1240k;
      severity info;
      print-category yes;
      print-severity yes;
      print-time yes;
  };
  category default {
      warning;
  };
  category lame-servers { null; };          
  category edns-disabled { null; };
  category queries {
      general_dns;
  };
};

 

 

# log文件, 其中 

#category lame-servers { null; };          
#category edns-disabled { null; };

 

#是取消 错误提示, 就是当你查询的域名查不到的时候,会有错误的提示,什么time out .... deny edns的提示,很烦,我就取消这个记录了.

##以下是域名文件, "name.root" "localhost.zone" "named.127.0.0" 3个文件是基本的.

#quan-study.com 是我自己添加的域名,你可以通过zone来添加n多域名. 当然还有一种方式,就是通过

#include 来书写, 另外新建一个文件,统一管理,不过我这里只需要几个域名,直接在named.conf中书写了.

#至于include的方式,你可以看手册做参考.alleyes.com是广告网站,很烦,所以我给他指定到我自己的服务

#器. 这个也是种方法来重定向. 本打算做个dns劫持的. 就是不允许上公网的用户,都重定向到内网web.可

#惜没做成. 以后再考虑了.

 

zone "." in {
       type hint;
       file "name.root";
};

zone "localhost" in {
       type master;
       file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
       type master;
       file "named.127.0.0";
       allow-update { none; };
};

zone "quan-study.com" in {
       type master;
       file "quan-study.com";
       allow-update { none; };
};

zone "16.16.216.in-addr.arpa" in {
       type master;
       file "quan-study.216.16.16";
       allow-update { none; };
};

zone "alleyes.com" in {
       type master;
       file   "deny.list";
};

 

以下是 几个域名文件内容 :

name.root 是实时更新的,自己下载.

://ftp.internic.org/domain/named.root

 localhost.zone:

$TTL   86400
$ORIGIN localhost.
      1D       IN       SOA              (
                       42       ; serial (d. adams)
                       3H       ; refresh
                       15M       ; retry
                       1W       ; expiry
                       1D )       ; minimum

       1D       IN       NS       @
       1D       IN             127.0.0.1

 named.127.0.0: 

$TTL       86400
      IN       SOA       localhost.       root.localhost. (
                       1997022700       ; Serial
                       28800               ; Refresh
                       14400               ; Retry
                       3600000               ; Expire
                       86400 )               ; Minimum
        IN       NS       localhost.
      IN       PTR       localhost.

 quan-study.com 

$TTL   86400
$ORIGIN    quan-study.com.
     IN     SOA    email.quan-study.com.  root.quan-study.com. (
                       23     ;
                       12h    ;
                       2h     ;
                       3w     ;
                       2h
                            ;

               IN     NS     email.quan-study.com.
       3w     IN     MX     10     mail.quan-study.com. 
#3w是3week,3周,邮局ip一般不变

email          IN          216.16.16.83                  
mail           IN          216.16.16.83
www            IN          216.16.16.83
test.ho        IN          216.16.16.83        #2级域名,你也可以设置多级域名.
             IN          216.16.16.83        
#范域名解析

 quan-study.216.16.16

$TTL   86400
$ORIGIN 16.16.216.IN-ADDR.ARPA.
     IN     SOA    email.quan-study.com.  root.quan-study.com. (
                       23     ;
                       12h    ;
                       2h     ;
                       3w     ;
                       2h     ;
                            ;

       IN     NS     email.quan-study.com.
83     IN     PTR    email.quan-study.com.
83     IN     PTR    mail.quan-study.com.
83     IN     PTR    

 deny.list 

$TTL   86400
$ORIGIN   alleyes.com.
     IN     SOA    email.quan-study.com.  root.quan-study.com. (
                       23     ;
                       12h    ;
                       2h     ;
                       3w     ;
                       2h
                            ;
       NS     email.quan-study.com.

     IN          216.16.16.83

以上设置几点说明, 注意几个文件中的点号 ".",不要忘记了, email.quan-study.com. 是我服务器的hostname,相当于windows下的计算机主机名.(当然不能完全这样理解), quan-study.com是我的域名.不要把2个搞混淆了. 因为我的hostname 和域名都差不多, 你也可以把主机名改成dnsserver这样的形式,但要和/etc/rc.conf文件中指定的命令 hostname "email.quan-study.com" 相同, 可以和域名区别开.

 之后可以 启动测试:

/usr/local/named95/sbin/named -gc /etc/named.conf &

 

# "&"是后台允行,这样你可以继续别的操作.如果没有错误提示,一切顺路就是running.

# 可以用nslookup来查询你的域名.

 最后,设置自动启动. 默认是通过在rc.conf传递参数,但我觉得系统默认写的named自动启动太繁琐了.

自己写了一个.仅做参考.

 新建一个文件

vi /etc/named2

case "$1" in

start)
if [ -x /usr/local/named95/sbin/named ]; then
/usr/local/named95/sbin/named -u bind -c /etc/named.conf && echo . && echo 'BIND9 server started.'
fi
;;

stop)
kill `cat /var/run/run/named.pid` && echo . && echo 'BIND9 server stopped.'
;;
restart)
echo .
echo "Restart BIND9 server"
$0 stop
sleep 10
$0 start
;;
*)
echo "$0 start | stop | restart"
;;
esac

 然后在新建一个文件 rc.local 默认没有这个文件, 这个好像是老版本的自启动方式,因为这种方式,

在自启动程序多的时候,就会不方便管理.freebsd新版本通过rc.conf来传递参数,遍历/etc/rc.d 目录下的自启动程序.

 我也是为了偷懒, 嘻嘻..

 vi /etc/rc.local 写入这一行.

/etc/named2 start

这样就做好了..

  最后别忘了

chown -R bind:bind /usr/local/named95
阅读(908) | 评论(0) | 转发(0) |
0

上一篇:BIND9详解

下一篇:DNS的资源记录总结

给主人留下些什么吧!~~