1.1DNS基础
1.1.1常见概念
- 网站访问流程
1.域名找ip
2.ip找三次握手
3.http协议通信
4.ip四次断开
- 术语
DNS——Domain Name System(域名系统)将网络中主机IP地址和域名之间做成一个映射表
域名——标识网络中某台主机或某个节点的名字
FQDN——(Fully Qualified Domain Name)全限定域名至少存在三个点(1个隐藏)的域名
同时带有主机名和域名的名称
- 概念
域名的组成
域名由英文字母,数字和英文连字符(-)组成,且不区分大小写
域名分层次的,允许定义子域,子域名与上级域名之间用"."分隔
——最上层节点的域名称为顶级域名
——第二层积点德域名称为二级域名
——依次类推
——在顶级域之上还有一个域名叫根域"."
=========================================================================
域名的管理
ICANN 因特网域名于地址管理机构——承担(域名系统管理,IP地址分配,协议参数配置,主服务器系统管理)
=========================================================================
根域 全球共有13组IPV4根域名服务器
10组在美国 12组在欧洲 1组在亚洲
=========================================================================
一级域名又称顶级域名
可分为三类(国家和地区,各类组织,反向域)
=========================================================================
二级域——具体某个组织(需要向域名管理机构申请付费才能获得使用权)
1.1.2工作原理
- 工作原理
DNS解析
递归解析——浏览终端,本地主机,本地dns
迭代解析——根域,顶级域,二级域(主机域 返回配套ip)
- 配置DNS
window——手工配置网络适配器的属性信息
Linux——
rocky dns=10.0.0.2;
Ubuntu
OpenEuler DNS1=10.0.0.2
配置文件——/etc/resolv.conf
/run/systemd/resolve/stub-resolv.conf
- 状态查看
服务——systemd-resolved
命令——resolvectl status
1.1.3查询类型
- 查询类型
递归查询——客户端向LocalDNS发起域名查询,locaDNS代为帮客户端去查找
迭代查询——客户端向LocalDNS发起域名查询,localDNS根据别人反馈信息再找另一个人要信息
- DNS缓存
Windows系统
ipconfig/displaydns 查看缓存
ipconfig/flushdns 清理缓存
Linux系统
resolvectl statistics 查看缓存
resolvectl reset-statistics 清理缓存
1.1.4解析类型
- DNS解析
域名系统解析——将域名转换为对应的IP地址的过程
- 解析类型
A记录 是最常有的DNS记录类型,用于将域名解析为IPV4地址
AAAA记录 是用于域名解析为IPV6地址的DNS记录类型
CNAME记录 是别名记录用于将一个域名解析为另一个域名
NS记录 是域名服务器记录,用于指定负责解析该域名的DNS服务器
PTR记录 用于反向解析IP地址为域名,通常用于邮件服务器的方向解析验证
MX记录 是邮件交换记录,用于指定接受电子邮件的邮件服务器
- 查找区域
正向查找区域 域名解析区域
反向查找区域 IP反向解析区域
1.1.5hosts文件
- 简介
hosts文件是一个没有扩展名的系统文件
直接定义域名于IP地址的对应关系
在向外进行DNS请求之前,先检查系统自己的hosts文件中是否有这个域名和IP的映射关系
- 路径
Windows系统 C:\Windows\System32\drivers\etc
Linux系统 /etc/hosts
1.1.6公有云DNS
- 基本流程
注册平台账号
准备域名 先购买域名,域名认证
域名解析设置
1.2检测工具
1.2.1dig命令
- 简介
(Domain Information Groper)域名查询工具——不会查询本地hosts文件中定义的域名和IP对应关系
- 格式
直接查看域名 dig domain
指定服务器查域名 dig @dns-server domain
dig domain @dns-server
指定类型查域名 dig -t q-type domain
dig domain q-type
指定ip解析域名 dig -x IP
dig -t ptr reverseIP.in-addr.arpa
1.2.2host命令
- 简介
根据域名查询得到对应的服务器IP地址,不会查询本地hosts文件中定义的域名和IP对应关系
- 格式
直接查看域名 host domain
指定服务器查域名 dig domain dns-server
指定类型查域名 dig -t q-type domain
指定IP解析域名 host IP
1.2.3nslookup命令
- 简介
查询DNS记录,查看域名解析是否正常,也可用来诊断网络问题
不会查询本地hosts文件中定义的域名和IP对应关系
也不能查询dns的递归和迭代
支持交互式和非交互式两种执行方式
- 非交互查询
直接查询域名 nslookup domain
指定服务器查域名 nslookup domain dns-server
指定类型域名 nslookup -t q-type domain
- 交互式查询
进入终端 nslookup
查看域名 > 域名
查看默认信息 > set all
指定dns服务器 > server 8.8.8.8
1.2.4rndc命令
定位:远程管理BIND DNS服务器的工具(默认使用TCP的953端口连接bind服务器)无需停止DNS服务器工作
1.2.5whois
定位 查询域名和IP地址注册信息的工具
1.3DNS配置
1.3.1systemd-resolved
- 定位
有systemd提供的DNS解析器守护进程,旨在提高系统的DNS解析性能,并为用户提供更多的配置选项,系统通过它对外进行dns请求
- dns配置文件
/etc/resolv.conf Rocky9系统
/run/systemd/resolve/stub-resolv.conf ubuntu系统
- 优先级
全局级别 /etc/systemd/resolved.conf
定制级别 Centos系统 /etc/resolv.conf
Ubuntu系统 /etc/resolv.conf
/run/systemd/resolve/stub-resolv.conf
1.3.2bind部署
- 环境部署
yum install bind -y
apt install bind9 -y
Ubuntu系统多开放了本地主机IP地址的端口,而Centos主机上默认没有开启
- 端口
named默认会占用TCP和UDP的53端口
953是给rndc管理工具使用的
1.3.3配置解读
- Rocky系统
/etc/named.conf 核心配置文件
/var/named 配置目录
- Ubuntu系统
/etc/bind 配置目录
特点:拆分成更多的专用配置文件
- 跟地址
bind已经内置了13个跟域名服务器地址
Ubuntu系统 /usr/share/dns/root.hints
Rocky系统 /var/named/named.ca
- Priming查询
DNS客户端在发起正式的域名解析请求之前,先通过一种机制获取当前所有根服务器的信息
查询过程:
获取Root Hints
选择根服务器
查询最新的根服务器列表
缓存并更新
查询意义:
提高解析效率
增强解析可靠性
支持DNS系统的分布式特性
1.3.4配置属性
- Rocky系统
/etc/named.conf
默认的工作目录是:/var/named
- Ubuntu系统
/etc/bind/named.conf.options
默认的工作目录是:/etc/bind , /var/cache/bind
- 配置选项
全局配置 options{}; listen -on port 53 {127.0.0.1;};
allow -query {localhost;};
forwarders {1.1.1.1;};
日志子系统配置 logging{};
网络自定义集合 acl 地址集合
视图 view 配置集合
- 默认域配置
Rocky系统 /etc/named.conf
Ubuntu系统 /etc/bind/named.conf.default-zones
该文件中定义了要解析的域名与具体解析规则之间的对应关系
格式
1.3.5配置规则
- 作用
定义域的具体解析规则
该文件有多条资源记录组成,每一行都是一条资源记录RR
- 文件
Ubuntu系统 /etc/bind/db.*
Rocky系统 /var/named/named.*
- 格式
Owner:记录的所有者,通常是一个域名
TTL:生存时间
CLASS:类,指示记录所属的类别
TYPE:类型,指示记录类型
RDATA:资源数据,随CLASS和TYPE的变化而变化,用于描述与记录相关的具体信息。
- 常见的type
A 将FQDN解析成IPV4地址
CNAME 将域名解析到另一个域名
AAAA 将FQDN解析成IPV6地址
PTR 用IP地址反向解析域名
SOA 权威区域的开始
1.4DNS实践
1.4.1DNS自解析
- 步骤
1.定制zone配置
2.定制解析规则
3.修改客户端的dns解析地址
4.测试
1.4.2DNS主从
- 同步原理
定位:在不同的DNS服务器之间保持解析结果的一致性
特点:主服务器负责处理DNS查询请求并更行DNS记录
从服务器则赋值主服务器上的数据,以提供备份和负载均衡
- 同步方式
主服务器向从服务器推送数据(PUSH)
从服务器向主服务器拉取数据(PULL)
- 配置特点
1.4.3主从同步实践
- 同步特点
序列号需要更改
- 端口作用
TCP53端口主要用于主从之间的数据同步
UDP53端口主要用于对外提供域名解析服务
- 技巧
1.序列号更改
2.删除历史数据库文件
1.4.4反向解析
- 定位
通过IP地址逆向查找对应的域名
- 场景
垃圾邮件拒绝接受
识别网络中的恶意IP地址
- 配置
1.4.5DNS子域
- 简介
在主域名(或称为父域)下创建的更小的,相对独立的域
将子域委派给其他的DNS服务器解析,实现分布式DNS服务
- 逻辑
1.主dns上定制子域服务器的解析
2.定制子域的配置
3.客户端测试效果
1.4.6DNS转发
- 定位
将当前无法解析的域名,转发给另外的DNS解析
如果还是无法解析,在提交互联网
- 转发策略
全局转发 所有无法解析的域名请求都转发到指定的DNS服务器
特定区域转发 仅将特定区域的域名请求转发到指定的DNS服务器
- 转发模式
First模式:
首先利用上游DNS服务器的解析能力
同时保留本地DNS服务器递归查询能力的网络环境
Only模式:
完全依赖上游DNS服务器进行域名解析的网络环境
- 配置流程
1.本地dns服务上,开启转发能力
2.在指定dns服务器上,按照普通方式部署dns解析能力
1.4.7DNS视图
定位:根据客户端的来源IP地址来解析不同DNS记录的功能
- 配置流程
1.取消默认的zone入口
2.增加acl规则和view视图
3.定制各自的zone文件
4.综合测试
1.5CDN
1.5.1基础知识
- CDN
内容分发网络
基于IP网络而构建,基于内容访问与应用的效率要求、质量要求和内容秩序而提供内容的分发和服务。
目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
- 内容
内容存储
负载均衡
网络请求的重定向
内容管理
- GLSB
全局负载均衡
三种方式:
1.基于DNS实现 最通用
2.基于重定向实现
3.基于路由协议实现
1.5.2智能DNS
定位:提供商返回的地址是经过智能策略选择后的结果,判断哪个IP地址离用户最近,然后将该地址返回给用户。
特点:别名措施,智能策略
1.5.3CDN原理
定位:CDN其实就是建立在智能DNS的基础之上,将DNS服务器的功能加强了
不仅仅包含了域名解析的功能,而且对dns记录缓存功能进行了加强,
然后又基于缓存的定位,将其独立出来形成一个特有的功能
然后将更多的技术容纳进来,可以缓存更多的内容。
简而言之,CDN其实是多缓存服务器+智能DNS
- 主要功能
网络通信功能:高质量的IP通信网络,智能DNS解析功能
内容管理功能:对缓存功能加强
- 流程
将DNS的解析功能与服务器本身的存储功能整合在一起了
将原来用户和web服务器之间的通信,拆分为了(Web服务器,CDN节点,CDN边缘节点,用户端)
1.5.4CDN实践
- 内容加速
刷新:系统自动清除CDN节点上的垃圾数据,访问URL时,直接回源获取最新数据,并缓存到CDN节点
预热:在业务高峰前预热热门资源,也可以预热流量较低的加速域名,来提高缓存命中率。
- 资源的获取方式
目录:当操方式选择的是刷新时,需要选择该参数
URL:当操方式选择的是刷新或预热时,需要选择该参数
- 收费模式
带宽:按照每日的峰值带宽计费。
流量:按照每日从CDN节点流出的实际流量计费