首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure DNS中的通配符和裸CNAME记录

Azure DNS中的通配符和裸CNAME记录
EN

Stack Overflow用户
提问于 2016-01-04 06:43:52
回答 2查看 1.4K关注 0票数 2

我正在将我所有的DNS服务迁移到Azure DNS。使用Powershell,我成功地创建了CNAME记录,以使www.something.com解析到Azure网站-

代码语言:javascript
复制
$rs = New-AzureRmDnsRecordSet -Name "www" -RecordType "CNAME" -ZoneName "something.com" -ResourceGroupName "DNSRecords" -Ttl 60 -Overwrite -Force
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname "MySomethingAzureWebsite.azurewebsites.net"
Set-AzureRmDnsRecordSet -RecordSet $rs -Overwrite

但是如何为通配符和裸地址创建CNAME记录,如

*.something.com或something.com

我想这是(不是双关语)

New-AzureRmDnsRecordSet -Name "www"

但是,通过所有的文档和互联网的例子,我似乎找不到正确的措辞。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-04 07:59:10

您遇到的问题是DNS规则的问题,它禁止在存在另一条记录的情况下使用CNAME记录。裸地址(或Apex) example.com已经有两个记录( SOA和NS),因此不允许使用CNAME。

如果节点上存在CNAME RR,则不应出现其他数据;这将确保规范名称及其别名的数据不会有所不同。此规则还确保可以使用缓存的CNAME,而无需向权威服务器检查其他RR类型。

为了创建一个Apex记录,即example.com,您需要使用一个A记录,这意味着它需要指向您的Azure网站的IP。一旦你拥有了它,你就可以创建一个从www到example.com的CNAME。(这是支持的方法-- Azure网站的IP地址是静态的)

你要找的命令应该是这样的

代码语言:javascript
复制
$rs = New-AzureRmDnsRecordSet -Name "@" -RecordType A `
       -ZoneName example.com -ResourceGroupName $RG `
       -Ttl $ttl -Force -Overwrite
Add-AzureRmDnsRecordConfig -RecordSet $rs -Ipv4Address $IPAddress
Set-AzureRmDnsRecordSet -RecordSet $rs -Overwrite

然后

代码语言:javascript
复制
$rs = New-AzureRmDnsRecordSet -Name "www" -RecordType "CNAME" `
      -ZoneName "something.com" -ResourceGroupName "DNSRecords" `
      -Ttl 60 -Overwrite -Force
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname "example.com"
Set-AzureRmDnsRecordSet -RecordSet $rs -Overwrite

这将创建您的区域顶点记录,并将www名称指向它,使example.com和www.example.com指向相同的位置。

对于通配符,您可以将Apex "@“替换为asterix "*”,如下所示

代码语言:javascript
复制
$rs = New-AzureRmDnsRecordSet -Name "*" -RecordType A `
       -ZoneName example.com -ResourceGroupName $RG `
       -Ttl $ttl -Force -Overwrite
#You know the rest
票数 2
EN

Stack Overflow用户

发布于 2016-01-08 10:57:12

正如前面的回答所述,您不能在区域顶点创建CNAME (name = "@")。这是由于RFC的限制,正确的方法是使用其他记录类型,例如,在区域顶点处使用A记录,正如前面的答复者所解释的那样。

但是,您可以在区域顶点创建通配符CNAME。由于通配符与DNS中的空字符串不匹配,因此它们不会与RFC约束发生冲突。例如,在PowerShell中:

代码语言:javascript
复制
$z = New-AzureRmDnsZone -Name myzone.com -ResourceGroupName MyResourceGroup
$rs = New-AzureRmDnsRecordSet -Name "*" -Zone $z -Ttl 3600 -RecordType CNAME
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname cnametarget.com
Set-AzureRmDnsRecordSet -RecordSet $rs

这将解决对例如foo.myzone.com的查询,而不解决myzone.com的查询。

维基百科有一个很好的网页以了解有关通配符DNS的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34585964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档