## DNS 系统的作用
### 正向解析:根据主机名称(域名)查找对应的 IP 地址
### 反向解析:根据 IP 地址查找对应的主机域名
DNS 系统的分布式数据结构
域名全称www.sina.com.cn
www主机头
sina.com.cn DNS的域名结构 一般称为域名
.com 一般是商业企业 .net 一般代表网络组织 .org 一般代表官方站点 .edu 一般代表教育组织
在浏览器中输入www.sina.com.cn他会把请求先交给DNS服务器,把这个域名全称换位一个ip地址,然后通过ip去访问服务器
有的时候服务器不一定是网站可能是ftp服务器或者mail服务器,这时候为了便于标识可以在dns服务器上添加一个名称叫ftp,ftp.后面跟上域名,然后可以通过xftp 输入ftp://ftp.域名 也是通过dns服务器解析 解析完了后去找服务器
一个域名可以完成多个主机名称的解析
DNS服务器就是一张表,你问我我有就给你解析,没有就解析不了
DNS服务的的三种类型
缓存域名服务器
也称为 唯高速缓存服务器 通过向其他域名服务器查询获得域名 -> IP 地址记录 将域名查询结果缓存到本地,提高重复查询时的速度
缓存域名服务器没有数据文件,他的工作方式是:当客户端的访问请求发送到缓存域名服务器上来,他没有数据文件自然不能完成解析,这个服务器去问互联网当中的DNS服务器,问完以后他会在自己的内存中做缓存记录下来,当有别的客户端再问相同的内容的时候,他就不用出去问DNS服务器了,刚才解析了,直接告诉就可以了,这样的话效率就会提高了。
缓存服务器是没有数据文件的,他的作用就是通过缓存来提供解析,从而提高重复解析时的效率。(也就是我解析过了,你再问的时候我就不用再去问了,就快了)
主域名服务器
特定 DNS 区域的官方服务器,具有唯一性 负责维护该区域内所有域名 -> IP 地址的映射记录
在我这个服务器里面有完整的数据解析文件(也称为数据文件)并且这个数据文件是在本地产生的,也称为权威服务器。
从域名服务器
也称为 辅助域名服务器 其维护的 域名 -> IP 地址记录 来源于主域名服务器
如果主服务的负载 较高的情况下,那么主服务器的解析就慢了,就多加入几台服务器来协助解析,从服务器,这个服务器里面也有解析文件,这个解析文件就是解析的记录,他的数据解析文件源于主服务器,从主服务器复制过去的。
在生产环境下使用哪一种呢?
看情况,如果访问量不大的情况下构建主域名服务器,访问量大的时候构建主服务器同时构建从服务器,如果只是为了增加很多主机查询时的效率同时大家访问的东西差不多,这个时候就可以构建缓存服务器了。
使用软件 BIND(Berkeley Internet Name Daemon)
相关软件包
bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm (主包) bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm 依赖包 默认是装上的 bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm 依赖包 默认是装上的
bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm 非必须 一般都装上 增加dns服务器安全性
BIND 服务器端程序
主要执行程序:/usr/sbin/named 默认监听端口:53
启动named或named-chroot
主配置文件:作用:定义域名,并指明数据文件位置。
/etc/named.conf /var/named/chroot/etc/named.conf
设置虚根目录(为了安全)
保存 DNS 解析记录的数据文件位于:
/var/named /var/named/chroot/var/named/
设置虚根目录(为了安全)
构建主服务器步骤:
1安装bind 和bind-chroot
2修改配置文件
vim /etc/named.conf
options {
directory “/var/named”;
};
zone “test.com” in {
type master;
file “test.com”;
};
去找数据文件
数据文件要与域名相同
vim test.com
$ttl 86400
@ in soa test.com. wlb.163.com. (
2021111101
600
60
3600
600
)
in ns dns
dns in a dns服务器ip
www in a 网站服务器ip
保存退出 启动named-chroot
关防火墙
查看一下端口号
在本地测试dns能否工作 nslookup www.test.com本机ip
使用本机回环测试一下dns
nslookup www.test.com 127.0.0.1
创建从域名服务器
1安装 bind bind-chroot
2修改配置文件
vim /etc/named.conf
options {
directory “/var/named”;
};
zone “test.com” in {
type slave;
file “slaves/test.com”;
masters { 主服务器ip; };
};
启动named-chroot
关防火墙
解析www.test.com 127.0.0.1
创建缓存服务器
1安装 bind bind-chroot
2修改配置文件
vim /etc/named.conf
options {
forwarders { 主服务器ip;从服务器ip;};
};
启动named-chroot
关防火墙
解析www.test.com 127.0.0.1
解释:
options {
选项
directory “/var/named”;
目录 数据文件所在的位置
};
zone “test.com” in {
服务器能够解析的域名是test.com
type master;
类型 主 这个域名是在本地产生的,一会要去编写他
tyle “test.com”;
他的数据文件是test.com
};
解释:
$ttl 86400
ttl 生存时间 有效记录的生存时间 dns解析后在内存放的的时间
这个可以不写如果不写就等同于最后一行
@ in soa test.com. wlb.163.com. (
@=本域域名的意思
@到) 这是完整的一行内容,为了便于阅读才这样写的
soa :特殊的一行内容,在soa里面一行内容称为一行记录,这一行记录的类型叫soa 数据文件的开始 资源起始记录 必须存在的,这个记录里面写的内容格式是固定的必须这么写
test.com. 域名位置 wlb.163.com. 邮箱 前面有@了 所以改成. 了
2021111101 更新序号 数据文件里面内容如果被改变了要求管理人员将这个数字变大
从服务器会隔一段时间给主服务器发请求 有没有变化有我就更新
600 给从服务器用主服务器不用 刷新时间
每600秒向主服务器 发出请求
60 给从服务器用主服务器不用 重试时间
如果向主服务器发出请求失败了 重试时间60秒 隔60秒再去问
3600 给从服务器用主服务器不用 失效时间
如果连续的重试 3600秒 还失败 就不发了
600 无效记录的缓存时间
)
in ns dns
完整的写要加上 @ 本域中的 ns(服务器名称)
你这个域中的 dns 服务器名字叫啥 写的dns 并且在下面要写上本dns名称所对应的地址是啥写上
dns in a dns服务器ip
名称 地址 ip地址
www in a 网站服务器ip
主机头 地址