更改AWS上的私人DNS?

有没有办法改变一个EC2服务器的私人DNS? 我希望能够使用类似myserver.example.com的服务器与ip-1.1.1.1-uswest-aws-internal进行通信。 我是新来的系统pipe理员和networking,试图玩弄VPC的DHCP选项集,但无法使其工作。

编辑
澄清我想要实现的目标…我设置了Jenkins,它将在众多服务器上运行从属服务器。 我希望能够使用我自己分配的地址而不是任意的地址,以便更清楚地了解哪台机器正在运行。 我也确信将来也可以使其他服务器间通信变得更加容易。 就像我说的我是新来的系统pipe理员,所以如果有一个更简单的方法,我想念,让我知道。

如果您想通过my-dns-name访问您的服务器,则需要设置您自己的DNS服务器。

默认情况下,AWS VPC为您处理DHCP,并随Amazon的DNS服务器一起提供。

您可以在这里阅读提供您自己的DNS服务器的选项: http : //docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html

DHCP选项名称: 域名服务器

最多四个域名服务器或AmazonProvidedDNS的IP地址。 默认的DHCP选项集指定AmazonProvidedDNS。

DHCP选项名称: 域名

如果您在美国东部(北弗吉尼亚州)地区使用AmazonProvidedDNS,请指定compute-1.amazonaws.com。 如果您在其他地区使用AmazonProvidedDNS,请指定region.compute.amazonaws.com。 否则,请指定一个域名(例如,MyCompany.com)。

其他相关说明:

如果您想使用FQDN(myserver.example.com)进行通信,您可以在没有自己的DNS服务器的情况下执行此操作,则您的域已经可公开访问。

您可以与IP地址通信,私有或公共,您可以在操作系统级别更改私有IP,在操作系统级别更改主机名称,并利用/ etc / hosts来获得一种穷人的DNS。

你可能总是想看看ElasticIPs,弹性networking接口和弹性负载平衡器,它们都和你的问题在同一个空间里。

这一切都取决于你想要达到的目标,以及你想如何去做!

除非您部署自己的名称服务器,否则不能更改它,但是可以通过创buildCNAMElogging轻松地引用其他名称,从而获得所需的效果。

在您的“example.com”DNS区域中,无论是在Route 53中,还是由其他DNS托pipe提供商托pipe,您都应该能够创build创buildCNAMElogging:

 myserver IN CNAME ip-1.1.1.1-uswest-aws-internal. 

当一台机器试图parsing“myserver.example.com”时,“example.com”DNS服务器会告诉它,它应该查询“真正的”内部主机名(“ c ”)。 如果机器位于EC2部署中,它将要求EC2 dnsparsing器查看此信息,EC2parsing器将依次返回内部IP地址…导致您需要的行为 – 您可以访问您的内部机器由你想要的主机名。

如果您的EC2部署之外的系统查找此主机名,它将会失败,这是正确的行为,因为机器无法从外部访问(如果它只有私有IP)。

相反,如果您的计算机具有公用IP和相应的公用主机名,例如使用该主机名作为CNAME目标的ec2-xxxx.us-west-2.compute.amazonaws.com将执行相同的操作。 当从EC2部署中查询时,结果将是内部IP地址,通过EC2透明地执行某些DNS魔术,或者从外部返回外部公共IP地址。

https://stackoverflow.com/a/19148569/1695906

澄清:

有两种DNS服务器行为 – “权威”服务器将回答来自任何主机的任何资源logging(他们是权威的)和recursion的“parsing器”,它们代表他们的授权客户端。 DNS服务器也可以执行这两个function。

您的EC2实例(默认情况下)使用AWSparsing器服务器来查找您的实例尝试访问的任何主机名,并返回一个IP地址…但AWSparsing器对于“.internal”伪域,所以当实例试图查找“。内部”主机时,返回正确的内部IP。

现在,假设您将内部主机名configuration为外部“example.com”DNS服务器中的CNAME目标,然后尝试在内部查找“myserver.example.com”… AWSparsing程序咨询全局DNS层次结构,并最终询问“myserver.example.com”的权威名称服务器之一。 答复将基本上说:“我所知道的是,要findmyserver.example.com,你应该查找ip-1.1.1.1-uswest-aws-internal”… AWSparsing器意识到它不需要咨询外部实体回答这个新的问题,因为它是假的内部域的权威,只是回答正确的答案,它已经知道。

外部“example.com”不需要或尝试validationCNAME目标,因为这不是它的工作。

现在,如果CNAME引用了外部主机名,那么进程是相同的,结果是一样的,因为AWSparsing器(处理所有由您的内部机器做的DNS查询)并不试图真正地查询真实和正确来自“compute.amazonaws.com”域的授权DNS服务器的IP地址…相反,由于它的devise,它再次相信它已经知道外部主机名的IP地址…但是答案将再次成为您的内部私人IP地址。

我上面讲到的AWSparsing器是一个虚拟实体, 只能被您的实例访问。 它包含的有关公共主机名到私有IP映射的信息只有在您的实例查询时才能访问。 它不是外部可访问的。

如果您将内部主机名configuration为CNAME目标,则外部查询将会得到“内部”答案,这对他们来说将是一个死胡同。 如果您提供外部主机名称作为CNAME目标,它们将以公共IP结束,因为查找CNAME会将它们指向公共授权DNS服务器,而不是只有您的实例可以访问的私有内部parsing程序。

这实际上在实践中非常简单,尽pipe在这里不太容易解释,因为DNS的基本原理需要首先被理解,但是这最终起作用,因为“example.com”DNS服务器根本就不用不关心你是否configuration了他们理解的CNAME。 理解它不是他们的问题 – 解决scheme的负担是寻找答案,以便最终了解CNAME中出现的中间答案。

我有同样的问题。 尽pipe我的域名是在亚马逊外部pipe理的,但我使用Amazon Route 53创build私有托pipe名称并添加了CNAMElogging,并将其指向实例的私有AWS DNS名称。 问题是,虽然这解决了子域名的问题,但是它并不适用于根目录“example.com”,因为它违反了CNAME规则。

我已经删除了CNAME条目,并用两个Alogging(example.com和* .example.com)指向我的公有IP。 我使用了一个公共弹性IP,在我的用例中总是相同的,但是你的情况可能会有所不同。 你应该能够使用你的私人IP,但我没有testing这个。

我应该指出我的服务器是基于Windows的,尽pipe这不应该有所作为。 我发现使用NSLOOKUP example.com在一个命令提示符有用的监测变化,如其他职位在这里build议。 我也认为,您所做的任何更改都具有非常低的TTL值,以便尽快应用更改… Amazon Route 53最小预设为60秒,但可能会降低。 我确定设置A唱片是我尝试的第一件事情之一,但它并没有直接传播,所以花了几个小时往下走。

  1. 你需要你自己的DNS服务器,如named。
  2. 看看http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_DHCP_Options.html 。 域名服务器选项是要更改的。

您可以使用路由53中的私人托pipe区域轻松实现此目的http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html