首先我们需要知道一些原理:
dns服务器有主和从,主服务器发生变化,从服务器会自动同步
上网时我们输入的网址,比如说www.EXAMLE.com,其写全应该是www.EXAMPLE.com.,com后有个.,代表着根域,dns结构中一个网址结构是
. |
根域 |
com |
顶级域/一级域 |
EXAMPLE |
二级域 |
www |
主机名 |
如果是www.EXAMLE.com.cn结构,一级域为cn,二级域为com,三级域是EXAMPLE,主机名是www
当用户访问一个之前从未访问的网站时,会去查找本地dns的缓存有没有该域名对应的ip,如果没有,将会从根域查询起。
比如说访问www.baidu.com,其实是访问www.baidu.com.
(1)查询至根域:你知不知道我这个网址的ip呀,根域回复“不知道,不过我知道你的com域在哪,它是我的子域,你去找它吧”(注:这种dns无法将结果交给用户,不过可以将访问推荐到下级dns服务器的查询,称作迭代查询)
(2)查询至com域:你知不知道我这个网址的ip呀,com域回复“不知道,但我知道你的baidu二级域在哪,它是我的子域,你去找它吧”(注:迭代查询)
(3)查询至二级域:你知不知道我这个网址的ip呀,二级域回复“知道呀,来我把它告诉你”(注:这种dns将最终结果交给用户,称作递归查询)
之后dns解析的记录会存放到本地dns服务器,这个本地dns服务器我们可以理解为小区的网络运营商dns服务器,再有其它主机访问该网址,就可以直接去访问该ip
知道这个概念,我们便画逻辑图,构建dns结构
1、画出逻辑结构图
本人实验时候主机分配计划和ip
centos7 test:客户机,ip 192.168.239.70
centos7-1:本地dns主服务器,ip 192.168.239.71
centos7-3:二级域主服务器,ip 192.168.239.73
centos6 test:二级域从服务器,ip 192.168.239.60
centos6-1:一级域服务器,ip 192.168.239.61
centos6-2:根域服务器,ip 192.168.239.62
centos:目标网站,ip 192.168.239.200
实际实验中将以.tech作为一级域名测试
实验中可能会用到的检查指令:
主配置文件语法检查:named-checkconf
解析库文件语法检查:named-checkzone "chenux.tech" /var/named/chenux.tech.zone
rndc status|reload ;service named reload
2、给计划作为dns服务器的主机安装bind,dns的服务名为named.service
3、目标网址安装httpd服务,建立/var/www/html/index.html,写入内容
4、为保险起见,我们一步一步按照图从下向上实现,首先从二级域开始配置
翻页至最下方,可以看到一路径
编辑该文件,内容可以按照下面的格式写入
进入/var/named目录,编辑chenux.tech.zone主区域
建立好后,需要注意一点
重启服务,systemctl restart named,测试结果
5、配置二级域从服务器
配置和主服务器稍有不同,下图标有两处不同
第一处:/etc/named.conf
第二处:/etc/named.rfc1912.zones
更改完后重启服务,/var/named/slaves目录下会自动生成*.zone
测试
6、搭建一级域dns
/etc/named.conf文件不变
/etc/named.rfc1912.zone
主区域文件改名为/var/named/tech.zone
重启后测试
此时如果成功,将二级域DNS主服务器网络断开,清除一级域dns服务器缓存,rndc flush,测试机dig www.chenux.tech @192.168.239.60(二级域DNS从服务器)依旧正常
7、搭建根域dns服务器
vim /etc/named.conf,最下方有一个zone ".",将它们全部注释
vim /etc/named.rfc1912.zones
vim /var/named/root.zone
重启服务,测试正常
8、建立本地dns服务器
vim /etc/named.conf 两个选项注释,并且将这两项改为no,否则无法进行dns转发
vim /var/named/named.ca
重启服务
9、更改测试机192.168.239.70的网卡信息,重启服务后查看dns已经变化
此时dig网址www.chenux.tech便已经成功
curl www.chenunx.tech的结果
总结:dns修改/etc/named.conf(注释两条,有从服务器allow-trasfer {允许连接的主机ip})
/etc/named.rft1912.zone,zone "*.com" {
type master/slave;
file "*.com.zone";或者file "slaves/*.com.zone"};
新建/var/named/*.zone,(从服务器会自动生成)
$TTL 86400
@ IN SOA dnsserver admin (版本 1D 1H 1W 3H )
NS dnsserver
NS dnsserver2 子域 NS dnsserver2
dnsserver A 本机ip
dnsserver2 A 子域ip