重要的DNS域名解析
- 一、DNS概述
- 1.1 DNS简介
- 1.2 本地hosts文件
- 1.3 DNS架构
- 1.4 查询方式
- 二、DNS域名解析原理
- 2.1 解析类型
- 2.2 原理详解
- 2.3 举例
- 三、bind服务端程序
- 3.1 什么是bind?
- 3.2 配置文件详解
- 3.2.1 主配置文件概述及内容主要格式
- 3.2.2 域名文件概述及内容主要格式
- 3.2.3 数据库文件概述及内容主要格式
- 四、正向解析
- 4.1 什么是正向解析?
- 4.2 正向解析实例
- 1)编辑主配置文件 /etc/named.conf
- 2)编辑域名文件 /etc/named.rfc1912.zones
- 3)根据域名文件中定义的名称,来建立数据库文件
- 4)修改dns
- 5)开启服务,进行域名解析
- 五、反向解析
- 5.1 什么是反向解析?
- 5.2 反向解析实例
- 1)编辑主配置文件
- 2)编辑域名文件
- 3)建立数据库文件
- 4)修改dns
- 5)开启服务,进行域名解析
- 六、主从复制(哨兵模式)
- 6.1 什么是主从复制?
- 6.1.1 主服务器和从服务器
- 6.1.2 主从复制的优缺点
- 6.2 主从复制实例
- 1)主服务器的配置
- 2)从服务器的配置
- 3)测试主从复制是否成功
一、DNS概述
1.1 DNS简介
DNS是什么
DNS(Domain Name System)是互联网中用于将域名转换为对应IP地址的分布式命名系统。
为什么要用DNS?
IP地址不便于记忆,DNS使用户可以通过易记的域名快速访问各种网络资源。
域名结构
域名采用层次结构表示,从右向左依次表示更高的级别。
以www.example.com为例
.com是一级域名
example是二级域名
www是主机名
#主机名用于标识特定的设备或计算机,而子域名用于对主域名下的特定部分进行分类或组织
域名解析类型
- A记录:将域名解析为IPv4地址。
- AAAA记录:将域名解析为IPv6地址。
- CNAME记录:将域名解析为另一个域名,可用于创建别名。
- MX记录:指定接收某域名邮件的邮件服务器地址。
- NS记录:指定管理域名解析的权威域名服务器。
- PTR记录:用于反向解析,将IP地址解析为域名。
DNS的风险
域名劫持、DNS欺骗和DDoS攻击等。
1.2 本地hosts文件
文件位置
/etc/hosts
本地hosts文件的作用
本地hosts文件用于在域名解析时将特定的域名与对应的IP地址进行映射。
在域名解析过程中,操作系统会首先检查本地hosts文件中是否存在与查询域名匹配的条目,如果有,则直接返回hosts文件中指定的IP地址,跳过后续的DNS查询过程。
缺点
-
过于分散
-
要手动更新文件
1.3 DNS架构
1)根域
使用“.”表示,位于域命名空间层次结构的最高层;
在根域服务器中只保存了其下层的一级域的DNS服务器名称和IP地址对应关系;
2)顶级域/一级域
顶级域位于根域下层,可以分为两类:
组织域(.com,.net,.org,.gov,.edu,.mil等)
国家域(.iq,.tw,.hk,.jp,.cn等);
3)二级域
二级域位于顶级域下层,是指为了在Internet上使用而注册到个人或企事业单位的域名;
4)子域
子域是根据具体情况从二级域中按部门或地理位置创建;
5)主机名
位于DNS域命名空间的最低层,主要指计算机的主机名;
1.4 查询方式
-
递归查询:发送解析请求后,等待结果返回即可,不需要逐级查询;
-
迭代查询:此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。
二、DNS域名解析原理
2.1 解析类型
1)正向解析:由域名查找IP地址;
2)反向解析:由IP地址查找域名;
2.2 原理详解
1.用户在浏览器中输入目标域名,应用程序发送域名解析请求;
2.先查询本地dns缓存,如果有历史解析记录,直接获取IP地址,进行访问;
3.如果没有,查询hosts文件中是否有相关配置,如果有直接获取IP地址;
4.如果没有,向本地DNS服务器发起递归查询,等待反馈结果;
5.本地DNS服务器先检查服务器的本地缓存,如果有历史记录,直接反馈IP地址;
如果没有,发起迭代查询;
7.首先,向根域服务器发起迭代查询,找到域名所属的一级域服务器;
8.再向一级域服务器发起迭代查询,找到域名所属的二级域服务器;
9.本地dns服务器会一直向下发起迭代查询,直到找到权威DNS服务器,向权威服务器发起递归查询,等待权威服务器反馈域名对应的IP地址
10.本地dns服务器将IP地址反馈给应用程序,递归查询结束;
2.3 举例
以访问www.baidu.com为例
1.用户输入www.baidu.com后,浏览器的应用程序发送解析请求;
2.先查询本机的缓存记录,查看是否有历史解析记录,如果有,直接访问,如果没有,去查看hosts文件是否有相关配置;
3hosts文件中有相关配置,获取IP地址,开始访问;
如果没有,向本地dns服务器发起递归查询;
4.本地dns服务器收到请求后,先查看本地dns缓存中是否有对应的解析结果,如果有,返回IP地址,如果没有,发起迭代查询;
5.本地dns服务器先向根域服务器发起迭代查询,根据根域服务器提供的信息,找到.com一级域;
6.本地dns服务器向.com一级域服务器发起迭代查询,根据一级域服务器提供的信息,找到baidu.com二级域,二级域服务器为权威服务器;
7.本地dns服务器向权威服务器发起递归查询,权威服务器反馈IP地址给本地dns服务器;
8本地dns服务器将域名的IP地址反馈给应用程序,递归查询结束。
三、bind服务端程序
3.1 什么是bind?
BIND是DNS服务器软件。
BIND 服务器可以提供域名解析服务,能够接收客户端的 DNS 查询请求,并返回相应的 IP 地址。
3.2 配置文件详解
yum -y install bind* #安装BIND服务
rpm -qc bind #查看所有配置文件
3.2.1 主配置文件概述及内容主要格式
主配置文件
#主配置文件比较重要,最好不要修改,所以将域名写到域名文件中
#路径#
/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; };
3.2.2 域名文件概述及内容主要格式
域名文件 ----指定域名的名称
#路径#
/etc/named.rfc1912.zones
#主要内容#
##正向解析##
zone "byyd.com" IN {
type master;
file "byyd.com.zone";
};
##反向解析##
zone "2.168.192.in-addr.apra" IN {
type slave;
file "dyyb.com.zone";
};
##主从复制##
###主服务器###
zone "byyd.com" IN {
type master;
file "byyd.com.zone";
allow-transfer { 192.168.2.101; };
};
###从服务器###
zone "byyd.com" IN {
type slave;
file "slaves/byyd.com.zone";
masters { 192.168.2.100; };
};
3.2.3 数据库文件概述及内容主要格式
数据库文件
#注意权限问题
/var/named/*.zone #自定义的,在域名配置文件中定义
#为什么将数据库文件放在这里?
#/var/named为named用户的家目录,以named用户身份运行
#root用户的权限过高
#比如复制文件 cp -p 才能成功
##主要内容,以正向解析为例##
##;后的内容为注释,注释可不写##
##要不就统一写缩写,要么就统一写完整##
$ORIGIN kgc.com. #域名的基础名称
$TTL 1D #默认生存时间,即生命周期
@ IN SOA master.kgc.com. admin.kgc.com.(
#@表示定义的域名 IN表示使用Internet协议 初始记录
0 ; serial #数据库的版本 版本相同表示主从服务器一致,主服务器的版本更改后,从服务器的版本也要修改
3600 ; refresh # 刷新时间,拉取时间。隔多久会同步配置
1800 ; retry # 失败重试等待时间
604800 ; expire #过期时间,一直无法拉取,这个时间后过期
86400 ; minimum [TTL]
)
; Name Servers #服务器名称,此注释可不写
#记录指定域名 域名名称
NS master
; DNS A Records #域名映射到IP地址,此注释可不写
#域名 正向映射 IP地址
master A 192.168.1.10
mail A 192.168.1.20
rndc reload #重载 专用于bind服务
四、正向解析
4.1 什么是正向解析?
正向解析(forward resolution)是将域名(例如:example.com)解析为对应的 IP 地址的过程
4.2 正向解析实例
1)编辑主配置文件 /etc/named.conf
自带网络解析功能(因为数据库文件已经配置完成)
只需要修改监听的地址 listen-on port 53,any表示所有
还有权限 allow-query ,any表示所有
2)编辑域名文件 /etc/named.rfc1912.zones
3)根据域名文件中定义的名称,来建立数据库文件
cd /var/named
cp -a named.localhost byyd.com.zone
# 配置模板 以kgc.com为例
vim byyd.com.zone
4)修改dns
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑网卡配置
systemctl restart network #重启网络服务
5)开启服务,进行域名解析
systemctl start named
host master.bbyd.com
五、反向解析
5.1 什么是反向解析?
反向解析技术用于将IP地址解析为主机名(域名)。
5.2 反向解析实例
systemctl stop firewalld.service #关闭防火墙
setenforce 0
1)编辑主配置文件
vim /etc/named.conf #编辑主配置文件,和正向解析相同
2)编辑域名文件
vim /etc/named.rfc1912.zones #编辑域名文件
3)建立数据库文件
vim 321.com.zone #编辑数据库文件
4)修改dns
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑网卡配置
DNS1=192.168.2.102 #将本机作为dns服务器
systemctl restart network #重启网络服务
5)开启服务,进行域名解析
systemctl start named #开启
host 192.168.2.200 #反向解析
六、主从复制(哨兵模式)
6.1 什么是主从复制?
主从复制是一种数据库复制技术,可以实现数据备份、读写分离和故障恢复等功能。
在主从复制中,一个数据库服务器充当主服务器(Master),而其他服务器作为从服务器(Slaves)
6.1.1 主服务器和从服务器
主服务器(Master)
- 主服务器是系统中的数据源,负责处理所有的写操作(如插入、更新、删除)。
- 它将这些写操作记录到二进制日志(Binary Log)中,二进制日志是主服务器上的一个持久化日志文件,记录了所有的写操作。
- 主服务器将二进制日志发送给从服务器,以便从服务器可以复制主服务器上的操作。
从服务器(Slaves)
- 从服务器是系统中的数据副本,可以用作备份、读操作和故障恢复。
- 从服务器连接到主服务器,并通过复制主服务器上的二进制日志来获取更新的数据。
- 从服务器不处理写操作,它只接收主服务器发送的二进制日志,并将其应用到自己的数据库上。
6.1.2 主从复制的优缺点
主从复制的优势
- 数据备份和容灾:从服务器可以作为主服务器的备份,提供数据的冗余和灾备能力。
- 读写分离:将读操作分发到从服务器上,减轻主服务器的负载并提高系统性能。
- 故障恢复:如果主服务器发生故障,可以快速将从服务器切换为主服务器,保持服务的连续性。
主从复制的缺点
- 主从复制是异步的,从服务器上的数据复制可能会有一定的延迟。
- 主从复制需要管理和监控,以确保复制的稳定性和一致性。
6.2 主从复制实例
1)主服务器的配置
systemctl stop firewalld.service #关闭防火墙
setenforce 0
vim /etc/named.conf #编辑主配置文件
vim /etc/named.rfc1912.zones #编辑域名文件
cd /var/named #切换到数据库文件所在路径
cp -p named.localhost byyd.com.zone #导入配置模板
vim byyd.com.zone #编辑数据库文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑网卡配置
systemctl restart network #重启网络服务
##测试正向解析是否成功##
systemctl start named #启动bind服务
host www.byyd.com #解析域名
systemctl stop named #关闭服务
2)从服务器的配置
systemctl stop firewalld.service #关闭防火墙
setenforce 0
vim /etc/named.conf #编辑主配置文件
vim /etc/named.rfc1912.zones #编辑域名文件
systemctl start named #开启bind服务
ls /var/named/slaves #查看数据库文件是否生成
3)测试主从复制是否成功
##由于没有配置数据文件,从服务器要解析域名,需要拷贝主服务器的数据库文件##
dig @192.168.2.102 www.byyd.com #测试
#dig为解析命令
#www.byyd.com为要解析的域名
#@192.168.2.102 表示用从服务器作为dns服务器解析