DNS—域名系统
1、DNS定义:DNS是“域名系统”的英文缩写。它作为将域名和IP地址相互映射的一个分布式数据库,
能够使人更方便地访问互联网。
当打开一个网站时,计算机需要知道该网站的 IP 地址以便与其建立连接并获取所需的内容。
DNS就是用于将网站的域名转换为 IP 地址的系统。下面是一个简单的方式来解释 DNS:
假设你正在寻找一个房子的地址。
你可能会在地图或者导航上搜索,或者询问附近的人。DNS就像一个全球性的导航系统,
它可以帮助您找到您要访问的网站的地址。
当你在浏览器中输入一个域名时,比如“www.example.com”,
你的计算机会向 DNS 服务器发送一个查询请求,
问它这个域名对应的 IP 地址是什么。这个查询会依次向上查找,
直到它找到能够提供该域名对应的 IP 地址的 DNS 服务器为止。
一旦你的计算机获得了网站的 IP 地址,它就可以向该地址发送请求,获取网站的内容。
换句话说,DNS 就像一本电话簿或者导航地图,它可以帮助你找到网站的地址,以便你能够访问它。
分布式网络存储技术是将数据分散地存储于多台独立的机器设备上。
分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,
利用位置服务器定位存储信息,解决了传统集中式存储系统中单存储服务器的瓶颈问题,
还提高了系统的可靠性、可用性和扩展性。
DNS的分布式互联网解析库
大型、分布式的互联网DNS解析库
根. 根域名DNS服务器:专门负责根域名
一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区)
.com(工商 企业)
.net(网络供应商)
.edu(教育机构)
.cn(中国国家域名)
.org(团体组织)
.gov (政府部门)
二级DNS服务器:专门负责二级域名的解析
.net.cn
.edu.cn
.com.cn
子域名DNS服务器:专门负责子域名的解析
.sina.com.cn
.pku.edu.cn
主机站点
mail
www
域名代理/注册/购买服务商
-新网,http://www.xinnet.com
-万网,http://www.net.cn
-中国互联,http://hulian.top
中国数据
域名体系结构
所有的域名必须以点结尾
www.qq.com.cn. www.baidu.com.cn.
根域名(.)
一级域名:.cn(中国) .us .tw .kr(韩国) .jp(日本) .hk(香港)uk(英国)
二级域名:.com.cn(中国商业组织) edu.cn(教育机构) .org.cn(非盈利) .net.cn(中国运营商)
三级域名:sina.com.cn nb.com.cn haixi.com.cn
组织域:.com .org .net .CC
国家域:.cn .tw(台湾) .hk(香港) .iq .ir .jp(日本)
反向域:114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用。
8.8.8.8是GOOGLE公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外网站的用户使用
223.5.5.5 和 223.6.6.6:阿里云DNS
IPV6 2400:3200::1 和 2400:3200:baba::1
江苏省南京市(中国电信)
首选DNS为:218.2.135.1 备用DNS为:61.147.37.1
DNS使用端口:DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS。
DNS域名长度限制:每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符
DNS作用:正向解析:根据域名查找对应的IP地址;反向解析:根据IP地址查找对应的域名
DNS的域名结构
DNS系统的结构为分布式数据结构
1、根域:位于树状结构最顶层,用"."表示
2、顶级域:一般代表一种类型的组织机构或国家地区;
如.net(网络供应商)、.com(工商企业)、.org(团体组织)、.edu(教育结构)、.gov(政府部门)、.cn(中国国家域名)
3、二级域:用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家部门统一管理
4、子域:二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
5、主机:主机位于域名空间最下层,就是一台具体的计算机
域名与IP地址之间是多对一的关系,一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中
在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,
由缓存服务器直接响应用户请求。
CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络
DNS服务器类型
缓存域名服务器:只提供域名解析结果的缓存功能,
目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。
构建缓存域名服务器时,必须设置根域或指定 其他 DNS 服务器作为解析来源。
主域名服务器:管理和维护所负责解析的域内解析库的服务器
从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1
IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从
DNS查询类型及原理
查询方式
递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,
若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。
此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,
则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。
此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)
查询原理过程
正向解析查询过程:
①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理以上过程成为递归查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
正向解析:根据域名查找对应的IP地(域名 --------> IP)
反向解析:根据IP地址查找对应的域名(IP---------->域名)
本地主机有关DNS映射文件(hosts)
hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名。
默认情况下,系统首先从hosts文件查找解析记录
hosts 文件的优先级高于DNS服务器,这是由 /etc/nsswitch.conf 文件规定的
hosts 文件只对当前的主机有效
hosts 文件可减少DNS查询过程,从而加快访问速度
Linux中有关DNS的映射文件
vim /etc/hosts
windos系统中有关DNS的映射文件
c:Windows\System32\drivers\etc\hosts
构建DNS域名解析器的目的
bind是开源软件,用于内网划分DNS,不同于外网,内网的DNS是不需要注册,
是方便内部进行使用和访问的有效手段
正向解析:
安装bind软件包
[root@192 yum.repos.d]# yum -y install bind
bind服务程序介绍
bind服务程序的区域配置文件(/etc/named.rfc1912.zones)用来保存域名和IP地址对应关系的所在位置。
在这个文件中,定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,
而没有包含具体的域名、IP地址对应关系等信息。
服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),
其中常用的master和slave指的就是主服务器和从服务器。
(二)、配置正向解析
(1)、先查看需要修改的配置文件所在路径
rpm -qc bind #查询bind软件配置文件所在路径
/etc/named.conf #主配置文件
/etc/named.rfc1912.zones #区域配置文件
/var/named/named.localhost #区域数据配置文件(模板文件,不可直接在原文件进行更改)
(2)、修改主配置文件
vim /etc/named.conf
options {
listen-on port 53 { 192.168.233.10; }; #监听53端口Ip地址(DNS服务器的IP))使用提供服务的本地IP,也可用any表示所有
listen-on-v6 port 53 {::1; }; #ipv6行如不使用可以注释掉或者删除
directory "/var/named"; #/var/named 是区域数据文件的默认存放位置
dump-file "/var/named/data/cache_dump.db"; #域名缓存数据库文件的位置
statistics-file "/var/named/data/named_stats.txt"; #状态统计文件的位置
memstatistics-file "/var/named/data/named_mem_stats.txt"; #内存统计文件的位置
allow-query { any; }; #允许使用本DNS解析服务的网段,也可用any,代表所有网段都可访问
.....
}
zone "." IN { #正向解析"."根区域
type hint; #类型为根区域
file "named.ca"; #区域数据文件为named.ca,记录了根域服务器的域名和IP地址等信息
};
include "/etc/named.rfc1912.zones"; #包含区域配置文件里的所有配置
(3)、修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones #在文件里有模版,可复制粘贴后修改
zone "ky32.com" IN { #正向解析"ky29.com"区域
type master; #类型为主区域
file "ky32.com.zone"; #指定区域数据文件为ky29.com.zone
allow-update { none; }; #S区域的动态更新的权限。
设置为 "none",这意味着不允许对此区域进行动态更新。动态更新通常在需要自动修改或添加DNS记录的情况下使用。
};
(4)、配置正向区域数据文件
cd /var/named/
cp -p named.localhost ky30.com.zone #需要保留源文件的权限和属主的属性复制(-p)
vim /var/named/ky29.com.zone
TTL可从全局继承,全局变量
$TTL 1D #设置缓存解析结果的有效时间 TTL(Time to Live)$TTL 1D 中,1D 表示 TTL 的时间为 1 天。
这意味着一旦 DNS 服务器检索到该记录,它将在 1 天内使用该记录而不是向其他 DNS 服务器发送新的查询请求
@ IN SOA ky30.com. admin.ky30.com. (
0 ; serial #更新序列号,一般是10以内的证书
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试间隔,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍然无法下载则放弃
3H ) ; minimum #无效解析记录的生存时间
NS ky30.com. #记录当前区域的DNS服务器的名称(必不可少)
А 192.168.233.10 #记录主机IP地址(必不可少)
IN MX 10 mail.ky30.com. #MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.233.30 #记录正向解析www.ky30.com对应的IP
mail IN A 192.168.233.31 #邮箱的正向解析地址
ftp IN CNAME www #CNAME使用别名, ftp是www的别名
* IN A 192.168.233.100 #泛域名解析, "*" 代表任意主机名
"@" 这里是一个变量,当前DNS区域名
IN 代表使用internet协议
SOA 解析类型,SOA,Start Of Authority 第一条解析,起始记录解析
"ky29c.com." 此为完全合格域名(FQDN) ,后面有个 "." 不能漏掉
A(internet Address):作用,域名解析成IP地址正向解析
AAAA(FQDN): --> IPV6 的正向解析 目前没用直接删除
PTR(PoinTeR):反向解析,ip地址 解析成 域名
NS(Name Server):,专用于标明当前区域的 DNS服务器,服务器类型为域名服务器
CNAME : Canonical Name,别名记录
MX(Mail eXchanger)邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等
SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。
检查启动文件格式
named-checkconf
named-checkzone ky30.com /var/named/ky30.com.zone
vim /etc/resolv.conf #修改完后立即生效
nameserver 192.168.233.21 //将主机IP设置为dns服务器地址
systemctl start named
systemctl stop firewalld
setenforce 0
第二台机器上:
vim /etc/resolv.conf
主机的DNS地址配置上
nameserver 192.168.233.21
nslookup www.baidu.com
反向解析:
[root@192 named]# vim /etc/named.rfc1912.zones
zone "233.168.192.in-addr.arpa" IN { ---反向IP
type master;
file "ky29.com.zone.local"; --指定区域数据文件为
allow-update { none; }; #更新该区域的ACL(访问控制列表),区域数据只能通过手动方式修改,而不能通过动态更新
};
cp -a ky30.com.zone ky30.com.zone.local
[root@192 named]# vim ky30.com.zone.local
$TTL 1D
@ IN SOA ky29.com. admin.ky30.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ky29.com. ---域名
A 192.168.233.21 ---主机地址
30 IN PTR www.ky29.com. ---访问192.168.233.20会访问www.ky29.com
31 IN PTR mail.ky29.com. ---访问192.168.233.30会访问mail.ky29.com
PTR:方向指针,反向解析的意思
[root@192 named]# systemctl restart named
[root@192 named]# nslookup 192.168.233.31
Server: 192.168.233.21
Address: 192.168.233.21#53
20.233.168.192.in-addr.arpa name = www.ky29.com.
主从服务器:
第一台master上的操作:
[root@192 named]# vim /etc/resolv.conf ---要把从服务器DNS地址也配到主上面
# Generated by NetworkManager
nameserver 192.168.233.21
nameserver 192.168.233.22
[root@192 named]# vim /etc/named.rfc1912.zones
zone "ky30.com" IN {
type master;
file "ky30.com.zone";
allow-transfer { 192.168.233.20; };
zone "233.168.192.in-addr.arpa" IN {
type master;
file "ky30.com.zone.local";
allow-transfer { 192.168.233.20; };
};
在第二个服务器操作:
yum -y install bind
[root@localhost yum.repos.d]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
[root@localhost yum.repos.d]# vim /etc/named.rfc1912.zones
zone "ky32.com" IN {
type slave;
file "slaves/ky32.com.zone";
masters { 192.168.233.10; };
};
zone "233.168.192.in-addr.arpa" IN {
type slave;
file "slaves/ky32.com.zone.local";
masters { 192.168.233.10; };
};
named-checkconf -z "$NAMEDCONF" 检查文件的问题
[root@localhost yum.repos.d]# cd /var/named/
[root@localhost named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback
[root@localhost named]# cd slaves/
[root@localhost slaves]# ls
ky30.com.zone ky30.com.zone.local #区域数据文件已经备份好了
[root@localhost slaves]vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.233.21
nameserver 192.168.233.22
-----验证-----
[root@192 named]# nslookup www.ky32.com
Server: 192.168.233.21
Address: 192.168.233.21#53
Name: www.ky30.com
Address: 192.168.233.21
[root@192 named]# systemctl stop named
[root@192 named]# nslookup www.ky32.com
Server: 192.168.233.22
Address: 192.168.233.22#53
Name: www.ky30.com
Address: 192.168.233.21
开启centos的缓存
CentOS默认没有启用DNS客户端缓存,安装nscd(NameServiceCacheDaemon,名称服务缓存守护进程)
包可以支持DNS缓存功能减少DNS服务器压力,提高DNS查询速度
[root@local ~]#yum -y install nscd
[root@local ~]#systemctl enable --now nscd
#查看缓存统计信息
[root@local ~]#nscd -g
#清除DNS客户端缓存
[root@local ~]#nscd -i hosts