kaixin
Published on 2023-11-09 / 8 Visits
0

DNS与CDN

DNS

1.访问过程

例如BS架构:

  • 浏览器(客户端) + 服务端的组成。
  • 浏览器访问URL时,发送请求(域名解析)找到相应的服务的ip地址,根据端口找到服务器上准确的服务。
  • 服务端,等待客户端的连接,然后在进行通信(tcp或者udp),响应客户端的数据。

image-20250303230737406

访问过程:

  1. url合成,用户在浏览器输入符合规则的url,解析url是否正确,浏览器智能寻找缓存。
  2. dns域名解析,解析出来当前域名的对应服务器的ip地址。
  3. 建立tcp链接,进行三次握手。
  4. 服务器响应数据给客户端。
  5. 关闭tcp链接,进行四次挥手。

img-12132132

访问一个真实的网站:

0.客户端  		 确保你的机器可以上外网
    # 客户端需要检查网线是否能够通信

1.客户端   	 浏览器输入网站url,点击回车 
    # 需要检查url格式是否正确
        正确输入:www.baidu.com 但是输入为:www.baidu.con 那么肯定是不正确的

2.客户端        本地进行dns域名查找、查找域名对应的ip地址  
    # 需要检查,决定是否能根据域名url解析到服务器ip地址
        1.etc/hosts本地dns文件是否有存储,是否正确
        2.etc/resolv.conf,检查服务器的dns服务器地址是否正确

3.客户端        直接访问该服务器的ip,开始tcp三次握手过程
    # 进行3次握手确定链接是否能够通信

4.客户端        建立tcp连接后,发起http请求,构造请求报文,会发出多次请求
    # 客户端链接后进行收发http响应

5.服务端        接收到http请求后,解析请求,响应请求,回复多次
    # 服务端接受客户端发送http响应,服务端进行手法http请求响应

6.客户端        浏览器看到响应内容,浏览器解析响应数据,渲染结果在屏幕上
    # 获取http响应渲染到浏览器上进行显示

7.客户端        结束访问,关闭网站,完成tcp四次挥手
    # 关闭链接后(叉掉浏览器)进行断开链接(根据服务器设置的长连接断开时间)

image-20230928183306175

2.DNS知识点

# 在日常生活中使用电脑:登录qq可以,但是无法使用浏览器访问网页。
    1.登录qq说明,你的电脑可以进行联网。
    2.网页打不开,那么就是dns服务器的问题。
    3.检查你的dns配置是否正常。
        linux:
            /etc/hosts # 主机文件配置
            /etc/resolv.conf # dns配置

# dns劫持:黑客修改了你的dns地址,修改成为黑客自己搭建的dns服务器。

image-20250303231954615


2-1.IP

2台电脑通信:

image-20250303232301648

多台电脑通信:

image-20250303232510380

全世界电脑通信:

image-20250303232611859

公网:
    开放网络,有互联网运营商运营,允许全球范围内的设备通过ip地址进行通信。
    1.范围:覆盖全球。
    2.开放性:只要网络接入,就可以访问公共资源。
    3.ip地址:公网使用的是全球的ip地址。
    4.安全性:由于公网是开放性的,数据传输容易受到攻击(ddos或者数据盗取),需要额外的操作。
    5.用途:可以访问公共资源,视频,文章等。

局域网:
    局域网是一种在有限地理范围内(如家庭、办公室、学校等)的计算机网络,通常由路由器、交换机和网线等设备组成。局域网内的设备可以高速通信,但通常对外部网络有限制。
    1.范围:只有在局域网内(交换机或者路由器)可以进行访问,如单个建筑或校园。
    2.私有性:局域网内的设备通常使用私有IP地址(如192.168.x.x、10.x.x.x等),这些地址在局域网内有效,但无法直接在公网中使用。
    3.高速通信:局域网内的设备可以高速通信,通常通过有线(如以太网)或无线(如Wi-Fi)连接。
    4.安全性高:局域网需要通过路由器的防火墙,访问控制列表(ACL)等技术限制外部访问。
    5.局域网主要用于内部资源共享(如文件共享、打印机共享)、内部通信(如企业内部网络)等。


# 本机访问外网资源:
    通过路由器连接到公网。路由器会将局域网的IP地址转换为公网IP地址(通过NAT转换),实现访问外网资源。
    

image-20250303234747758


2-2.NAT转换

# NAT:网络地址转换(NAT,Network Address Translation)

1.NAT是什么?
    1.nat是一种网络技术,用于将ip地址空间(如私有ip)转换为另外一个ip地址空间(公网地址)
    2.目的:节省公网IP地址:由于IPv4地址有限,NAT允许多个设备共享一个公网IP地址。
    3.目的:增强安全性:隐藏局域网内部的设备,防止直接从公网访问。

2.私有IP地址与公网IP地址
    1.私有IP地址:如192.168.x.x、10.x.x.x、172.16.x.x等,这些地址仅在局域网内有效。
    2.公网IP地址:由ISP(互联网服务提供商)分配的全球唯一IP地址,用于公网通信。

# 工作原理:通过地址映射来实现的。
    当局域网的设备尝试访问公网时路由器会执行:
        1.路由器截获设备发出的网络请求(如访问外部网站)
        2.路由器将设备的私有IP地址和端口号映射到路由器的公网IP地址和一个临时端口号。
        # 例如:局域网:192.168.85.1 1111 映射到公网:111.111.111.2 7777
        3.路由器将请求中的私有IP地址替换为公网IP地址,并记录映射关系。
        4.路由器将修改后的请求发送到公网。

    当接受到响应的数据时:
        1.路由器收到响应报文。
        2.路由器根据记录的映射关系,将响应报文的目标IP地址和端口号转换回私有IP地址。
        3.路由器将响应报文发送回局域网内的设备。

image-20250304224857690


2-3.NAT映射表有什么字段

它确实会维护一个NAT表(或映射表),用于记录私有IP地址与公网IP地址之间的映射关系。这个表是动态生成和维护的,通常包括以下信息:

字段 含义
私有IP端口号 局域网内设备的IP地址。
私有IP地址 设备使用的端口号。
公网IP地址 路由器的公网IP地址。
公网端口号 临时分配的端口号。
协议类型 如TCP或UDP。
超时时间 映射关系的存活时间。

例如:

  • 局域网内有两台设备(192.168.1.2192.168.1.3)同时访问公网,路由器的公网IP地址为203.0.113.45,NAT表可能如下:
私有IP地址 私有端口 公网IP地址 公网端口 协议
192.168.1.2 12345 203.0.113.45 50001 TCP
192.168.1.3 23456 203.0.113.45 50002 TCP

NAT的类型:

  1. 静态类型:将一个私有IP地址永久映射到一个公网IP地址(通常用于服务器)。
  2. 动态类型:临时将私有IP地址映射到公网IP地址池中的一个地址。适用于小型企业或者家庭网络,临时访问公网设备(员工用笔记本远程办公),可以利用有限的公网ip资源。
  3. 端口地址转换(PAT,也称NAPT):将多个私有IP地址映射到一个公网IP地址,通过端口号区分不同设备的请求。这是最常见的NAT形式(家用的,家庭网络、小型办公室网络以及一些大型住宅区或商业区域中)。根据不同的公网端口号来向实现具体是哪个设备访问因为NAT映射表中有记录。

2-2.域名解析的流程

域名解析:

  • 由于互联网中的域名太多,全球的用户也太多,因特网的域名采用的是树状结构命名。 任何一个连接到网络中的机器,都有一个唯一的层次结构名字,叫做域名(domain name)。
  • 域、就是名字空间中可被划分、管理的部分。语法上要求,域名由标号(label)组成,每一个label之间通过小数点隔开。
  • 域名可以被分为多个子域,子域还可以继续划分子域的子域,因此形成了:顶级域名,子域名,主域名。
  • 2级域名是收费的,3级域名是免费设置的。

域名划分:

名称 作用
. 根域名,在整个dns系统中最上方的 . 就是这个dns服务器,被称为 root 也就是根域,根域 (13台 全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。
顶级域名(.com、.cn、.net等等) 顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,比如 kaixinblog.cn 那么cn就是顶级域
二级域名也就是主域名(收费) 比如 kaixinblog.cn 那么kaixinblog就是二级域名
三级域名(免费) 比如 www.kaixinblog.cn 那么www就是三级域名

image-20250304231227390

域名机构:
    收费:新网https://www.xinnet.com/、万网https://www.hichina.com/ 等等
    免费:tk域名http://www.dot.tk/zh/index.html


# 域名验证过程: 当访问 movie.huya.com 会怎么样,是一层一层的进行解析
    1.解析主域名(二级域名) huya.com
    2.在解析顶级域名(一级域名) .com
    3.请求发送给根域(.)
    4.从根域返回,顶级域名的ip .com
    5.在通过顶级域名的ip,返回主域名的ip  huya.com。 # 在根据主域名的注册服务商,来决定3级域名的ip是多少
    6.客户端拿到主域名ip,访问服务器。
    

2-2-1.DNS服务器分层结构

分类 作用
根DNS服务器 读作root nameserver。当本地域名服务器在本地找不到解析记录时,第一步来这里找,能够拿到顶级域名服务器的信息。
顶级域名服务器 读作,top level domain nameserver(tld)。负责管理顶级域名下注册的二级域名。如当你访问www.yuchaoit.cn,首先找到顶级域名服务器.cn,然后找到二级域名yuchaoit.cn所在的权威域名服务器地址。
权威域名服务器 读作authoritative nameserver。维护该区域内的域名和ip之间的解析关系,也就是我们常见的如阿里云域名注册商,或是腾讯域名注册商。也就是购买域名的服务商的dns ip地址。
本地域名服务器 读作local DNS或是DNS resolver。也就是用户本机自动获取的DNS地址,或是运营商提供的DNS,或是阿里、腾讯公共DNS服务器等。
DNS域名解析
浏览器客户端需要正确查询、解析出域名的的ip地址,才能建立与服务器的连接
    1.浏览器需要解析域名,首先查看本地的hosts文件,查看是否有固定的解析规则,有则直接使用该ip信息 (linux中的 /etc/hosts)

    2.本地的hosts文件没有解析关系,浏览器会发出一个dns请求到本地设置的dns服务器(也就是linux中记录的 /etc/resolv.conf)
    本地dns服务器一般默认会是你接入的网络运营商,如电信dns,移动dns

    3.域名解析的请求到达dns服务器之后,dns服务器优先查找它自己的缓存记录,如果有直接返回结果
    如果dns服务器本地没有结果,递归的向上查找DNS根服务器,是否有解析记录。

    4.根DNS服务器的作用只是提供域服务器的地址(不提供域名和ip的关系解析)

    5.本地dns服务器此时向域服务器继续发出请求,此时请求的服务器就是如.com .cn这样的域服务器了
    域服务器也不会直接返回你要访问的域名、以及它对应的IP地址的关系,而是告诉本地dns服务器,该域名对应的解析服务器的地址,
    如163.com

    6.最后本地dns服务器,向该域名对应的解析服务器发出请求,此时才能正确的拿到该域名对应的ip地址关系
    此时本地dns服务器会把ip告诉浏览器
    以及这个域名、ip的对应关系会被存储在本地缓存中,便于下次访问,可以直接看到这个域名、ip的对应关系,加速访问

image-20250304232518678


2-2-2.dig命令验证

1.安装命令
    yum install bind_utils -y
    sudo apt install dnsutils -y

2.使用命令查询
    dig +trace www.kaixinblog.cn

过程如下:
    1. 先从本地电脑中的 hosts文件中优先
    2. 从全世界13台根域服务器找 .
    3. 再从顶级域找  .cn
    4. 再从权威服务器(域名服务商,也就是2级域名)中找  kaixinblog.cn # 主要看你在那个服务商中买的,那么你的3级域名就从买的服务商中的添加
    5. 在找3级域名服务器  www.kaixinblog.cn

image-20250304234153764


2-3.名词解释

名词 解释
域名 由多个通过点分隔的标签组成的名称,例如 www.example.com。它用于标识互联网上的网站或服务器。
顶级域名 域名的最后一部分,如 .com.org.net 等。TLD 通常表示域名的用途或注册地。
二级域名 位于顶级域名之前的域名部分,如 exampleexample.com 中。SLD 通常用于标识特定的组织或公司。
子域名 位于主域名之前的域名部分,如 wwwwww.example.com 中。子域名用于进一步划分网站的不同部分。
权威域名服务器 持有特定域名的权威信息的服务器,负责响应对该域名的查询请求。
递归查询 DNS 服务器代表客户端进行的查询,直到获取到最终的IP地址。递归查询通常由本地DNS服务器或公共DNS服务提供。
迭代查询 DNS 服务器将查询请求转发给另一个DNS服务器,然后客户端再向该服务器查询,直到获取到最终的IP地址。
DNS记录 DNS 数据库中的条目,包含域名和相关联的信息,如IP地址(A记录)、别名(CNAME记录)等。
A记录 将域名映射到IPv4地址的DNS记录。
CNAME记录 将一个域名别名映射到另一个域名的DNS记录。
MX记录 指定负责处理电子邮件的邮件服务器的DNS记录。
NS记录 指定负责某个域名的权威域名服务器的DNS记录。
PTR记录 反向记录,将IP地址映射到域名,通常用于反向DNS查询。
SOA记录 提供权威域名服务器的管理和技术信息的DNS记录。
TTL DNS记录的生存时间,指定DNS记录在缓存中的有效时间。
AAAA记录 将域名映射到IPv6地址的DNS记录。
文档地址:
    https://help.aliyun.com/document_detail/102237.html # 阿里地址对dns的名词介绍与dns解析过程
    https://help.aliyun.com/document_detail/29716.html # 阿里域名设置3级操作
    https://cloud.tencent.com/document/product/302/3446 # 腾讯域名设置3级操作
    https://cloud.tencent.com/document/product/302/38661 # 腾讯文档说明

3.部署DNS服务器

3-1.通过bind搭建

官方:
    https://www.isc.org/bind/
# 注意:防火墙放行,要不然直接关闭。

1.进行安装
    yum install bind bind-utils -y # centos安装方式
    bind软件:提供dns服务器的主软件
    bind-utils软件:提供一些命令 dig nslookup host 等
    sudo apt install bind9 bind9utils bind9-doc dnsutils -y # ubuntu安装方式

2.主配置文件
    /etc/bind/named.conf.local # ubuntu
    /etc/named.conf # 主配置文件 centos

3.私有地址范围提供本地反向解析支持
    # 作用:
        它是为了让 DNS 服务器能够处理本地网络中私有 IP 地址的解析请求,内部会配置的信息。
        是一个为私有 IP 地址的反向解析提供支持的配置文件,它的作用是让 BIND 能够处理本地网络中的私有 IP 地址解析请求。
    /etc/named.rfc1912.zones  # centos
    /etc/bind/zones.rfc1918 # ubuntu

# 因为ubuntu的配置文件与centos的配置不同

3-1-1.配置文件说明

文件 说明
主配置文件如:/etc/named.conf 或者 /etc/bind/named.conf 它定义了 DNS 服务的整体运行参数和全局设置,或者通过include引用自配置文件。或者options参数设定义全局的dns服务器的行为(监听端口,允许的查询的客户端等等)
子配置文件如:/etc/bind/named.conf.local/etc/bind/zones.rfc1918 子配置文件是主配置文件的扩展,通常用于定义特定的功能或区域例如:named.conf.local:用于定义本地自定义的 DNS 区域(如正向区域、反向区域)。它通常包含用户自定义的域名解析规则。named.conf.options:用于定义全局选项(options)的扩展或覆盖。zones.rfc1918:用于定义私有 IP 地址范围的反向解析区域。
# 注意:
    一般在 /etc/bind/named.conf.local 文件内添加自定义的区域设置。

1./etc/named.conf 或者 /etc/bind/named.conf 修改全局变量
    # 不然其他的服务器无法使用这台dns服务器
    options {
        listen-on port 53 { 127.0.0.1;any; }; #  添加一个any; 意思就是绑定在0.0.0.0:53
        allow-query     { localhost;any; }; # 添加一个any; 允许客户端可以访问
    }

2. /etc/bind/named.conf.local 定义一个 DNS 区域
    例如:
        zone "xxx123456.com" {
            type master; #  区域类型为主区域,存储原始 DNS 数据,记录DNS的原始副本。
            file "/etc/bind/db.xxx123456.com"; # 区域数据库文件路径,内部设置了当前域名的dns解析记录关系。
            allow-query { any; }; # 允许查询该区域的客户端范围
            allow-transfer { 192.168.1.0/24; }; # 允许接收区域传输的客户端(从服务器)
            notify yes; # 在区域数据更新时通知从服务器
        };


3. /etc/bind/db.xxx123456.com 属于区域数据库文件,存储xxx123456.com域名的dns信息,具体的解析关系
    例如:
        $TTL 3600  # 默认的生存时间(TTL),单位为秒
        # 这块区域设置的是权威信息
        # ns1.xxx123456.com.(权威解析服务器,负责提供域名解析服务,需要实际运行 DNS 服务的服务器) admin.xxx123456.com.(邮箱,@被.代替)
        @       IN      SOA     ns1.dns.com. admin.dns.com. (
                            2025030501 ;  # 序列号,每次更新时递增
                            3600       ;  # 刷新时间(1小时)
                            1800       ;  # 重试时间(30分钟)
                            604800     ;  # 过期时间(1周)
                            3600       ;  # 否定缓存的 TTL(1小时)
        )
        
       # 解析记录
        @       IN      NS      ns1.dns.com. # 指定一个权威服务器的dns记录,实际运行 DNS 服务的服务器
        ns1     IN      A       127.0.0.1  # 权威记录指向实际运行 DNS 服务的服务器,这个台机器上必须有bind服务
        www     IN      A       192.168.85.144

3-1-2.配置操作-ubuntu

1.修改主配置文件,添加区域配置
    sudo vim /etc/bind/named.conf.local

2.添加内容如下
    zone "xxx123456.com" {
        type master;
        file "/etc/bind/db.xxx123456.com"; # 区域数据库文件
    };


3.创建一个区域数据库文件。
    sudo vim /etc/bind/db.xxx123456.com

4.添加DNS记录内容
    $TTL    604800
    @       IN      SOA     ns1.dns.com. admin.dns.com. (
                                    2025030501 ; Serial
                                    604800    ; Refresh
                                    86400     ; Retry
                                    2419200   ; Expire
                                    604800 )  ; Negative Cache TTL
    ;
    @       IN      NS      ns1.dns.com. 
    ns1     IN      A       127.0.0.1 # 因为本机运行了bind服务,所以可以这样设置
    www     IN      A       192.168.85.144


5.启动服务进行查看
    sudo systemctl restart bind9

6.设置dns解析服务
    # 写入内容
    sudo vim  /etc/resolv.conf
    name 127.0.0.1  # 设置自己搭建的dns服务器地址即可

7.使用命令验证域名是不是配置的192.168.85.144
    nslookup www.xxx123456.com

3-1-2.配置操作-centos

# 注意:
    /etc/named.conf 在配置文件中添加 include "/etc/named.conf.local";


1.修改主配置文件,添加区域配置
    sudo vim /etc/bind/named.conf.local

2.添加内容如下
    zone "xxx123456.com" {
        type master;
        file "/etc/db.xxx123456.com"; # 区域数据库文件
    };


3.创建一个区域数据库文件。
    sudo vim /etc/db.xxx123456.com

4.添加DNS记录内容
    $TTL    604800
    @       IN      SOA     dns.com. admin.dns.com. (
                                    2025030501 ; Serial
                                    604800    ; Refresh
                                    86400     ; Retry
                                    2419200   ; Expire
                                    604800 )  ; Negative Cache TTL
    ;
    @       IN      NS      ns1.dns.com. 
    ns1     IN      A       127.0.0.1 
    www     IN      A       192.168.85.144


5.启动服务进行查看
    systemctl start named

6.设置dns解析服务
    # 写入内容
    sudo vim  /etc/resolv.conf
    name 127.0.0.1  # 设置自己搭建的dns服务器地址即可

7.使用命令验证域名是不是配置的192.168.85.144
    nslookup www.xxx123456.com

3-1-4.其他机器使用搭建的dns

1.修改resolve.conf配置
    nameserve 192.168.85.133

3.访问测试
    nslookup www.xxx123456.com

image-20250306003626973


3-1-5.配置文件详细说明

# 默认的配置文件信息,ubuntu没有这些配置而centos有这些配置,全局配置
options {
    listen-on port 53 { 127.0.0.1;any; }; # 软件监听地址 ipv4,如果想让 其他机器使用这dns服务,需要设置any 默认127.0.0.1
    
    listen-on-v6 port 53 { ::1; }; # 软件监听地址 ipv6
    
    # 指定 BIND 服务的工作目录,BIND 会在这个目录下查找和存储区域文件缓存文件等。
    directory 	"/var/named"; 
    
    # 指定缓存转储文件的路径,当 BIND 服务被终止或重新启动时,它会将当前的缓存内容转储到这个文件中。
    dump-file 	"/var/named/data/cache_dump.db"; 
    
    # 指定统计信息文件的路径。BIND 服务会定期将运行时的统计信息(如查询次数、响应时间等)记录到这个文件中。
    statistics-file "/var/named/data/named_stats.txt";
    
    # 指定内存统计信息文件的路径。BIND 服务会将内存使用情况记录到这个文件中。
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    
    # 指定递归查询文件的路径。BIND 服务会将当前正在进行的递归查询记录到这个文件中。
    recursing-file  "/var/named/data/named.recursing";
    
    # 指定安全根区域文件的路径。BIND 服务会将安全根区域(如 DNSSEC 验证相关的根区域)信息记录到这个文件中。
    secroots-file   "/var/named/data/named.secroots";
    
    # 修改 allow-query 选项,以限制哪些客户端可以查询你的 DNS 服务器 默认localhost
    allow-query     { localhost;any;}; 
    
    # 启用递归查询。如果客户端发送的查询请求没有缓存结果。
        1.递归查询:选择其他的dns服务器查询,直到查询到结果为止。
        2.非递归查询:DNS 服务器只返回它当前已知的信息
        
    recursion yes;
    # 启用 DNSSEC(DNS 安全扩展)支持。
        DNSSEC 是一种用于增强 DNS 安全性的技术,通过数字签名验证 DNS 数据的完整性和真实性,防止 DNS 欺骗和中间人攻击。
    dnssec-enable yes;
    
    # 启用 DNSSEC 验证。可以防止 DNS 欺骗和中间人攻击。
        DNS 服务器会验证所有 DNS 查询结果的 DNSSEC 签名。如果签名无效或无法验证,查询结果将被视为不可信。
    dnssec-validation yes;

    # 指定一个文件路径,用于存储 DNSSEC 验证所需的可信密钥(trust anchors)。
        DNSSEC 使用数字签名来验证 DNS 数据的完整性和真实性。bindkeys-file 指定的文件中包含了用于验证 DNSSEC 签名的密钥信息。这些密钥是 DNSSEC 验证过程的基础。如果没有指定,BIND 会使用默认路径 /etc/bind.keys。
    bindkeys-file "/etc/named.root.key";
    
    # 指定一个目录路径,用于存储动态管理的 DNSSEC 密钥。
        在 DNSSEC 验证过程中,BIND 会动态生成和管理一些密钥,这些密钥用于跟踪和验证 DNSSEC 签名。managed-keys-directory 指定的目录用于存储这些动态生成的密钥文件。
    managed-keys-directory "/var/named/dynamic";
    
    # 存储dns服务的pid文件
    pid-file "/run/named/named.pid";
    
    # 指定一个文件路径,用于存储会话密钥。
        BIND 使用会话密钥来加密和验证与客户端或其他 DNS 服务器的通信。这些密钥是动态生成的,并存储在指定的文件中。通过这种方式,BIND 可以确保通信的安全性,防止中间人攻击和其他安全威胁。
    session-keyfile "/run/named/session.key";
};
# 日志配置
logging {
        channel default_debug { # channel 定义一个日志通道。default_debug 日志的名称。
                file "data/named.run"; # 指定日志文件的路径。
                severity dynamic; # 定义日志的严重性级别
                # 其他级别
                    critical:仅记录严重错误。
                    error:记录错误信息。
                    warning:记录警告信息。
                    notice:记录一般通知信息。
                    info:记录详细信息。
                    debug:记录调试信息。
                    dynamic:根据运行时的调试级别动态调整日志级别。
        };
};

zone "." IN { # 定义根源区域
    type hint; # 指定区域类型为 hint。hint 类型的区域用于提供根服务器的地址信息。
    file "named.ca"; # 指定根区域的文件路径。named.ca 文件包含了根服务器的地址信息。
};

include "/etc/named.rfc1912.zones"; # 引入默认的区域配置,如本地区域(localhost)和反向解析区域(127.in-addr.arpa)等。
include "/etc/named.root.key"; # 引入 DNSSEC 验证所需的根密钥文件。

3-2.通过dnsmasq搭建

说明:

  • 这是一个轻量级的,很容易的搭建的dns服务器,部署简单
  • dnsmasq是一款小巧且方便地用于配置DNS服务器和DHCP服务器的工具,适用于小型网络,它提供了DNS解析功能和可选择的DHCP功能。
  • dnsmasq可以解决小范围的dns查询问题,如果业务是跨机房、跨地区的话不建议使用dnsmasq做为dns解析服务器。

3-2-1.安装配置

1.安装
    yum install dnsmasq -y

2.配置文件
    /etc/dnsmasq.conf

3.配置内容
    1.配置上游的dns服务器地址文件
        resolv-file=/etc/resolv.dnsmasq.conf # 默认是本机的/etc/resolv.conf
    
    2.指定服务运行在什么地址上
        listen-address=127.0.0.1,192.168.85.133
    
     3.指定想要添加本地的域名解析记录
     	addn-hosts=/etc/dnsmasq.hosts # 默认的是/etc/hosts,如果不想冲突就是自行创建设置一下
     
     4.日志配置文件
     	log-facility=/var/log/dnsmasq.log

4.创建上游配置
    vim /etc/resolv.dnsmasq.conf
    nameserver 223.5.5.5
    nameserver 223.6.6.6
   
5.添加dns解析
    vim /etc/dnsmasq.hosts
    www.baidu.com 192.168.85.144

6.启动服务
    systemctl start dnsmasq && systemctl status dnsmasq

image-20250306224603496


3-2-2.测试

1.修改机器的dns配置文件
    vim /etc/resolv.conf
    nameserver 192.168.85.133

2.访问测试
    nslookup www.baidu.com # 看看是不是配置的 192.168.85.144的地址

image-20250306231501645


CDN

是什么:

  • 全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络,将源网站的资源,缓存到全国各地的边缘服务器,提供给用户就近获取,降低源服务器的压力。
  • CDN通过广泛的网络节点分布,提供快速、稳定、安全、可编程的全球内容分发加速服务,支持将网站、音视频、下载等内容分发至接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。
阿里云的cdn服务说明:https://www.aliyun.com/product/cdn
指标衡量表参考阿里云网址: https://help.aliyun.com/document_detail/140425.html

简单理解:

  • 通俗的说CDN就像是网络中的快递小哥,把资源高效的送到客户电脑上。并且这个cdn快递员,还很智能,不是在横冲直撞,多个节点,且提供缓存(如同快递驿站,加速数据读取),智能路线优化,选择就近节点。
  • 因此cdn的作用就是,无论你在世界任何角落,只要联网了,cdn服务就可以如同把源服务器搬到了你面前,让你高速的访问,带来极致体验。

image-20250306233544558

为什么使用:

  • 网站的关键因素:内容的吸引力,访问速度,支持频繁的用户交互和低延迟,高响应,浏览各处无碍。
  • 从运营的商业角度上来说,网站的每慢1秒就会损失一个用户。
  • CDN就是来拯救静态资源访问慢的问题的。

1.CDNd的特点

1.分布式全国都有节点,要看该cdn服务器的分布情况,覆盖情况
2.高速宽带
3.用户就近访问原则,智能解析,根据用户的所在地域分析,解析到用户就近的服务器上

目前最主流的cdn产品,就是选择公有云cdn,以阿里云cdn为主


阿里云内容分发网络CDN(Content Delivery Network)是建立并覆盖在承载网之上,由遍布全球的边缘节点服务器群组成的分布式网络。阿里云CDN能分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。

阿里云在全球拥有2800+节点。中国内地(大陆)拥有2300+节点,覆盖31个省级区域;海外、中国香港、中国澳门和中国台湾拥有500+节点,覆盖70多个国家和地区。全网带宽输出能力达150 Tbps。

CDN将源站资源缓存到阿里云遍布全球的加速节点,当终端用户请求访问和获取源站资源时无需回源,可就近获取CDN节点上已经缓存的资源,提高资源访问速度,同时分担源站压力。目前CDN部分节点已支持通过IPv6访问。

CDN接入快捷、简单,您不需要调整现有业务结构,也不需要进行复杂的配置,只需要在CDN控制台进行简单操作,即可将域名接入阿里云,享受全球链路加速服务。
通过快速入门,您可以轻松开启CDN加速服务。


总结特点就是,阿里云提供的cdn资源加速服务,只要你的网站静态资源放在阿里云cdn上,你的网站就可以为全国的用户,都提供高速的网站访问服务。

全国节点多,云南的兄弟可以秒级打开,佳木斯的兄弟也可以,如果你的网站为海外用户提供服务,也是一样,阿里云全球都有服务器节点。
稳定、高性能
充足的带宽,存储能力
完善的监控体系,7*24小时全网监控,及时告警。

2.CDN给网站带来了什么

为了实现跨运营商、跨地域的全网覆盖
互联不互通、区域ISP地域局限、出口带宽受限制等种种因素都造成了网站的区域性无法访问。CDN加速可以覆盖全球的线路,通过和运营商合作,部署IDC资源,在全国骨干节点商,合理部署CDN边缘分发存储节点,充分利用带宽资源,平衡源站流量。

为了保障你的网站安全
CDN的负载均衡和分布式存储技术,可以加强网站的可靠性,相当无无形中给你的网站添加了一把保护伞,应对绝大部分的互联网攻击事件。

为了异地备援
当某个服务器发生意外故障时,系统将会调用其他临近的健康服务器节点进行服务,进而提供接近100%的可靠性,这就让你的网站可以做到永不宕机。

为了节约成本投入
使用CDN加速可以实现网站的全国铺设,你根据不用考虑购买服务器与后续的托管运维,服务器之间镜像同步,也不用为了管理维护技术人员而烦恼,节省了人力、精力和财力。

为了让你更专注业务本身
CDN加速厂商一般都会提供一站式服务,业务不仅限于CDN,还有配套的云存储、大数据服务、视频云服务等,而且一般会提供7x24运维监控支持,保证网络随时畅通,你可以放心使用。并且将更多的精力投入到发展自身的核心业务之上。

3.CDN过程解释

1.静态资源需要存储到源站,也就是存储到一个服务器磁盘上
2.设置CDN后,的解析流程

'''
1.用户访问 www.kaixinblog.cn
2.就会进行域名解析
    1.先从本地的hosts文件中寻找对应关系
        1.有进行返回ip 进行访问
        2.没有就到 /etc/resolv.conf 文件中 找到域名服务器
    2.访问域名服务器 比如 114.114.114.114 递归查找
        1.先找到 根域,通过根域找到顶级域
        2.根据顶级域找到 2级域名(权威域名服务器,购买域名的运营商)
        3.检查是否设置了 CNAME 或者没有设置 那么直接返回A记录 就会获取到服务器的ip
    
    3.设置了CANME 就会返回 域名别名的只(CDN 的域名地址)
        比如返回:https://gw.alicdn.com
        1.再根据先从本地的hosts文件中寻找对应关系
            如果有那么直接返回ip
        2.没有在根据 /etc/resolve.conf 配置的域名服务器进行递归查找
    
    4.根据解析的cdn地址返回的ip
        1.从你买的cdn服务,比如就是阿里云的cdn产品
        2.根据用户访问的地域,返回就近的cdn服务器ip地址(这里还是需要根据hosts和resolv.conf进行递归查找cdn服务器ip)
    
    5.根据返回的cdn ip 访问资源
    
    6.访问cdn服务器获取静态资源
        1.如果cdn服务器中存在这个访问资源,那么就会返回资源
        2.如果cdn服务器中没有这个资源,就会从原站中获取返回
            1.cdn会在原站服务器中获取资源数据
            2.然后拿到数据,在本地做好缓存
            3.方便用户下一次在访问cdn服务器时,可以从cdn服务器中拿到数据

'''

# 不管怎么请求解析,都需要进行dns的域名解析过程,无论是A记录 还是使用了CNAME类型都需要经过DNS域名服务器递归解析到服务器的ip地址

image-20250306235823560