腾讯云私有域解析PrivateDNS完全对接指南:从VPC内网解析到混合云互联
1. 产品概述:重新定义VPC内网DNS
在传统IDC架构中,内网域名解析往往依赖自建DNS服务器或修改主机hosts文件,前者运维成本高,后者扩展性差。当业务迁移到腾讯云VPC环境后,这一问题有了更优雅的解决方案——私有域解析PrivateDNS。
私有域解析PrivateDNS是腾讯云面向企业内网场景(主要为VPC环境)提供的完整DNS解析服务,涵盖私有域管理、递归解析等功能模块。它的核心价值在于:允许用户在VPC内灵活定制任意私有域名,无需担心域名被他人注册,也不必担心在VPC之外能查询到这些私有域名。通过私有域名记录,可以方便地管理VPC关联的CVM、CLB、CDN、COS等腾讯云自有资源,而这些私有域名在VPC之外无法访问。
与公网DNS不同,PrivateDNS的解析结果仅在关联的VPC内生效,天然具备内网隔离的安全特性。同时,它支持子域名递归解析——当私有域中未配置某子域名的解析记录时,查询请求会自动转至公共DNS进行解析。这一设计既保证了私有域配置的灵活性,又不会阻断对公网域名的正常访问。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
2. 核心功能解析
2.1 私有域管理
私有域是PrivateDNS的核心资源对象,相当于传统DNS中的Zone。用户可以在私有域中创建多条解析记录,每条记录将子域名映射到具体的资源地址。支持的记录类型覆盖了绝大多数业务场景:
- A记录:将域名指向IPv4地址,是最常用的记录类型
- AAAA记录:将域名指向IPv6地址
- CNAME记录:将域名指向另一个域名,实现别名映射
- MX记录:邮件交换记录,用于邮件服务器的路由
- TXT记录:可填写任意文本,常用于SPF反垃圾邮件验证
- PTR记录:反向解析记录,从IP地址映射到域名
- SRV记录:标识某台服务器提供的特定服务,格式为"服务名.协议类型"
- SPF记录:指定允许发送邮件的服务器
- CAA记录:授权指定CA机构为域名签发SSL证书
2.2 关联VPC
私有域创建后,需要关联到一个或多个VPC才能生效。关联后,该VPC内的所有云资源(CVM、容器、负载均衡等)都可以通过私有域名访问对应的内网资源。值得注意的是,相同名称的私有域不能关联同一个VPC。例如,如果同时存在两个名为"tencent.com"的私有域,无法将两者都关联到同一个VPC。
关联VPC之前,务必先在私有域中添加至少一条解析记录。这一设计是为了防止空解析直接关联VPC时,对正在解析的公网域名形成意外的内网劫持阻断。
2.3 子域名递归解析
开启子域名递归解析功能后,当在VPC内查询某私有域的子域名时,如果该子域名未在私有域中配置解析记录,系统会自动将查询请求转发至公共DNS进行解析。如果未开启该功能,未配置的子域名将无法被解析。这一功能在混合场景中尤其实用——既希望部分子域名指向内网IP,又不希望其他子域名的公网解析被阻断。
2.4 反向解析
反向解析指从IP地址到域名的映射,通过查询IP地址的PTR记录来获取对应的私有域名。这在日志分析、安全审计等场景中非常有用,可以将IP地址转换为更易读的域名标识。
3. 快速上手:从零搭建内网DNS
3.1 开通服务
登录腾讯云DNSPod控制台,进入内网解析页面。首次使用时,系统会提示开通PrivateDNS服务,按照指引完成开通即可。PrivateDNS采用按量付费模式,无需预付费即可开始使用。
3.2 创建私有域
在内网解析页面的域名列表页签中,单击"新建私有域"。配置以下关键参数:
- 域名:自定义输入想要创建的私有域名,支持符合IANA规范的标准TLD域名。如需使用非标准TLD(如".corp"、".internal"),需要购买增值服务优惠包
- 关联VPC:选择当前PrivateDNS支持的地域中已创建的VPC进行关联。建议先创建私有域并添加解析记录后再关联VPC
- 标签:通过标签对云资源进行分类、搜索和聚合管理
- 备注:填写私有域的备注信息以便识别
- CNAME加速:开启后在设置多级CNAME记录时可减少解析次数,提升解析速度
- 子域名递归解析:默认关闭,根据实际需求决定是否开启
配置完成后单击确定即可创建私有域。
3.3 添加解析记录
创建私有域后,单击私有域名称进入解析记录页面,单击"添加记录"进行配置。以最常见的A记录为例:
- 主机记录:子域名前缀,如"www"、"api",或使用"@"表示主域名本身
- 记录类型:选择A
- 记录值:填写目标云资源的内网IP地址
- TTL:记录缓存时间,取值1-86400秒,默认600秒。值越小生效越快,但会增加DNS服务器回源请求频率
- 权重:取值1-100,用于负载均衡场景
- 备注:可选,用于标识该记录的用途
对于MX记录,还需要额外填写MX优先级(5/10/15/20/30/40/50)。
3.4 验证解析效果
在已关联VPC内的任意CVM上,使用nslookup或dig命令验证解析是否生效:
nslookup www.example.com
# 或
dig www.example.com如果返回的IP地址与解析记录中配置的一致,说明PrivateDNS已正常工作。
4. 编程对接:API与SDK实践
4.1 API概述
PrivateDNS提供了完整的RESTful API接口,接口请求域名为privatedns.tencentcloudapi.com。支持的操包括创建私有域、添加解析记录、关联VPC、修改记录等。API调用频率限制默认为20次/秒。
腾讯云提供了API Explorer工具,支持在线调用、签名验证、SDK代码生成和快速检索接口等能力。用户可以通过API Inspector查看控制台每一步操作关联的API调用情况,并自动生成各语言版本的API代码。
4.2 Python SDK调用示例
腾讯云官方提供了Python SDK——tencentcloud-sdk-python-privatedns,可通过pip安装:
pip install tencentcloud-sdk-python-common tencentcloud-sdk-python-privatedns以下示例演示如何使用Python SDK创建私有域并添加A记录:
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.privatedns.v20201028 import privatedns_client, models
# 初始化认证信息
cred = credential.Credential("你的SecretId", "你的SecretKey")
# 配置HTTP
httpProfile = HttpProfile()
httpProfile.endpoint = "privatedns.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 创建客户端
client = privatedns_client.PrivateDnsClient(cred, "", clientProfile)
# 1. 创建私有域
req = models.CreatePrivateZoneRequest()
params = {
"Domain": "mycompany.local",
"Remark": "企业内部私有域",
"VpcSet": [
{
"Region": "ap-guangzhou",
"VpcId": "vpc-xxxxxxxx"
}
]
}
req.from_json_string(json.dumps(params))
resp = client.CreatePrivateZone(req)
print("私有域ID:", resp.ZoneId)
# 2. 添加A记录
req_record = models.CreatePrivateZoneRecordRequest()
params_record = {
"ZoneId": resp.ZoneId,
"RecordType": "A",
"SubDomain": "www",
"RecordValue": "10.0.1.100",
"TTL": 600
}
req_record.from_json_string(json.dumps(params_record))
resp_record = client.CreatePrivateZoneRecord(req_record)
print("记录ID:", resp_record.RecordId)修改解析记录的示例:
req_modify = models.ModifyPrivateZoneRecordRequest()
params_modify = {
"ZoneId": "zone-xxxxxx",
"RecordId": "289",
"RecordType": "A",
"SubDomain": "@",
"RecordValue": "10.0.1.200",
"TTL": 600,
"Weight": "100"
}
req_modify.from_json_string(json.dumps(params_modify))
resp_modify = client.ModifyPrivateZoneRecord(req_modify)
print("修改成功")4.3 Terraform基础设施即代码
对于追求自动化运维的团队,可以使用Terraform管理PrivateDNS资源。以下是一个简单的Terraform配置示例:
provider "tencentcloud" {
secret_id = "你的SecretId"
secret_key = "你的SecretKey"
region = "ap-guangzhou"
}
resource "tencentcloud_private_dns_zone" "example" {
domain = "company.internal"
remark = "Terraform管理的私有域"
vpc_set {
region = "ap-guangzhou"
vpc_id = "vpc-xxxxxxxx"
}
}
resource "tencentcloud_private_dns_record" "api" {
zone_id = tencentcloud_private_dns_zone.example.id
record_type = "A"
sub_domain = "api"
record_value = "10.0.2.50"
ttl = 300
}5. 混合云场景:云上与云下双向DNS互通
混合云是当下企业IT架构的常态——部分业务部署在腾讯云VPC,部分业务仍运行在本地IDC或其他云厂商。PrivateDNS通过入站终端节点和出站终端节点两大组件,实现了云上与云下的双向DNS互通。
5.1 入站终端节点:云下访问云上
入站终端节点的使用场景是:云下环境(本地数据中心或其他云)的应用需要访问腾讯云VPC内的内网资源。通过创建入站终端节点,可以在VPC内分配自定义的内网DNS解析服务地址(私网IP),云下资源的DNS客户端通过专线或VPN从该地址发起解析请求。
配置步骤:
- 登录私有域解析PrivateDNS控制台,进入服务地址页面
- 单击"新建入站终端节点"
- 配置终端节点名称、入站VPC、入站服务IP地址(选择子网后自动匹配或手动输入)
- 该IP地址即配置到其他云/IDC中的DNS服务器地址
请求流程:云下资源发起域名解析请求 → 通过专线从入站终端节点向PrivateDNS服务器发起查询 → PrivateDNS服务器解析域名 → 返回解析结果给云下资源。
入站终端节点当前开放的地域包括:北京、上海、广州、成都、重庆、中国香港、圣保罗。计费方式为:入站终端节点IP按1元/个/小时计费,入站解析量按0.03元/万次计费。
5.2 出站终端节点与转发规则:云上访问云下
出站终端节点与转发规则解决的是反向问题:云上VPC内的应用需要访问云下IDC或其他云的内网资源。通过在PrivateDNS中配置转发规则,将特定域名的DNS请求转发到云下的DNS服务器。
配置步骤:
- 在转发管理页面单击"出站终端节点",单击"创建终端节点"
- 配置终端节点名称、地域、网络接入类型(内网CLB或CCN路由接入)
- 选择所属私有网络
- 配置转发目标:流量被转发的目标服务器IP和端口(一个终端节点最多支持绑定5个转发目标)
转发流程:云上资源发起DNS查询 → PrivateDNS服务器检查转发规则 → 命中规则后通过出站终端节点转发给云下DNS服务器 → 云下DNS返回解析结果 → PrivateDNS将结果返回给云上资源。
出站终端节点当前开放的地域包括:北京、广州、杭州、上海、上海自动驾驶云、新加坡、东京、法兰克福。计费方式为:出站终端节点IP按1元/个/小时计费,转发解析量按0.03元/万次计费。
5.3 跨账号VPC关联
在企业多账号架构中,经常需要将账号A的私有域关联到账号B的VPC。PrivateDNS支持跨账号关联VPC。操作流程分为两步:
- B账号给A账号授权:B账号登录访问管理控制台,创建角色,选择"其他主账号"并填写A账号ID,配置QcloudVPCReadOnlyAccess策略,角色名称格式为
PRIVATEDNS_ACCOUNT_被授权UIN - A账号添加B账号为关联账号:A账号登录PrivateDNS控制台,选择需要授权的私有域,单击"关联VPC",在窗口中单击"添加账号",输入B账号ID
6. 计费模型与成本优化
6.1 计费构成
PrivateDNS采用按量付费模式,主要收费项包括:
| 计费项 | 计费标准 | 计费周期 |
|---|---|---|
| 私有域数量 | 0.1元/个/天 | 按天结算 |
| 域名解析请求量 | 0.03元/万次 | 按天结算 |
| 出站终端节点IP | 1元/个/小时 | 按天结算 |
| 出站转发请求量 | 0.03元/万次 | 按天结算 |
| 入站终端节点IP | 1元/个/小时 | 按天结算 |
| 入站转发请求量 | 0.03元/万次 | 按天结算 |
私有域运行未满一个自然日不计费。终端节点IP运行未满1小时不计费。
6.2 免费额度
PrivateDNS提供的私有域免费额度将自动抵扣每个自然日消耗量,当日消耗量超出免费额度后按正常计费。解析请求量也有每月免费额度,超出后按量付费。
6.3 增值服务包
基于按量计费模式,PrivateDNS还提供预付费增值服务包。用户可购买域名包(抵扣私有域数量费用)和流量包(抵扣解析请求量费用)。抵扣顺序为:免费额度优先 → 增值服务包其次 → 超出部分按量付费。
6.4 成本优化策略
- 合理设置TTL:TTL越长,DNS服务器回源频率越低,计费的解析请求量越少。但TTL过长会导致域名变更生效慢
- 配置NSCD缓存:在CVM上配置NSCD服务实现缓存加速,减少回源请求次数
- 预估用量购买增值包:对于解析量稳定的业务,购买流量包可有效降低成本
7. 使用限制与性能考量
7.1 关键限制阈值
PrivateDNS存在以下使用限制:
| 限制项 | 限制阈值 |
|---|---|
| 解析记录数量 | 10万条/账号 |
| 私有域数量 | 500个/账号 |
| TTL范围 | 1-86400秒 |
| VPC内单实例解析总请求量 | 5000次/秒 |
| VPC内单实例外部递归解析请求量 | 100次/秒 |
| VPC内所有实例外部递归解析总请求量 | 1000次/秒 |
| VPC内单个域名外部递归解析请求量 | 30次/秒 |
7.2 DNS配置要求
腾讯云默认DNS服务器地址为183.60.83.19和183.60.82.98。**如果不使用腾讯云默认DNS,将无法使用私有域解析PrivateDNS提供的服务**。如需修改CVM的DNS配置,请参考获取内网IP地址和设置DNS的相关文档。
7.3 协议与响应限制
VPC内实例通过PrivateDNS的DNS请求协议仅支持UDP协议,且单个响应包小于512字节。
8. 典型应用场景
8.1 容器服务TKE集群内网访问
TKE集群开启内网访问后,默认通过域名访问集群。传统方式需要在每台访问机上配置hosts,管理成本高。使用PrivateDNS后,只需三步即可完成:创建私有域并关联VPC → 添加A记录指向集群内网IP → 验证解析效果。这样所有VPC内的CVM都可以直接通过域名访问TKE集群,无需维护hosts文件。
8.2 微服务架构服务发现
在微服务架构中,服务实例的IP地址频繁变化。通过PrivateDNS,可以为每个服务分配固定的私有域名(如"order-service.internal"),服务注册时通过API自动更新解析记录指向最新的实例IP。这样服务间调用只需使用域名,无需感知IP变化。
8.3 跨地域内网访问
配合云联网(CCN)或对等连接,PrivateDNS可以实现跨地域VPC的内网域名解析。在多个地域部署的VPC,通过云联网互联后,只需在PrivateDNS中关联所有VPC,即可实现跨地域通过私有域名访问资源。
9. 常见问题与解答
问1:PrivateDNS和公网DNS的区别是什么?
答:PrivateDNS仅对关联的VPC内生效,解析结果在VPC外部无法访问,天然具备内网隔离的安全特性。而公网DNS解析结果全球可访问。PrivateDNS支持自定义任意私有域名(包括非标准TLD),无需在域名注册商处注册。
问2:私有域创建后可以修改域名吗?
答:不支持直接修改私有域的域名。如需更换域名,需要重新创建私有域并配置解析记录,然后关联VPC。建议在创建前仔细规划域名命名规范。
问3:PrivateDNS会影响公网域名的正常解析吗?
答:不会。只有在关联VPC内查询已配置的私有域时才会返回内网解析结果。如果开启子域名递归解析,未配置的子域名会转至公共DNS查询。公网域名不受任何影响。
问4:如何降低PrivateDNS的费用?
答:主要从三方面入手:(1)合理设置TTL值,TTL越长回源请求越少;(2)在CVM上配置NSCD缓存,减少回源次数;(3)对于解析量稳定的业务,购买流量包和域名包进行预付费抵扣。
问5:跨账号关联VPC时提示授权失败怎么办?
答:请检查以下环节:(1)被授权账号是否正确创建了角色,角色名称是否符合PRIVATEDNS_ACCOUNT_被授权UIN格式;(2)角色是否配置了QcloudVPCReadOnlyAccess策略;(3)授权账号在添加关联账号时输入的账号ID是否正确。
问6:PrivateDNS支持哪些地域?
答:PrivateDNS开放地域包括北京、上海、广州、成都、重庆、武汉、济南、石家庄、南京、合肥、沈阳、长沙、郑州、西安、福州、杭州、中国香港、硅谷、新加坡、法兰克福、雅加达、曼谷、弗吉尼亚、东京、首尔,以及北京金融区、上海金融区、深圳金融区。





