如何在 AWS VPC 上实现 DHCP、DNS、主机名

如何在 AWS VPC 上实现 DHCP、DNS、主机名

这就是我认为可能发生的事情,也是我想要的。

我在 Amazon 中创建了一个 VPC,将一个公共子网放入其中,并在 VPC 中放置一个 Puppet 服务器实例和一个全栈 Web 服务器实例。

现在我将 Puppet 服务器的主机名设置为“puppet”,将 Web 服务器的主机名设置为“webserver”。

然后,我设置一个 DHCP 选项集,域名为“my-company-name.com.local”,使用 Amazon 提供的 DNS,并将其与 VPC 关联。我使用 Route 53 创建具有相同域名的区域记录。

然后我强制这两个实例获取新的 DHCP 租约,然后瞧!它们获得私有 IP 地址,并且 DNS 会自动更新以进行正向和反向 DNS 查找。

现在“puppet.mycompany.com.local”可以在我的 VPC 网络的私有端找到“webserver.mycompany.com.local”,反之亦然。

两个问题是:A) DNS 和 DHCP 就是这样工作的吗(尤其是它们之间的自动协作)?我不必在 DNS 记录中手动输入 DHCP 分配的 IP 地址,对吗?B) 我如何设置它才能工作,最有可能的是,我需要创建哪些 DNS 记录以及任何其他步骤?

答案1

似乎有两种方法。但回顾一下第二种方法,Route 53 中没有动态 DNS,即 AWS 上的 VPC 中的 DHCP 和 DNS 之间没有协作。

方法 1:http://www.ducea.com/2009/06/01/howto-update-dns-hostnames-automatically-for-your-amazon-ec2-instances/(需要网络中有 Bind9 DNS 服务器)

方法 2:http://cantina.co/automated-dns-for-aws-instances-using-route-53/(需要一组脚本和下载的库,另外还要放置一个 IAM 角色凭证,允许在系统中的每个服务器上进行 DNS 更新。一旦一个盒子被黑客入侵,您的网络就完蛋了。)

我该怎么办?无论如何我都需要运行 puppet,而 TheForeman 附带 Bind9 和 dhcp 服务器。所以我将为此专门创建一个实例。

答案2

我使用了上述问题的详细信息;这里还有一些补充内容:

在您的内部托管区域(例如这里), 为你的主机创建 CNAME 而不是 A 记录,例如

test.in. CNAME ip-10-0-9.56.us-west-2.compute.internal

对于 DHCP 选项集,请确保您已设置以下内容

domain-name = in
domain-name-servers = AmazonProvidedDNS 

答案3

如果您使用脚本来部署 ec2 实例:您可以在创建它的同时设置 DNS 记录,即(terraform)

resource "aws_route53_record" "ec2_alias_record" {
   zone_id = "${var.domain_id}"
   name = "MyComputer"
   type = "CNAME"
   ttl = "300"
   records = ["${aws_instance.ec2_instance.public_ip}"]
}

每次创建(重新创建)实例时,记录都会更新。并且,您可以参数化,以便通过循环使用一些 count.index +1 变量来创建 N 个实例和 N 条记录。希望这能有所帮助。

相关内容