自己动手搭建自己的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