自己动手搭建自己的DNS服务器

搭建自己的DNS 域名服务器(非主从) 前言DNS 协议是UDP 混合TCP 的一个SERVER ,就是我们在windows 下Linux 下的/etc/resolv.conf配置第一步:下载源码包和

搭建自己的DNS 域名服务器(非主从) 前言

DNS 协议是UDP 混合TCP 的一个SERVER ,就是我们在windows 下

Linux 下的/etc/resolv.conf配置

第一步:下载源码包和安装 下载最新版本是9.6.1 tar zxvf bind-9.6.1.tar.gz

cd bind-9.6.1

./configuremake

,

make

make install

PS :默认安装是/usr/sbin/named,配置文件在/etc/named.conf ,zone 文件目录是/var/named

配置rndc.conf

cd /usr/local/sbin/named

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

把rndc.conf 中的key 信息输出到 named.conf 中

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

这里强调一下,rndc.conf 与named.conf 的key 值必须完全一样,而且并不需要生

配置named.conf

刚才我们已经生成了一部分named.conf, 增加如下

key "rndc-key" {

algorithm hmac-md5;

secret "ydF5brUiwvHgsPMOFgNabw==";

};

controls {

inet 127.0.0.1 allow { localhost; } keys { rndc-key; };//如果对外服务这里的localhost 改any

};

logging {

channel default_debug

{

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

severity dynamic;

};

};

options {

allow-query { localhost; }; #是否可以对外服务,localhost 就只能自己

directory "/var/named"; #named区文件目录

pid-file "named.pid"; #进程id 文件名

listen-on port 53 { 127.0.0.1; };

listen-on-v6 port 53 { ::1; };

dump-file "/var/named/cache_dump.db";

statistics-file "/var/named/named_stats.txt";

,

memstatistics-file "/var/named/named_mem_stats.txt";

recursion yes;#迭代查询

dnssec-enable yes;

dnssec-validation yes;

dnssec-lookaside auto;

};

zone "." IN { //定义根域的zone ,对应的 /var/named/named.ca 列出所有根域名服务器

type hint;

file "named.root"; //可以在 /usr/share/doc/bind-9.8.2/sample/var/named/ 获取named.ca 模板

};

zone "localhost" IN {

type master;

file "/var/named/localhost.zone";

allow-update { none; };

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "/var/named/named.local";

allow-update { none; };

};

zone "test.com" IN {

type master;

file "/var/named/test.zone";

allow-update { none; };

};

zone "19.202.220.in-addr.arpa" IN {

type master;

file "/var/named/test.local";

allow-update { none; };

};

配置localhost.zone

$TTL 3600

@ IN SOA localhost. root.localhost. ( ; @就是代表对应/etc/named.conf zone 对

,

应的名字 zone "xxx"

0 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

@ IN NS localhost. ; IN 代表一条资源记录(RR ),NS = NameServer 代表DNS Server

localhost. IN A 127.0.0.1 ; A 是正向解析的标志,[hostname] IN A [IP] 代表该主机对应该IP

配置named.local

$TTL 600

@ IN SOA localhost. root.localhost. (

@ IN NS localhost. 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum

1 IN PTR localhost. ; PTR为反向解析,与上面的 A 标志对应

配置test.zone

$TTL 3600

@ IN SOA test.com. root.localhost. ( ;

0 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

@ IN NS localhost. ; @ 就是 test.com(zone指定), 寻找test.com 则向主机(NS )localhost. 发出查询

localhost. IN A 127.0.0.1 ; NS对应的IP 记录

www IN A 220.202.19.204 ; 这里就是真正的主机名的解析,www 自动扩展成 www.test.com

FTP IN A 220.202.19.205 ;

,

配置test.local

$TTL 86400

@ IN SOA test.com. root.test.com.(

20031001;

7200;

3600;

43200;

86400);

@ IN NS test.com.

204 IN PTR www.test.com

205 IN PTR ftp.test.com

检测配置

看看named.conf 是否正确

named-checkconf /etc/named.conf

看看每个zone 是否配置正确

named-checkzone test /var/named/test.zone

看看是否已经启动

Ps –elf |grep named

如果不能确定那里错误, 调试跟log ,你最好配置运行log named -d 4 -c /etc/named.conf , 如果配置了log 就可以查看了 tail –100 more named.run

重启

Killall named

named -d 4 -c /etc/named.conf

官网弄个named.root

最后修改你linux 下的/etc/resolv.conf

[root@v218128132.sqa.zmf /var/named]

#more /etc/resolv.conf

options timeout:2 attempts:5

,

search ztt.alipay.net oob.alipay.net db.alipay.net alipay.net alibank.net

#nameserver 10.210.208.31

#nameserver 10.210.208.45

#nameserver 10.218.128.132

nameserver 127.0.0.1

PS :这里我是以127.0.0.1启动的,如果你想把你的DNS 服务器对外服务,绑定你的外网IP 吧

测试

Nslookup 正向

Nslookpu 反向

用dig 正向

用dig 反向

,

测试对外直接提供服务

如果DNS 服务器没有对外绑定IP 服务,那么你用命令测试 Dig –t A @10.218.128.132将会出错

把/etc/named.conf的两个allow :localhost 改为any ,重启后再测试 正向

反向

,

详细配置参考

如果要做智能解析和转发(常见用来做DNS 轮训均衡)

,

如果出现bogon

标签: