一、DNS域名管理系统
1.1 DNS概述
DNS(Domain Name System)域名管理系统
域名:由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够使人更方便地访问互联网,而不用记住能够被机器直接读取的IP地址。
域名就是ip的别名,ip不好记忆
域名与ip的关系是否是一对一? 不是的,服务器可能都具备负载均衡的策略
www.baidu.com
www.google.com
ping www.baidu.com -> 183.2.172.17
计算机通过IP地址进行互相访问。由于IP地址过于复杂,域名可以代替IP实现计算机的访问(高级/上层应用,底层还是IP地址)。
每个域名都会通过DNS服务器解析为对应的IP地址。
DNS的正向解析
将主机域名转换为对应的IP地址,以便网络程序能够通过主机域名访问到对应的服务器主机。
域名 --> IP(A记录)
DNS的反向解析
将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名。
IP --> 域名(PTR记录)
1.2 DNS的结构
域名:www.it.com
DNS结构:www.it.com. -> 从右向左解析
www
- 这是主机名或特定的服务标识符。在这个例子中,“www”通常指代的是提供网站服务的主机。
不过,这可以是任何东西,比如“mail”,“ftp”,或其他你想要命名的主机或服务。
it
- 这是二级域名(Second-Level Domain, SLD)。在许多情况下,这是用户自定义的部分,用来标识具体的组织、品牌或项目。
com
- 这是最顶级域名(Top-Level Domain, TLD)。
它代表了域名的最高层级分类,常见的有.com
(商业实体),.org
(非营利组织),.net
(网络服务提供商)。
以及国家代码顶级域名如.cn
(中国),.uk
(英国)等。
根域(.)
在整个DNS系统的最上方一定是:(小数点)这个DNS服务器(称为root),也叫"根域"。
根域全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个(位于英国和瑞典),亚洲1个(位于日本)。
一级域名(顶级域|国家域)
com、net、edu、gov、org、cc、iol、cn、uk、us、ru、ja、ko
-
.com:商业公司
-
.net:互联网公司
-
.edu:教育(中小学、高中、大学...)
-
.gov:政府
-
.io:存储设备,redis
-
.cn:中国域名(国家域)
二级域名(自己购买管理)
qq.com、baidu.com、google.com
域名机构
收费(新网|万网)
老牌免费域名:TK顶级域名、TK域名DNS、TK域名商
1.3 DNS工作原理
递归查询(Recursive Query)
查询过程:在递归查询中,客户端(如用户的计算机)向本地DNS服务器发送域名解析请求。
如果本地DNS服务器没有所需的DNS记录,它将代表客户端进行进一步的查询,直到找到目标记录或确定无法找到为止。
之后,它会将结果返回给客户端。
特点
-
客户端只需要发起一次请求,并等待最终的结果。
-
本地DNS服务器承担了更多的工作,因为它需要追踪整个查询过程。
-
更适合于普通用户,因为用户不需要关心复杂的查询流程。
适用场景:通常用于客户端与DNS服务器之间的交互。
迭代查询(Iterative Query)
查询过程:在迭代查询中,当客户端(通常是另一个DNS服务器)向另一台DNS服务器发出查询请求时,若该DNS服务器没有直接的答案,则不会为客户端继续查询其他DNS服务器。
相反,它会返回一个指向下一个应该被查询的DNS服务器的地址。
客户端随后需要自行向这个新的DNS服务器发起查询,这个过程可能会重复多次,直到获得最终的IP地址或确定找不到为止。
特点
-
客户端需要自己完成多次查询请求,直到得到最终答案。
-
每个DNS服务器只负责提供已知信息或指引到更合适的DNS服务器,负担较小。
-
更适合于DNS服务器之间的查询。
适用场景:通常用于DNS服务器间的通信,特别是根DNS服务器和顶级域(TLD)服务器之间的查询。
总结
-
客户端负担:递归查询中小,因为只需发起一次请求;迭代查询中较大,因为可能需要发起多个请求。
-
服务器负担:递归查询中较大,因为服务器要负责完整的查询过程;迭代查询中小,因为只需返回最佳查询点或主机地址。
-
实际应用:两者常常结合使用,在实际的DNS解析过程中,客户端通常首先发起递归查询给本地DNS服务器,而本地DNS服务器则通过一系列的迭代查询来完成解析过程。
二、DNS服务器的搭建(重要)
2.1 DNS服务器端软件
DNS的域名解析都是udp/53
主从之间的数据传输默认使用tcp/53
DNS服务器端软件:
Bind是一款开放源码的DNS服务器软件,由美国加州大学Berkeley(伯克利)分校开发和维护,全名为Berkeley Internet Name Domain。它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
2.2 DNS服务器搭建步骤
第一步:环境准备
IP | hostname | type |
---|---|---|
192.168.66.138 | dns-server | DNS服务 域名解析使用 |
192.168.66.143 | web-server | web服务 提供web业务访问 |
192.168.66.144 | client | 测试访问web服务 |
更改主机名称与IP地址(可以不改这个ip)
# hostnamectl set-hostname client.it.cn
# hostnamectl set-hostname dns.it.cn
# hostnamectl set-hostname web.it.cn
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=none
IPADDR=10.1.1.11
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
# 更改UUID编号的后3位,必须是唯一的
关闭防火墙与SELinux
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
-- 这个可以不搞
# vim /etc/selinux/config
SELINUX=disabled
配置YUM源(有网配置公网YUM源、无网就配置光盘或自建YUM源)
yum clean all
yum makecache
第二步:安装DNS软件
DNS服务器:
# yum install bind -y
第三步:DNS正向解析配置(域名=>IP)
对named.conf以及named.rfc1912.zones进行备份
cp /etc/named.conf /etc/named.conf.bak
cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
-
/etc/named.conf
主要配置访问权限控制(哪些IP或哪些主机可以访问DNS服务器) -
/etc/named.rfc1912.zones
主要定义域名如何解析(正向解析),解析到具体哪个IP地址
第四步:named.conf主配置文件详解(访问权限控制)
vim /etc/named.conf
添加任何主机都可以访问的权限:
第五步:zones子配置文件详解(域名应该指向哪个IP地址)
vim /etc/named.rfc1912.zones
补充:allow-update(是否允许更新)
第六步:设置域名配置文件
cd /var/named
cp -p /var/named/named.localhost /var/named/lsh.conf
# 扩展:-p 代表复制文件时保留文件的原有属性
第七步:编辑lsh.conf文件,定义域名的指向
vim /var/named/lsh.conf
在这个DNS区域文件配置中,
www
是一个域名的标识符,通常用来指代网站的主机名。具体来说:
www
这一行表示一个A记录(Address Record),它将域名映射到一个IPv4地址。www.it.cluster.
(完整形式)指向了IP地址192.168.66.143
。当用户在浏览器中输入
www.it.cluster
时,DNS系统会解析这个名称,并返回对应的IP地址192.168.66.143
,从而使用户的浏览器能够找到并连接到托管在该IP地址上的网站服务器。
文件详解
# $TTL 缓存的生存周期
# @ = zonename = it.cluster 当前域名
# IN 互联网
# SOA 开始授权
# rname.invalid. 管理员的邮箱
# NS dns服务端 nameserver
# A ipv4
# AAAA IPV6
# CNAME 别名
# MX 邮件交互记录 5 数字代表优先级 数字越小优先级越高
# 0 ; serial 更新序列号
# 1D ; refresh 更新间隔(从服务器下载数据)
# 1H ; retry 失败重试
# 1W ; expire 区域文件的过期时间
# 3H ) ; minimum 缓存的最小生存周期
# D Day、H Hour、W week
设置:
第八步:检查named.conf与zones文件
-- 检查主配置文件
named-checkconf /etc/named.conf
# 检查域名配置文件
named-checkzone lsh.com lsh.conf
第九步:启动DNS服务(named)
-- 这里我们安装的服务名字叫 - bind
就如mysql 它的服务名叫mysqld
systemctl restart named
systemctl enable named
netstat -tunlp | grep named
第十步:添加DNS服务器
vim /etc/resolv.conf
改成这样:
如果本机ip不行换成固定ip127.0.0.1的形式
# 永久添加
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=192.168.66.138
最后测试: