我应该使用什么DNS服务器来接收我的nginxparsing器的AWS内部地址?

我正在使用AWS Elasticache服务器example.foo.euw1.cache.amazonaws.com ,我希望nginx能够在位置指令中使用(这只是一个简单的例子):

location /cached { set $memcached_key $uri; memcached_pass example.foo.euw1.cache.amazonaws.com:11211; try_files $uri =404; } 

由于Elasticache节点IP地址可以更改,因此我不想使用example.foo.euw1.cache.amazonaws.com的当前IP地址。

我应该使用什么resolver IP来获取AWS内部IP地址(10.x)而不是面向公众的版本(79.x)?

在nginx运行的机器上,我可以用这些host调用来模拟这个:

 $ host example.foo.euw1.cache.amazonaws.com $ 10.120.40.80 $ # ^^^ that's the correct internal address I want to use $ $ host example.foo.euw1.cache.amazonaws.com 8.8.4.4 $ 79.125.100.150 $ # ^^^ that's the public IP that I don't want to use 

例如,如果我使用Google公有DNS和parsing器,我会得到79.x地址,而不是我想要的10.x。

 location /cached { resolver 8.8.4.4 ipv6=off valid=5m; set $memcached_key $uri; memcached_pass example.foo.euw1.cache.amazonaws.com:11211; try_files $uri =404; } 

我不能使用127.0.0.1,因为我没有运行自己的DNS服务器。

dig +trace example.foo.euw1.cache.amazonaws.com

给出了这个痕迹;

 dig +trace example.foo.euw1.cache.amazonaws.co ; <<>> DiG 9.3.4 <<>> +trace example.foo.euw1.cache.amazonaws.co ;; global options: printcmd . 518400 IN NS L.ROOT-SERVERS.NET. . 518400 IN NS M.ROOT-SERVERS.NET. . 518400 IN NS A.ROOT-SERVERS.NET. . 518400 IN NS B.ROOT-SERVERS.NET. . 518400 IN NS C.ROOT-SERVERS.NET. . 518400 IN NS D.ROOT-SERVERS.NET. . 518400 IN NS E.ROOT-SERVERS.NET. . 518400 IN NS F.ROOT-SERVERS.NET. . 518400 IN NS G.ROOT-SERVERS.NET. . 518400 IN NS H.ROOT-SERVERS.NET. . 518400 IN NS I.ROOT-SERVERS.NET. . 518400 IN NS J.ROOT-SERVERS.NET. . 518400 IN NS K.ROOT-SERVERS.NET. ;; Received 228 bytes from 172.16.0.23#53(172.16.0.23) in 0 ms com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. ;; Received 503 bytes from 199.7.83.42#53(L.ROOT-SERVERS.NET) in 30 ms amazonaws.com. 172800 IN NS u1.amazonaws.com. amazonaws.com. 172800 IN NS u2.amazonaws.com. amazonaws.com. 172800 IN NS r1.amazonaws.com. amazonaws.com. 172800 IN NS r2.amazonaws.com. ;; Received 191 bytes from 192.5.6.30#53(a.gtld-servers.net) in 20 ms euw1.cache.amazonaws.com. 300 IN NS ns-1439.awsdns-51.org. euw1.cache.amazonaws.com. 300 IN NS ns-108.awsdns-13.com. euw1.cache.amazonaws.com. 300 IN NS ns-738.awsdns-28.net. euw1.cache.amazonaws.com. 300 IN NS ns-1905.awsdns-46.co.uk. ;; Received 196 bytes from 156.154.64.10#53(u1.amazonaws.com) in 12 ms example.foo.euw1.cache.amazonaws.co. 15 IN CNAME ec2-79-125-28-100.eu-west-1.compute.amazonaws.com. euw1.cache.amazonaws.com. 172800 IN NS ns-108.awsdns-13.com. euw1.cache.amazonaws.com. 172800 IN NS ns-1439.awsdns-51.org. euw1.cache.amazonaws.com. 172800 IN NS ns-1905.awsdns-46.co.uk. euw1.cache.amazonaws.com. 172800 IN NS ns-738.awsdns-28.net. ;; Received 246 bytes from 205.251.197.159#53(ns-1439.awsdns-51.org) in 10 ms 

我可以安全地使用u1.amazonaws.com,u2.amazonaws.com,r1.amazonaws.com,r2.amazonaws.com服务器之一吗?

编辑1:看起来不像我可以,因为尝试使用这些服务器(实际上任何awsdns服务器)与host调用要么不返回地址或返回5(REFUSED)

编辑2啊,如果我在DHCP分配的数据左右挖,我可以看到我需要使用的IP地址:

 $ grep domain-name-servers /var/lib/dhcp3/dhclient.* $ /var/lib/dhcp3/dhclient.eth0.leases: option domain-name-servers 172.16.0.23; 

然后在host调用中使用172.16.0.23地址可以正确返回内部10.x地址。

这仍然感觉有点脆弱,因为DHCP分配名称服务器可能会改变…

在VPC中,使用169.254.169.253

这与使用由DHCP分配的CIDR基地址+2地址相同,但是更便于使用,因为它不依赖于正好部署机器的VPC的IP编号。 您可以在任何AWS区域的任何VPC中部署相同的configuration,并且此地址将永远是可工作的内部DNSparsing器。

如果[ enableDnsSupport ]为true,那么对169.254.169.253 IP地址的Amazon提供的DNS服务器的查询或VPC IPv4networking范围基址的保留IP地址加2将会成功。

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html#vpc-dns-support

对于EC2-Classic中的实例,即使DNSparsing器由DHCP提供,也不会改变。 总是172.16.0.23。

Amazon提供了一个DNS服务器,可将Amazon提供的IPv4 DNS主机名parsing为IPv4地址。 在EC2-Classic中,Amazon DNS服务器位于172.16.0.23

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#amazon-dns-server