我正在将我所有的DNS服务迁移到Azure DNS。使用Powershell,我成功地创建了CNAME记录,以使www.something.com解析到Azure网站-
$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"
但是,通过所有的文档和互联网的例子,我似乎找不到正确的措辞。
发布于 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地址是静态的)
你要找的命令应该是这样的
$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然后
$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 "*”,如下所示
$rs = New-AzureRmDnsRecordSet -Name "*" -RecordType A `
-ZoneName example.com -ResourceGroupName $RG `
-Ttl $ttl -Force -Overwrite
#You know the rest发布于 2016-01-08 10:57:12
正如前面的回答所述,您不能在区域顶点创建CNAME (name = "@")。这是由于RFC的限制,正确的方法是使用其他记录类型,例如,在区域顶点处使用A记录,正如前面的答复者所解释的那样。
但是,您可以在区域顶点创建通配符CNAME。由于通配符与DNS中的空字符串不匹配,因此它们不会与RFC约束发生冲突。例如,在PowerShell中:
$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的更多信息。
https://stackoverflow.com/questions/34585964
复制相似问题