实验机器准备(已匿名)
机器名称 | 机器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去了,成功
如何保证域名唯一性
注册新域名需要到国际互联网中心进行备案注册,而这个操作在国内会有域名注册商代替用户去做,例如阿里云的万网。这时候国际互联网中心就会校验域名的唯一性,和注册商(用户)双向确认,然后进行授权。
网友评论