指向 Azure VM 时如何正确设置 CNAME / A 记录?

指向 Azure VM 时如何正确设置 CNAME / A 记录?

我有一个托管在 Azure 中的 Web 应用程序,它为我提供了一个“自定义”域awesomeapp.cloudapp.net,并且在设置中我可以看到 IP 地址:123.456.789

www.awesomeapp.com我们有一个指向宣传公司和应用程序服务的登陆页面的域名,并且我配置了如下 A 记录:

app.awesomeapp.com=>123.456.789

效果很好。

问题是,有时我们必须关闭虚拟机,而再次打开时 IP 会有所不同,因此 A 记录不再起作用。如果我设置这样的 CNAME 记录是否有效?

app.awesomeapp.com=>awesomeapp.cloudapp.net

这样可以解决每次打开/关闭机器时 IP 不同的问题。这样可行吗?CNAME 就是用来干这个的吗?这是个好做法吗(就性能和安全性而言)

答案1

正是出于这个原因,使用 CNAME 是 Azure 的标准做法,它可以防止 IP 更改成为问题。

如果出于某种原因你需要使用 A 记录,那么你可能想要使用保留 IP,即使您重新启动或关闭虚拟机,它仍将保持不变。

答案2

针对 CNAME:

存在(微小的)性能损失,因为下游 DNS 缓存需要执行 2 次 DNS 查找,一次查找 CNAME,一次查找 CNAME 指向的 A 记录。关于 CNAME 的“权威性”较低或兼容性问题的含糊、虚假的论点。

支持 CNAME:

它们在硬件(物理服务器)和服务之间提供了清晰的抽象。它们简化了 DNS 管理 - 当服务器移动时,您只需更改一条记录。在尝试了几种不同的方法后,我现在有了个人最喜欢的风格。它是:

每个物理服务器一个 A 记录;TTL 值相当低(可能为 30 分钟);为服务器提供一个人性化的名称。每个服务一个 CNAME;TTL 值较高(可能为 24 小时);指向上述服务器名称。作为上述规则的唯一例外,域根是 A 记录,指向 Web 服务器/Web 负载均衡器。(@ 必须是 A 记录。)我发现此设置效果很好。它使 CNAME 的额外 DNS 查找保持低位;如果服务器崩溃,我仍然可以相当快地更改公共 DNS。

以下是 BIND 语法的一个(即兴)示例:

;name     ttl   class rr     value 
server01  30m   IN    A      192.168.0.3
server02  30m   IN    A      192.168.0.4

webmail   24h   IN    CNAME  server01
extranet  24h   IN    CNAME  server02
ftp       24h   IN    CNAME  server02

相关内容