Que servidor DNS devo usar para receber endereços internos da AWS para o meu resolvedor nginx?

2

Estou usando um servidor AWS Elasticache example.foo.euw1.cache.amazonaws.com que eu quero que o nginx possa usar em uma diretiva de localização (este é apenas um exemplo simplista) :

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

Como os endereços IP do nó Elasticache podem mudar, não quero usar o endereço IP atual de example.foo.euw1.cache.amazonaws.com.

Qual resolver IP devo usar para obter endereços IP internos da AWS (10.x) em vez das versões públicas (79.x)?

Na máquina em que o nginx está sendo executado, posso imitar isso com essas host chamadas:

$ 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

Por exemplo, se eu usar o DNS público do Google com o resolvedor, receberei endereços 79.xe não os 10.x que eu quero:

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;
}

Não posso usar 127.0.0.1, pois não estou executando meu próprio servidor DNS.

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

indica este traço;

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

Posso usar com segurança um dos servidores u1.amazonaws.com, u2.amazonaws.com, r1.amazonaws.com, r2.amazonaws.com?

Editar 1: não parece que eu possa, como tentar usar esses servidores (e na verdade qualquer um dos servidores awsdns) com uma chamada host ou não retornar endereços ou devolve 5(REFUSED) .

Editar 2 ah, se eu pesquisar nos dados atribuídos pelo DHCP, posso ver o endereço IP que preciso usar:

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

E, em seguida, o uso desse endereço 172.16.0.23 em uma chamada host retorna corretamente o endereço 10.x interno.

Isso ainda parece um pouco frágil porque o servidor de nomes atribuído ao DHCP pode mudar ...

    
por jaygooby 26.09.2017 / 12:18

1 resposta

5

Em um VPC, use 169.254.169.253 .

Isso é o mesmo que usar o endereço CIDR base + 2 atribuído pelo DHCP, mas mais portátil porque não depende da numeração IP do VPC em que a máquina foi implantada. Você pode implantar a mesma configuração em qualquer VPC em qualquer região da AWS e esse endereço será sempre um resolvedor interno de DNS.

If [enableDnsSupport] is true, queries to the Amazon provided DNS server at the 169.254.169.253 IP address, or the reserved IP address at the base of the VPC IPv4 network range plus two will succeed.

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

Para instâncias no EC2-Classic, mesmo que o resolvedor de DNS seja fornecido pelo DHCP, ele nunca será alterado. É sempre 172.16.0.23.

Amazon provides a DNS server that resolves Amazon-provided IPv4 DNS hostnames to IPv4 addresses. In EC2-Classic, the Amazon DNS server is located at 172.16.0.23.

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

    
por 26.09.2017 / 16:30