域名解析看起来只是填几条记录,但网站能不能打开、邮件能不能收、证书能不能通过验证,很多时候都卡在这一步。阿里云云解析DNS的功能比较完整,不过记录类型多,参数也不少,第一次配置时很容易填错位置。这篇文章先讲解析的基本过程,再说A、CNAME、MX三类记录各自该填什么,最后给出控制台的操作步骤和排查顺序。

域名解析在做什么
浏览器里输入 www.example.com 后,本地网络会向DNS服务器查询这个名字对应什么地址。服务器返回记录值,浏览器再去连接那个地址。所以解析表里的每一行,都是在回答一个问题:这个名字应该指向哪里。
在阿里云上配置之前,有三件事要先确认:域名已经注册或迁入阿里云,域名的DNS服务器已经指向阿里云提供的解析服务器,控制台里已经为该域名添加了记录。前两项没到位,控制台里改得再对也不会对外生效。
A、CNAME、MX 三类记录怎么填
解析记录类型很多,平时真正频繁用到的只有几种。下面三类最常被问到,也最容易混淆。
A记录:指向一个IPv4地址
记录值填服务器的公网IPv4地址,例如 203.0.113.10。主机记录填 @ 表示根域名 example.com,填 www 表示 www.example.com。官网直接跑在一台云服务器上时,通常要给 @ 和 www 各加一条A记录,这样带不带www的访问都能到达站点。AAAA记录用法相同,只是记录值换成IPv6地址。
CNAME记录:指向另一个域名
记录值填的是另一个域名。它适合把子域名交给CDN、对象存储、负载均衡这类服务,因为这些服务的IP经常变化,由服务商自己的域名统一维护会省事。比如 static.example-media.com 的CNAME指向CDN分配的加速域名,之后IP怎么变都由CDN处理。
同一个主机记录下,CNAME通常不能和其他记录并存。原来有A记录的话,要先删掉再添加CNAME,否则保存时会报冲突。另外,直接在根域名 @ 上添加CNAME会受到限制,很多情况下做不到,需要按服务商的说明处理。
MX记录:指定邮件服务器
MX记录决定发往这个域名的邮件送到哪台服务器。记录值填邮箱服务商在后台给出的收信服务器地址,具体内容以服务商为准。每条MX都要设置优先级,数字越小优先级越高,通常会配两到三条做备份。MX填错,最直接的表现是对方发来的邮件收不到。
如果只是想让一个域名跳转到另一个网址,控制台里还有显性URL和隐性URL两种转发设置。它们不属于标准DNS记录,区别在于显性跳转会改变地址栏,隐性跳转则保持原地址。
控制台添加记录的步骤
登录阿里云控制台,进入云解析DNS,选中要配置的域名,点击添加记录,大致按下面的顺序操作:
- 确认域名状态正常,DNS服务器已指向阿里云。
- 选择记录类型,例如A、CNAME或MX。
- 填写主机记录。@ 是根域名,www 是www子域名,* 是泛解析,会匹配没有单独设置的子域名。
- 填写记录值。A记录填IP,CNAME填域名,MX填邮件服务器地址。
- MX记录额外填写优先级。
- 解析线路一般保持默认。只有需要按运营商或地区返回不同结果时,才选择对应线路。
- 设置TTL,保存后等待生效,再用 ping 或 nslookup 验证。
TTL值得单独说一下。它决定记录在缓存里保留多久,单位是秒。设得短,改动生效快,但查询压力大;设得长,访问稳定,但改完之后旧值会在不少网络里停留一段时间。迁移服务器前,可以先把TTL调到600秒左右,等切换完成、结果稳定后再调回平时的值。
三个常见场景
把官网指向云服务器
假设一个小型电商站买了一台ECS,要用 www.example-shop.com 访问。给 www 添加一条A记录,再给 @ 添加一条A记录,记录值都填服务器公网IP。解析改好后,还要检查服务器上的Nginx或其他Web服务是否在运行,安全组是否放行了80和443端口。很多人改完解析还是打不开页面,问题往往出在后两项,而不是解析本身。
接入CDN后的静态资源域名
假设内容站开通了CDN,平台分配了一个加速域名。此时在云解析里为 static.example-media.com 添加CNAME,记录值填CDN给出的域名。生效后,这个子域名的请求由CDN节点响应。如果该主机记录下原来有A记录,删掉旧记录再添加CNAME即可。
配置企业邮箱
一家科技公司使用企业邮箱,希望对外邮件能正常送达。通常要配三类记录:MX记录指向邮箱服务商的收信服务器,并设置优先级;TXT记录用于域名归属验证,内容由服务商后台给出;SPF的TXT记录声明哪些服务器有权代表这个域名发信,有助于降低被判为垃圾邮件的概率。三条记录彼此独立,任何一条填错都可能影响收信或发信。配置完成后,建议发一封测试邮件,再用在线工具检查MX和SPF是否生效。
用API批量管理
域名较多,或者需要和发布流程打通时,手动改记录效率很低。云解析提供了API,添加、修改、查询记录都可以通过SDK完成。下面是用Python SDK添加A记录的例子。凭证从环境变量读取,不要直接写进代码或提交到代码仓库。
# 需先安装:pip install alibabacloud_alidns20150109
import os
from alibabacloud_alidns20150109.client import Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_alidns20150109 import models as alidns_models
config = open_api_models.Config(
access_key_id=os.environ["ALIBABA_CLOUD_ACCESS_KEY_ID"],
access_key_secret=os.environ["ALIBABA_CLOUD_ACCESS_KEY_SECRET"],
endpoint="alidns.cn-hangzhou.aliyuncs.com"
)
client = Client(config)
request = alidns_models.AddDomainRecordRequest(
domain_name="example.com",
rr="www",
type_="A",
value="203.0.113.10",
ttl=600
)
response = client.add_domain_record(request)
print("记录已添加,RecordId:", response.body.record_id)
建议给调用的账号分配最小权限,只开放云解析相关操作。主账号密钥一旦泄露,影响范围会大得多。
解析不生效时按这个顺序查
- 记录值是否正确:用 nslookup 或 dig 查询,返回结果和控制台是否一致。
- 缓存是否已过期:本地或运营商的DNS缓存可能还留着旧值,等TTL过去,或用公共DNS做对比测试。
- NS是否指向阿里云:如果域名的DNS服务器仍是其他服务商,控制台里的改动不会对外生效。
- 记录是否冲突:CNAME与A并存,或同一主机记录下有相互矛盾的值,都会导致异常。
- 服务端是否就绪:端口、Web服务和证书是否正常,证书是否覆盖当前域名。
排查时每次只改一项,改完立即验证,这样更快能定位到是哪一步出了问题。
小结
阿里云域名解析的难点通常不在操作步骤上,关键是先想清楚这个名字要指向什么。指向IP用A,指向CDN或其他服务用CNAME,收发邮件走MX。选对类型,设好TTL,修改前留一份原记录,修改后立刻验证,大部分问题都能避开。