当前位置: 首页 > news >正文

CNAME记录

CNAME记录

维基百科,自由的百科全书

(重定向自CNAME)

真实名称记录(英语:Canonical Name Record),即CNAME记录,是域名系统(DNS)的一种记录。CNAME记录用于将一个域名(同名)映射到另一个域名(真实名称),域名解析服务器遇到CNAME记录会以映射到的目标重新开始查询。[1]

这对于需要在同一个IP地址上运行多个服务的情况来说非常方便。若要同时运行文件传输服务和Web服务,则可以把ftp.example.comwww.example.com都指向DNS记录example.com,而后者则有一个指向IP地址的A记录。如此一来,若服务器IP地址改变,则只需修改example.com的A记录即可。

CNAME记录必须指向另一个域名,而不能是IP地址。

细节

《RFC 1034》详细定义了CNAME记录的标准,并在《RFC 2181》的第十节中做了进一步规范。

CNAME记录在域名系统中的使用有诸多限制。当一个DNS解析服务器在查询各类记录时遇到一则CNAME记录时,它会立即重启查询,查询所映射到域名的对应记录。(除非是要查询CNAME记录本身,在那种情况下会返回所映射到的域名。)CNAME记录所映射的域名可以是域名服务中的任何域名。在同一服务器上,在远程服务器上,甚至在属于不同DNS zone(解析空间)的服务器上,都可以。

假设有下述DNS zone:

NAME                    TYPE   VALUE
--------------------------------------------------
bar.example.com.        CNAME  foo.example.com.
foo.example.com.        A      192.0.2.23

当要查询bar.example.com的A记录时,域名解析器会查到对应的CNAME记录,即foo.example.com,随即开始查询该域名的A记录,查到192.0.2.23则返回结果。

误会

可以使用CNAME记录将“bar.example.com”指向“foo.example.com”。因此,可能会有人随意的将bar.example.com称作是foo.example.com的“CNAME”。然而事实并非如此,bar.example.com的“CNAME”是foo.example.com,因为CNAME的意思是真实名称,而右侧才是真实名称,才是CNAME。

这则误会在《RFC 2181》“DNS规范的解释”一章中有提到。应当说左侧标签是右侧真实名称的一个同名。即下述CNAME记录:

bar.example.com.        CNAME  foo.example.com.

应当读作:

bar.example.com的真实名称是foo.example.com。请求访问bar.example.com的客户端会得到foo.example.com返回的结果。

限制

  • CNAME记录总是指向另一则域名,而非IP地址。
  • 有CNAME记录的域名不能有其他任何记录(MX记录、A记录等,《RFC 1034》第3.6.2节、《RFC 1912》第 2.4节) 唯一的例外是在使用DNSSEC的情况下,这时可以设置相关的DNSSEC相关记录,比如RRSIG,NSEC等(《RFC 2181》第10.1节)
  • 为了保证效率,应当避免将CNAME记录指向其他的CNAME记录,但并非不可以。因此,可以通过CNAME记录创造无法被解析的循环,比如:
foo.example.com.  CNAME  bar.example.com.
bar.example.com.  CNAME  foo.example.com.
  • MX记录和NS记录永远都不应指向由CNAME记录标记的域名(《RFC 2181》第10.3节)。因此,解析空间不应有下述结构:
example.com.      MX     0   foo.example.com.
foo.example.com.  CNAME  host.example.com.
host.example.com. A      192.0.2.1
  • 根据(《RFC1912》)第2.4节,根网域(Root Domain)不应该被添加 CNAME 纪录。但部分 DNS 服务商(例如 DNSPod、NS1)可以忽略该 RFC 标准而针对根网域做出 CNAME 解析,比如:
example.com.  CNAME  foo.example.com.

但这样做会导致该网域若有用于邮箱服务,则可能造成错误,详见如下方。

而愿意遵守 RFC 标准的 DNS 供应商 (例如 Neustar UltraDNS、Cloudflare DNS)则采用了 Apex Alias 或 CNAME flattening 技术,这个技术将使得由 DNS 服务商自行处理 CNAME 解析的过程,并将最终解析的 A 纪录作为实际解析的结果,从而不与 RFC 标准抵触,比如:

example.com.  A      192.0.2.1
  • 用于邮箱服务的域名不应有CNAME记录。在实践中,这或许不会出错,但由于邮件服务的不同,可能会有意料之外的效果。[2]

DNAME记录

DNAME记录,即代理名称记录,由《RFC 6672》定义(原《RFC 2672》已经废弃)。一条DNAME记录会将某个域名的整个解析子树映射到另一域名,而CNAME只映射设定的域名,不映射子域名。如同CNAME一样,在DNS查询过程中,会查找所映射到的新域名的地址。域名解析服务器会为每一个被查询的子域名生成一则CNAME记录。为某个域名设置DNAME记录和为该域名的所有子域名设置CNAME记录的效果是一样的。

例如下述记录:

foo.example.com.        DNAME  bar.example.com.
bar.example.com.        A      192.0.2.23
xyzzy.bar.example.com.  A      192.0.2.24
*.bar.example.com.      A      192.0.2.25

查询foo.example.com的A记录不会返回任何结果。不同于CNAME记录,DNAME不会直接影响所设置域名的解析。

如果我们需要查询xyzzy.foo.example.com,则由于DNAME记录的映射会返回xyzzy.bar.example.com的A记录,即192.0.2.24。而如果将DNAME记录换成是CNAME记录的话,这样的请求则会报错提示无法找到。

由此,查询foobar.foo.example.com会由于DNAME记录映射返回192.0.2.25。

ANAME记录

部分DNS平台支持尚未被标准化的ALIAS[3]或ANAME记录类型。此类伪记录由DNS服务器维护,类似于CNAME记录,但在(某些)客户端解析时等同于A记录。ANAME记录通常会被设置指向另一域名。但在被客户端请求时候,则会直接返回对应的IP地址。ANAME记录的标准化过程正在进行中[4],但已经有许多不同的实现,所以由于平台的不同,效果也多种多样。有些存在于域名解析区的顶端,有些则为了提供邮件服务而存在。ANAME记录相对CNAME记录的一大优势是速度。服务端解析A记录的速度通常比客户端快,同时可以缓存对应的IP地址以备查询。IETF正在讨论和考虑ANAME记录的标准化。[5]

相关文章:

CNAME记录

CNAME记录 维基百科,自由的百科全书 (重定向自CNAME) 真实名称记录(英语:Canonical Name Record),即CNAME记录,是域名系统(DNS)的一种记录。CNAME记录用于…...

pytest + yaml 框架 -69.新增depend 关键字,导入其它yaml用例

前言 有小伙伴提到,test_a.yml 中已经写了几个流程,test_b.yml 中希望能接着test_a.yml去写用例,于是就需要先导入test_a.yml用例。 为了满足此需求,v1.6.3版本 在config 中新增 depend 关键字。 需求场景 test_a.yml 中已经写…...

【网络】tcp的初始化序列号为什么要随机生成

TCP序列号和确认序列号 在TCP协议中,每个数据包都包含一个序列号和一个确认序列号,用于实现可靠的数据传输和流量控制。 序列号(Sequence Number):序列号是发送端为每个发送的数据包分配的唯一标识,用于标…...

【SRC实战】利用APP前端加密构造数据包

挖个洞先 https://mp.weixin.qq.com/s/ZnaRn222xJU0MQxWoRaiJg “ 以下漏洞均为实验靶场,如有雷同,纯属巧合” 01 — 漏洞证明 “ 参数加密的情况,不会逆向怎么办?” 1、新用户首次设置密码时抓包,此处设置为0000…...

ThreadLocal描述

ThreadLocal是Java中的一个类,用于在多线程环境下存储和获取线程相关的数据。每个ThreadLocal对象都可以维护一个线程本地的变量副本,这意味着每个线程都可以独立地改变自己的副本,而不会影响其他线程的副本。这种特性使得ThreadLocal非常适合…...

Linux-基础命令第三天

1、命令:wc 作用:统计行数、单词数、字符数 格式:wc 选项 文件名 例: 统计文件中的行数、单词数、字符数 说明:59代表行数,111代表单词数,2713代表字符数,a.txt代表文件名 选项…...

Windows Server 2022 环境下WEB和DNS服务器配置方法

目录 实验名称:WEB和DNS服务器配置实验目的实验原理:主要设备、器材:实验内容:配置本地WEB站点配置本地DNS服务器 实验名称:WEB和DNS服务器配置 实验目的 掌握 Windows Server 2022 环境下WEB服务器配置方法 掌握 Wi…...

静态住宅代理 IP 的影响

在不断发展的在线业务和数字营销领域,保持领先地位势在必行。在业界掀起波澜的最新创新之一是静态住宅代理 IP 的利用。这些知识产权曾经是为精通技术的个人保留的利基工具,现在正在成为各行业企业的游戏规则改变者。 一、静态住宅代理IP到底是什么&…...

IP代理中的SOCKS5代理是什么?安全吗?

在互联网世界中,网络安全和个人隐私保护变得日益重要。SOCKS5代理作为一种安全高效的网络工具,不仅可以保护个人隐私安全,还可以提供更稳定、更快度的网络连接。本文将带大家深入了解SOCKS5代理在网络安全领域中的应用。 什么是SOCKS5代理 …...

一个用Kotlin编写简易的串行任务调度器

引言 由于项目中有处理大量后台任务并且串行执行的需求,特意写了一个简易的任务调度器,方便监控每个任务执行和异常情况,任务之间互不影响。正如上所述,Kotlin中的TaskScheduler类提供了一个强大的解决方案,用于使用S…...

JavaScript异步编程——11-异常处理方案【万字长文,感谢支持】

异常处理方案 在JS开发中,处理异常包括两步:先抛出异常,然后捕获异常。 为什么要做异常处理 异常处理非常重要,至少有以下几个原因: 防止程序报错甚至停止运行:当代码执行过程中发生错误或异常时&#x…...

python如何做一个服务器fastapi 和flask

用 fastapi 方式的话 from fastapi import FastAPIapp FastAPI()app.get("/api") def index():return "hello world"然后需要安装 uvicorn 并执行下面的命令 uvicorn server:app --port 8000 --reload最终 如果是用 flask 直接写下面的代码 # -*- cod…...

Element-ui el-table组件单选/多选/跨页勾选讲解

文章目录 一、el-table介绍二、el-table单选三、el-table多选四、el-table跨页勾选五、热门文章 一、el-table介绍 el-table 是 Element UI(一个基于 Vue.js 的高质量 UI 组件库)中的一个组件,用于展示表格数据。通过 el-table,你…...

CentOS 安装 SeaweedFS

1. SeaweedFS 介绍 SeaweedFS 是一个简单且高度可扩展的分布式文件系统。有两个目标: to store billions of files! (存储数十亿个文件!)to serve the files fast! (快速提供文件!) Seaweedfs的中心节点(center master&#xff09…...

Redis如何避免数据丢失?——AOF

目录 AOF日志 1. 持久化——命令写入到AOF文件 写到用户缓冲区 AOF的触发入口函数——propagate 具体的实现逻辑——feedAppendOnlyFile 从用户缓冲区写入到AOF文件(磁盘) 函数write、fsync、fdatasync Redis的线程池 AOF文件的同步策略 触发的入口函数——…...

xFormers

文章目录 一、关于 xFormers二、安装 xFormers三、基准测试(可选)测试安装 四、使用 xFormers1、Transformers 关键概念2、Repo 地图注意力机制Feed forward mechanismsPositional embeddingResidual pathsInitializations 3、主要特征4、安装故障排除 一…...

LQ杯当时的WP

RC4 32位程序用IDA打开看看 进行反汇编 RC4提示,就是一个加密 在sub_401005函数中找到输出的变量,并且立下断点 动调 Packet 字符串搜索flag 看到是给192.168.11.128发送了cat flag的命令 看到它回传 Base64加密了 解一下密码就可以 CC 密码这…...

数据结构与算法学习笔记三---栈和队列

目录 前言 一、栈 1.栈的表示和实现 1.栈的顺序存储表示和实现 1.C语言实现 2.C实现 2.栈的链式存储表示和实现 1.C语言实现 2.C实现 2.栈的应用 1.数制转换 二、队列 1.栈队列的表示和实现 1.顺序队列的表示和实现 2.链队列的表示和实现 2.循环队列 前言 这篇文…...

web入门——导航栏

本专栏内容代码来自《响应式web&#xff08;HTML5CSS3Bootstrap&#xff09;》教材。 导航栏 实现代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&…...

基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 扩散映射&#xff08;Diffusion Maps&#xff09; 4.2 卡尔曼滤波 4.3 基于梯度流的扩散映射卡尔曼滤波&#xff08;GFDMKF&#xff09; 5.完整程序 1.程序功能描述 基于梯度流的扩散…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...