Назад | Перейти на главную страницу

Какой DNS-сервер мне следует использовать для получения внутренних адресов AWS для моего преобразователя nginx?

Я использую сервер 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;
}

Поскольку IP-адреса узлов Elasticache могут изменяться, я не хочу использовать текущий IP-адрес example.foo.euw1.cache.amazonaws.com.

какой resolver Должен ли я использовать IP для получения внутренних IP-адресов AWS (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

Например, если я использую общедоступный DNS Google с преобразователем, я получу адреса 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;

А затем используя этот адрес 172.16.0.23 в host call правильно возвращает внутренний адрес 10.x.

Это все еще кажется немного хрупким, потому что сервер имен, назначенный DHCP, может измениться ...

В VPC используйте 169.254.169.253.

Это то же самое, что и использование адреса CIDR base + 2, который назначается DHCP, но более переносимым, поскольку он не зависит от IP-нумерации VPC, в котором будет развернута машина. Вы можете развернуть ту же конфигурацию в любом VPC в любом регионе AWS, и этот адрес всегда будет рабочим внутренним преобразователем DNS.

Если [enableDnsSupport] верно, запросы к предоставленному Amazon DNS-серверу по IP-адресу 169.254.169.253 или зарезервированному IP-адресу в основе сетевого диапазона IPv4 VPC плюс два будут успешными.

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

Для экземпляров в EC2-Classic, даже если DNS-преобразователь предоставляется DHCP, он никогда не меняется. Всегда 172.16.0.23.

Amazon предоставляет DNS-сервер, который преобразует предоставленные Amazon имена хостов IPv4 DNS в адреса IPv4. В EC2-Classic DNS-сервер Amazon расположен по адресу 172.16.0.23.

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