UPDATE:2017/12/01 自启动脚本修复因mariadb未启动导致的named自启动失败。
新增:dig trace查询命令/usr/local/named/bin/dig + trace -t A kaifashuo.com @223.5.5.5
新增:禁止递归,全部滚去找根再来找本DNS,减小查询压力。当你看到,百度、腾讯、阿里巴巴的域名都是自建的DNS服务器解析你是不是感到特别羡慕嫉妒恨?是不是特别好奇如何自建DNS服务器来解析自己的域名,拥有域名DNS服务器的自主控制权?当然喽,也有很多DNS服务器免费提供DNS解析,比如dnspod、he.net等等,但是在大天朝国外的DNS服务商屏蔽的太多了,即使做了解析也没有什么作用,虽说dnspod还是不错的,但是在国内免费的也就just so so,有的时候也会出现无法解析的问题,那么做好的办法就是自建DNS服务器,也算是为自己的运维生涯增加一份技能吧。
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议tcp协议的53端口。
全球共有13台根域名服务器。这13台根域名服务器中名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。
根服务器主要用来管理互联网的主目录,全世界只有13台。
1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。
所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。
全球根服务器的IP地址与物理位置。
搭建过程:
#依赖包:
yum install gcc gcc-c++ automake openssl
#下载最新的bind
ftp://ftp.isc.org/isc/bind9/9.10.6/bind-9.10.6.tar.gz
tar xf bind-9.10.6.tar.gz
cd bind-9.10.6
./configure --prefix=/usr/local/named --enable-epoll --enable-threads --enable-largefile --with-openssl=yes --sbindir=/usr/sbin --enable-static && make && make install
#添加用户和用户组
groupadd named
useradd -g named -d /usr/local/named -s /sbin/nologin named
#创建 rndc.conf文件,用bind自带程序生成
进入/usr/local/named/etc,将rndc.conf及named.conf生成
cd /usr/local/named
/usr/sbin/rndc-confgen >/usr/local/named/etc/rndc.conf
#把rndc.conf 中的key信息输出到 named.conf 中
cd etc/
tail -10 rndc.conf | head -9 | sed -e s/#\ //g > named.conf
强调一下,rndc.conf与named.conf的key值必须完全一样,而且并不需要生成rndc.key
#在named.conf 在后面添加下面内容
options {
listen-on port 53 { 207.246.82.114; }; //为安全 这里不要写any
directory "/usr/local/named/etc/named"; //为安全 这里设定chroot目录
dump-file "/usr/local/named/etc/data/cache_dump.db";
statistics-file "/usr/local/named/etc/data/bind_stats.txt";
pid-file "named.pid";
allow-query { any; };
allow-transfer { none; };
recursion no; //禁止递归查询
forwarders { 223.5.5.5;119.29.29.29;8.8.8.8; }; //开启转发
dnssec-enable no; //关闭dnssec
dnssec-validation no;
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; }; //为了防御dns污染和Kaminsky缓存投毒,这里写none
};
zone "kaifashuo.com" IN {
type master; //正向解析
file "kaifashuo.com.zone"; //正向解析文件
allow-update { none; };
};
zone "abc.com" IN {
type master;
file "abc.com.zone";
allow-update { none; };
};
zone "114.82.246.in-addr.arpa" in {
type master; //反向解析
file "207.zone"; //存放反向解析的文件
allow-update { none; };
};
#根据:named.conf创建以下各种zone文件,文件目录:/usr/local/named/etc/named
#文件:207.zone、localhost.zone、kaifashuo.com.zone、named.ca、named.local、kaifashuo.com.zone
#根据named.conf创建/usr/local/named/etc/data/ 目录
mkdir /usr/local/named/etc/data/
touch /usr/local/named/etc/data/cache_dump.db
touch /usr/local/named/etc/data/bind_stats.txt
#将跟服务器的信息导入到/usr/local/named/etc/named/named.ca文件中
/usr/local/named/bin/dig -t NS .>/usr/local/named/var/named/named.ca
#创建/usr/local/named/etc/named文件夹,存放各种zone文件
mkdir /usr/local/named/etc/named
cd /usr/local/named/etc/named
#创建localhost.zone文件
[root@vultr named]# vi localhost.zone
$TTL 86400
@ IN SOA localhost. kf@kaifashuo.com.foxmail.com. (
2017112800 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns.localhost.
ns IN A 127.0.0.1
#创建named.local
[root@vultr named]# vi named.local
$TTL 86400
@ IN SOA localhost. root.localhost. (
2017112800 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS localhost.
1 IN PTR localhost.
#创建域名abc和kaifashuo的zone文件
[root@vultr named]# vi abc.com.zone
$TTL 86400
@ IN SOA abc.com.zone. kf@kaifashuo.com.foxmail.com. (
2017112800 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns1.kaifashuo.com.
@ IN NS ns2.kaifashuo.com.
ns1 IN A 207.246.82.114
ns2 IN A 207.246.82.114
www IN A 207.246.82.114
@ IN A 207.246.82.114
[root@vultr named]# vi kaifashuo.com.zone
$TTL 86400
@ IN SOA kaifashuo.com. kf@kaifashuo.com.foxmail.com. (
2017112800 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns1.kaifashuo.com.
@ IN NS ns2.kaifashuo.com.
ns1 IN A 207.246.82.114
ns2 IN A 207.246.82.114
www IN A 207.246.82.114
whois IN A 207.246.82.114
@ IN A 207.246.82.114
#创建反向解析文件207.zone
[root@vultr named]# vi 207.zone
$TTL 86400
@ IN SOA kaifashuo.com. kf@kaifashuo.com.foxmail.com. (
2017112800 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns1.kaifashuo.com.
@ IN NS ns2.kaifashuo.com.
207 IN PTR ns1.kaifashuo.com.
207 IN PTR ns2.kaifashuo.com.
207 IN PTR www.kaifashuo.com.
207 IN PTR kaifashuo.com.
207 IN PTR whois.kaifashuo.com.
由于创建文件很多,防止混淆,下面列一下文件和目录直接关系。
/usr/local/named/etc/named 目录下文件:
/usr/local/named/etc 目录下文件:
创建文件完成后,给相应的权限:
chmod -R 755 /usr/local/named/
chown -R named.named /usr/local/named/
调试信息:
下面就可以启动bind来测试是否安装成功了
/usr/sbin/named -gc /usr/local/named/etc/named.conf &
加-gc参数,可以显示出启动日志,以便排错
如果运行结果最后一行显示
Running
表明安装并启动成功。
dig trace查询:[root@vultr ~]# /usr/local/named/bin/dig + trace -t A abc.com @223.5.5.5
[root@vultr ~]# /usr/local/named/bin/dig + trace -t A kaifashuo.com @223.5.5.5
;; Invalid option
; DiG 9.10.6 + trace -t A kaifashuo.com @223.5.5.5
;; global options: +cmd
;; Got answer:
还没有任何评论,你来说两句吧