自建DNS权威服务器全过程(多域名解析) - AFF大佬 - 分享有价值的主机信息和服务器运维编程技术
当前位置: 主页 » 技术干货 » 自建DNS权威服务器全过程(多域名解析)

自建DNS权威服务器全过程(多域名解析)

   affdalao      2017年11月28日   阅读 66 次     0 评论   Tags: · ·

UPDATE:2017/12/01 自启动脚本修复因mariadb未启动导致的named自启动失败。
新增:dig trace查询命令/usr/local/named/bin/dig + trace -t A affdalao.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地址与物理位置。

psb.gif

psb.jpg

搭建过程:

#依赖包:
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 "affdalao.com" IN {

        type master;         //正向解析 

        file "affdalao.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、affdalao.com.zone、named.ca、named.local、affdalao.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@affdalao.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和affdalao的zone文件
[root@vultr named]# vi abc.com.zone 
$TTL       86400
@               IN SOA  abc.com.zone.  kf@affdalao.com.foxmail.com. (
                        2017112800    ; serial (d. adams)
                                           3H                 ; refresh
                                           15M                ; retry
                                           1W                 ; expiry
                                           1D )               ; minimum



@                  IN      NS         ns1.affdalao.com.
@                  IN      NS         ns2.affdalao.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 affdalao.com.zone 
$TTL       86400
@               IN SOA  affdalao.com.  kf@affdalao.com.foxmail.com. (
                        2017112800    ; serial (d. adams)
                                           3H                 ; refresh
                                           15M                ; retry
                                           1W                 ; expiry
                                           1D )               ; minimum



@                  IN      NS         ns1.affdalao.com.
@                  IN      NS         ns2.affdalao.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  affdalao.com.  kf@affdalao.com.foxmail.com. (
                        2017112800    ; serial (d. adams)
                                           3H                 ; refresh
                                           15M                ; retry
                                           1W                 ; expiry
                                           1D )               ; minimum


@               IN NS           ns1.affdalao.com.
@               IN NS           ns2.affdalao.com.
207             IN PTR          ns1.affdalao.com.
207             IN PTR          ns2.affdalao.com.
207             IN PTR          www.affdalao.com.
207             IN PTR          affdalao.com.
207             IN PTR          whois.affdalao.com.

由于创建文件很多,防止混淆,下面列一下文件和目录直接关系。

/usr/local/named/etc/named 目录下文件:

QQ截图20171128195220.png

/usr/local/named/etc 目录下文件:

QQ截图20171128195845.jpg

创建文件完成后,给相应的权限:

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 affdalao.com  @223.5.5.5
;; Invalid option 

;  DiG 9.10.6  + trace -t A affdalao.com @223.5.5.5
;; global options: +cmd
;; Got answer:

  • 版权声明:本文版权归AFF大佬和原作者所有,未经许可不得转载。文章部分来源于网络仅代表作者看法,如有不同观点,欢迎进行交流。除非注明,文章均由 AFF大佬 整理发布,欢迎转载,转载请带版权。

  • 来源:AFF大佬 ( https://affdalao.com/ ),分享有价值的主机信息和服务器运维编程技术。
  • 链接:https://affdalao.com/156.html
  • 评论(0

    1. 还没有任何评论,你来说两句吧

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注