1. 本网站的系统架构
- 网站示例: sunlogging.com
- 服务器: 阿里云ECS
- 服务器系统: Ubuntu 24.04 LTS
- 博客框架: Hexo
- 网站主题: Volantis
2. (阿里云)域名解析配置
2.1. 快速配置
对阿里云购买的域名进行,使其指向自己购买的云服务器的IP。也就是域名与IP绑定。
操作路径:
阿里云控制台 -> 产品与服务 -> 域名 -> 域名列表 -> 解析
示例:
- 进入域名配置页面
- 选择
新手引导
进行快速配置
- 填写域名和IP
将 sunlogging.com
和 www.sunlogging.com
解析(绑定)到自己的服务器的公网IP。
2.2. 自定义配置
除了新手引导
进行快速配置外,还可以点击添加记录
进行自定义配置域名解析。
2.2.1. 记录类型
记录类型
指解析记录的用途,例如:网站、邮箱等。
记录类型 | 含义 | 备注 |
---|---|---|
A | 将域名指向一个IPV4地址 | 最常用的一种方式 |
AAAA | 将域名指向一个IPV6地址 | |
CNAME | 将域名指向另外一个域名 | CDN加速时需要用到 |
NS | 将子域名指定其他DNS服务器解析 | |
MX | 将域名指向邮件服务器地址 | |
SRV | 记录提供特定的服务的服务器 | |
TXT | 文本长度限制512,通常做SPF记录(反垃圾邮件) | |
CAA | CA证书颁发机构授权校验 | |
显性URL | 将域名重定向到另外一个地址 | |
隐性URL | 与显性URL类似,但是会隐藏真实目标地址 |
2.2.2. 主机记录
主机记录
指域名前缀,例如:www、mail等。
主机记录 | 含义 | 备注 |
---|---|---|
@ | 表示主域名,如: sunlogging.com | @ 是一个固定值,不能用其他字符代替 |
. | 泛解析,表示满足格式*.sunlogging.com 的所有域名 | 记录类型为显性URL 时不允许设置泛解析 |
abc | 表示二级域名abc.sunlogging.com | 这里的abc 可以替换成任意自定义的子域名,常见的二级域名参加下个表格 |
abc.def | 表示三级域名abc.def.sunlogging.com | 这里的abc.def 可以替换成任意自定义的二级和三级域名 |
常用的二级域:
常用二级域 | 含义 |
---|---|
www | 表示域名: sunlogging.com ,常用于互联网的网站业务 |
表示域名: mail.sunlogging.com ,常用于邮箱业务 | |
m | 表示域名: m.sunlogging.com ,常用于手机网站 |
2.2.3. 记录值
记录值
指解析记录的具体内容,例如:IP地址、域名等。
记录类型
不同,记录值
填写的内容也不一样,具体如下:
记录类型 | 记录值 |
---|---|
A | 填写 IPv4 的地址 |
AAAA | 填写 IPv6 的地址 |
CNAME | 填写 CNAME 指向的域名 |
NS | 填写 要授权的 DNS 服务器域名,例如腾讯云解析的DNS服务器域名ns3.dnspod.net |
MX | 输入内容通过联系邮箱注册商提供。例如阿里云邮提供的需要配置的解析记录值是mx1.qiye.aliyuncom |
SRV | 格式为优先级权重 端口目标地址 ,每项中间需以空格分隔;例如:0 5 5060 www.cloud-example.com |
TXT | 常用情况 TXT 记录是用来做验证类的操作,比如托管子域名时需要添加TXT记录验证,记录值5d597b2c12464a7a8d0dde6b858ce543 |
CAA | CA证书颁发机构授权校验 |
显性URL | 填写具体的URL |
隐性URL | 填写具体的URL,如:http://www.aliyun.com:80 |
2.2.4. 解析请求来源
指域名访问者所在的地区和使用的运营商网络。如:中国联通、中国电信、百度、必应、谷歌等。
非必填项,可以不用管,选默认值就可以了。
3. 域名解析原理
3.1. 什么是DNS
DNS(Domain Name System,域名系统)是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址。
网络上计算机之间的通讯是通过IP地址来完成的,但IP地址并不便于记忆,我们需要一个方便记忆的名字来识别每一台计算机,这就是域名,而维护域名的系统就叫做域名系统,域名系统其实就是名字系统。域名是唯一的,IP也是唯一的,给你一个域名要知道它对应的IP地址,就需要有一个域名到IP的映射。 由域名去找IP地址的查找过程就是DNS的解析
,进行DNS解析的服务器叫DNS服务器
,而DNS服务器便充当了“翻译官”的角色,将域名翻译成IP地址。
3.2. DNS的解析原理
DNS的解析也就是通过域名查找主机的过程,其查找过程主要有三个步骤:
- 本地查询(客户机的DNS解析器)
- 客户机到服务器查询
- 服务器到服务器查询
3.2.1. 1.本地查询
- 在浏览器中输入
www.microsoft.com
域名,操作系统会先检查自己本地的hosts
文件是否有这个域名的映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
Win7系统下本地的hosts
文件在C:\Windows\System32\drivers\etc\hosts
,Linux系统下在:/etc/hosts
。 - 如果
hosts
里没有这个域名的映射,则查找本地DNS解析器缓存
,是否有这个网址映射关系,如果有,直接返回,完成域名解析。 - 如果
hosts
与本地DNS解析器缓存
都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器
,在此我们叫它本地DNS服务器
(也就是上图中中间部分的DNS Server),在本地DNS服务器中查找 。
Win7系统下TCP/IP参数的设置在:控制面板 ->网络和 Internet ->网络连接 ->本地链接 ->属性 ->网络 ->Internet协议版本4(TCP/IPv4)
3.2.2. 2.客户机到服务器查询
本地DNS服务器
收到查询时,如果要查询的域名,包含在本地配置的区域资源文件中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。- 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
- 如果本地DNS服务器
区域资源文件
解析 与缓存
解析都失效,则根据本地DNS服务器的设置(是否设置转发器
)进行查询。
3.2.3. 3.服务器到服务器查询
- 如果未用
转发模式
,本地DNS就把请求发至根DNS服务器
,根DNS服务器
收到请求后会判断这个域名(.com
)是谁来授权管理,并会返回一个负责该顶级域名管理的服务器的IP。本地DNS服务器收到IP信息后,将会联系"负责.com
域名解析的这台服务器“。这台“负责.com
域名解析的服务器”收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(microsoft.com
)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找microsoft.com
域服务器,重复上面的动作,进行查询,直至找到www.microsoft.com
主机。 - 如果用的是
转发模式
,本地DNS服务器就会把请求转发至上一级DNS服务器(microsoft.com
),由上一级服务器进行解析,上一级服务器如果不能解析,会把转请求转至上上级(.com
)或找根DNS服务器,以此循环。不管是本地DNS服务器用是是转发模式,还是非转发模式,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
3.3. 递归查询与迭代查询
3.3.1. 递归查询
主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询,即:完全代理掉主机的查询请求。因此,递归查询返回的查询结果要么是所要查询的IP地址,要么是报错(表示无法查询到所需的IP地址)。
3.3.2. 迭代查询
本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
4. 常用的公共DNS服务器
参见文档: 博客建站 - 常用的公共DNS服务器
大家好,我是陌尘。
IT从业10年+, 北漂过也深漂过,目前暂定居于杭州,未来不知还会飘向何方。
搞了8年C++,也干过2年前端;用Python写过书,也玩过一点PHP,未来还会折腾更多东西,不死不休。
感谢大家的关注,期待与你一起成长。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。