一、DNS 基本信息解释
DNS(Domain Name System)是互联网上的一项服务,作为将域名和 IP 地址相互映射的分布式数据库,方便人们访问互联网。DNS 使用53端口,通常以快速的 UDP 数据传输协议来查询,若未查询到完整信息,则会以 TCP 协议重新查询,因此启动DNS时会同时启动 TCP 以及 UDP 的 port53。
域(Domain) | www.baidu.com --- 域名 baidu.com --- 域 www --- 名 |
解析(解释分析) | www.baidu.com ----> 1.2.3.4(解析过程,把名字变成 IP 的过程叫做正向解析) 1.2.3.4 ---> www.baidu.com(把 IP 变成名字的过程叫做反向解析) |
分布式 | 把复杂的业务拆分成若干步骤,由不同的服务器分别完成 如:1+2+3+4=10(非分布式) 1+2=3 3+4 =7 3+7 =10(分布式) |
二、DNS优化之高速缓存
内网的一台主机把公网 DNS 数据缓存到本地,通过自己搭建的 DNS 把缓存数据在内网共享。内网主机就可以直接访问内网的高速缓存服务器来对与上网进行加速(减少了从公网拿到域名和 ip 对应关系的时间)
1.实验环境设定
重新克隆两台虚拟机,ip 分别设为 192.168.10.10(服务器)和 192.168.10.20(客户端)。
第一台虚拟机(dns1)配置 ip :
第二台虚拟机(dns2)配置 ip :
在两台虚拟机中搭建软件仓库,都进行以下操作。
为了更好的区分两台主机,将第一台虚拟机(192.168.10.10)的主机名改为 dns1,将第二台虚拟机(192.168.10.20)的主机名改为 dns2。
2.DNS 高速缓存的配置过程
1)安装 dns:dnf install bind.x86_64 -y
2)如果系统开启 firewall,那么需要对 dns 的服务器放行,并启动服务。
3)在 dns1 中配置 dns,将 listen-on(监听)的 ip 改为 any,在系统所有接口上开启53端口,配置文件修改后要重启服务。
listen-on port 53 { any; }; #在系统所有接口上开启53端口
allow-query { any; }; #允许所有人查询dns上的信息
forwarders { 8.8.8.8; }; #指定当本地没有要查询的信息时,去 8.8.8.8 缓存信息
3.DNS 高速缓存的测试过程
1)正常测试:
①在两台测试主机中指定 dns 服务器地址为 192.168.10.10。
②在服务器 dns1 中检测域名,消耗时间为71毫秒。
③在客户端 dns2 测试同样的域名看时间,消耗时间1毫秒,实现加速。
2)测试报错信息:
报错1:
① 服务没开,或没安装
② 火墙没有放行 dns 服务
③ dns本身设置未开放网络功能(端口未在 ip 上开放)
报错2:
dns 的配置中限制了当前主机访问服务的请求(被拒绝)
解决方法:在服务器的配置文件 allow-query 中改为 any ,允许所有人查询 dns 上的信息。
三、DNS的正向解析
1.DNS正向解析的作用
正向解析允许用户通过域名(如:www.baidu.com)访问目标服务器,dns 服务器负责把域名解析为对应的 ip 地址,建立网路连接。
2.DNS正向解析搭建方法
1)安装软件
2)火墙设置
3)开启服务
4)编写zones文件创建要维护的域
/etc/named.rfc1912.zone:dns的域名维护子配置文件,文件被包含在主配置文件中
zone "lxt.org" IN { #引号内表示维护的域名type master; # 当前服务器位主dnsfile "lxt.org.zone"; # 域名A记录文件allow-update { none; }; # 允许更新主机列表};
5)建立维护域所需要的数据文件
解释说明:
SOA
|
授权起始
|
serial
|
域名版本序列号
|
refresh
|
刷新时间(辅助dns)
|
retry
|
重试时间(辅助dns)
|
expire
|
过期时间
|
minimum
|
A记录最短有效期,如果$TTL被设定,那么以设定值为准
|
NS
|
nameserver(域名)
|
A
|
域名 A 记录
|
6)重启服务
7)测试
在测试主机中,增加 nameserver。
解析成功。
四、部署辅助dns的方法
遇到的问题:由于 dns 访问人数太多,导致 dns 相应速度变慢,甚至会因为访问压力太大导致 dns 崩溃
解决思路:当 dns 只有一台时会出现上述问题,dns 可以部署一个slave dns ,slave dns同步主 dns 的数据,并且可以对外提供 dns 的功能,这样主dns 和辅助 dns 就可以分摊客户的访问压力。
1.部署方法
1)开启新的操作系统作为辅助 dns (即 dns2,dns1 为主 dns)
2)安装dns软件,并打开火墙
3)完成dns的基本配置然后重启服务
4)配置辅助dns
type slave #dns 所维护的域是辅助的
masters{192.168.10.10;} #表示主 dns 为192.168.10.10
5)测试
在测试主机中设置 dns 的 ip 分别为 master 和 slave。
在主机1(dns1)中:指定的是 master 的 ip。master 的 A 记录是192.168.10.10。
在主机2(dns2)中:指定的是 slave 的 ip。在辅助 dns 上可以直接看到数据(A 记录信息)。
2.辅助dns的数据同步优化
当主 dns 在更新域名的A记录辅助 dns 默认是不同步的,这样就会出现数据差异,使用辅助 dns 作为解析服务器的用户得到的地址就是错的。
解决方法:让主 dns 主动通知辅助 dns,我的A记录已经被更改,请同步数据到辅助 dns 上即可
1)在主 dns 中设置同步参数
also-notify { 192.168.10.20; }; #当本机A记录发生改变后主动通知20主机
2)测试
遇到问题:在辅助 dns 做重新同步时如何确认主 dns 上的A记录被改变?
解决方法:使用数据文件中的 serial,此值变化代表A记录更新。serial 值只能做增量变化,最大10位。
①在主 dns 中更新A记录并更新 serial ,由原始值0改为1,更改A记录信息为192.168.10.100。
②查看在主dns(dns1)中的更改生效情况,更改生效,A记录信息为192.168.10.100。
③查看辅助dns(dns2)中的A记录是否自动更新,可看到辅助 dns 的数据自动更新为192.168.10.100。