从根开始搭建一套DNS系统

2019-05-25  本文已影响0人  死鱼

实验机器准备(已匿名)

机器名称 机器ip 功能
青岛机 1.1.1.1 根服务器
深圳机 2.2.2.2 com.顶级DNS服务器
香港机 3.3.3.3 应用服务器
本地 127.0.0.1 递归dns服务器

dns搭建工具

bind9

配置

青岛机(根服务器)
#named.conf
key "rndc-key" {
      algorithm hmac-sha256;
      secret "xxxxx";
};

controls {
      inet 127.0.0.1 port 953
      allow { 127.0.0.1; } 
      keys { "rndc-key"; };
};

options {
    directory "~/zones"; # 解析文件存放根目录
    pid-file "named.pid";
    recursion no; # 非递归
};

# "." 域名的解析配置
zone "." IN {
    type master; # 类型master,因为青岛机器为根服务器
    file "root.master"; # 解析文件
};

named.conf中配置了.的域名解析,但是类型为master,代表本机负责解析根域名,作为根域名服务器。

#~/zones/root.master
$TTL 86400
$ORIGIN .
@       IN      SOA     @       root(
        12169
        1m
        1m
        1m
        1m
)

.               IN      NS      a.root.net.
a.root.net.     IN      A       1.1.1.1 # 本机ip,代表本机就是DNS根服务器

com.            IN      NS      a.com-ns.com.
a.com-ns.com.   IN      A       2.2.2.2 # 深圳机的ip

根域名服务器中,需要指出顶级域名的NS,授权给他们。正常的根域名服务器会把所有顶级域名的NS(1000多个)写死在配置中,外部访问就能直接拿到顶级域名ns的ip地址了。

深圳机(顶级域名服务器)
#named.conf
key "rndc-key" {
      algorithm hmac-sha256;
      secret "xxxxx";
};

controls {
      inet 127.0.0.1 port 953
      allow { 127.0.0.1; }
      keys { "rndc-key"; };
};

options {
    directory "~/zones";
    pid-file "named.pid";
};

zone "." IN {
    type hint; # 配置根域名服务器信息
    file "root.hint"; # 配置文件在~/zones/root.hint
};

zone "com." IN {
    type master; # 配置com.解析信息,本机为权威解析DNS。
    file "com.master";
};
#root.hint
.               86400   IN      NS      a.root.net //根服务器ns名称
a.root.net.     86400   IN      A       1.1.1.1
// 根服务器的ip,不然就要配多一台.net的权威服务器去解析a.root.net
//这里直接解析就好,省事(钱)。

(暂时发现这个root.hint好像可有可无)

# com.master
$TTL 86400
@       IN      SOA     @       root(
        2
        1m
        1m
        1m
        1m
)

com.            IN      NS      a.com-ns.com.
a.com-ns.com.   IN      A       2.2.2.2 
#解析出这台a.com.ns.net的权威服务器就是本机ip

# 此处添加A解析,站长接入网站解析的时候,就是在这里添加的
hongkong.com.   IN      A       3.3.3.3

权威服务器用于给次级域名做解析,站长购买域名后,需要接入到DNS中时,就由权威服务器添加到解析配置中去。这样在递归的时候,根服务器给递归服务器一堆顶级服务器ns,然后递归服务器再问这些服务器拿需要对应的域名解析。

香港机(应用服务器)

随便处理一下80端口返回

本地DNS(递归DNS)
#named.conf
key "rndc-key" {
      algorithm hmac-sha256;
      secret "xxxxxx";
};
controls {
    inet 127.0.0.1 port 953
    allow { 127.0.0.1; } 
    keys { "rndc-key"; };
};

options {
    directory "~/zones";
    pid-file "named.pid";
    dnssec-enable no; #暂时关掉,后面研究这个工具
    dnssec-validation no;
};

#配置根域名信息
zone "." IN {
    type hint;
    file "root.hint";
};
#root.hint
.               86400   IN      NS      a.root.net
a.root.net.     86400   IN      A       1.1.1.1

本地递归DNS只需配置根域名服务器的ns和ip就行了,这个一般都会写死几个ip在路由器DNS配置当中去,防止递归查询。

实践操作:

直接访问一下:
访问hongkonog.com

这里直接把hongkong.com解析到3.3.3.3去了,成功

如何保证域名唯一性

注册新域名需要到国际互联网中心进行备案注册,而这个操作在国内会有域名注册商代替用户去做,例如阿里云的万网。这时候国际互联网中心就会校验域名的唯一性,和注册商(用户)双向确认,然后进行授权。

上一篇下一篇

猜你喜欢

热点阅读