2023年12月6日发(作者:)

freebsd 7.0 安装配置dns服务-bind9.5.0

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

1: 安装bind.

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

ports方法很简单..

cd /usr/ports/dns/bind94

make install clean

我是自己编译安装的.

下载你要的文件

tar -zxvf

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/

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

tail -10 /etc/|head -9|sed s/#/g > /etc/

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

#在安全方面做防护. 和 ssh的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

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

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

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/";

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

auth-nxdomain no;

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

version "Windows 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的提示,很烦,我就取消这个记录了.

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

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

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

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

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

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

zone "." in {

type hint;

file "";

};

zone "localhost" in {

type master;

file "";

};

zone "" in { type master;

file "named.127.0.0";

allow-update { none; };

};

zone "" in {

type master;

file "";

allow-update { none; };

};

zone "" in {

type master;

file "quan-study.216.16.16";

allow-update { none; };

};

zone "" in {

type master;

file "";

};

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

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

ftp:///domain/

:

$TTL 86400

$ORIGIN localhost.

@ 1D IN SOA @ root (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

1D IN NS @

1D IN A 127.0.0.1

named.127.0.0:

$TTL 86400

@ IN SOA localhost. ost. (

1997022700 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NS localhost.

1 IN PTR localhost.

$TTL 86400

$ORIGIN .

@ IN SOA . . ( 23 ;

12h ;

2h ;

3w ;

2h

) ;

IN NS .

3w IN MX 10 . #3w是3week,3周,邮局ip一般不变

email IN A 216.16.16.83

mail IN A 216.16.16.83

www IN A 216.16.16.83

IN A 216.16.16.83 #2级域名,你也可以设置多级域名.

* IN A 216.16.16.83 #范域名解析

quan-study.216.16.16

$TTL 86400

$ORIGIN .

@ IN SOA . . (

23 ;

12h ;

2h ;

3w ;

2h ;

) ;

IN NS .

83 IN PTR .

83 IN PTR .

83 IN PTR .

$TTL 86400

$ORIGIN .

@ IN SOA . . (

23 ;

12h ;

2h ;

3w ;

2h

) ;

NS .

* IN A 216.16.16.83

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

hostname "" 相同, 可以和域名区别开.

之后可以 启动测试:

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

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

最后,设置自动启动. 默认是通过在传递参数,但我觉得系统默认写的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/ && echo . && echo 'BIND9 server started.'

fi

;;

stop)

kill `cat /var/run/run/` && echo . && echo 'BIND9 server stopped.'

;;

restart)

echo .

echo "Restart BIND9 server"

$0 stop

sleep 10

$0 start

;;

*)

echo "$0 start | stop | restart"

;;

esac

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

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

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

vi /etc/ 写入这一行.

/etc/named2 start

这样就做好了..

最后别忘了

chown -R bind:bind /usr/local/named95

原文地址 /html/18/