Ответ DNS-сервера пересылки игнорируется


1

Мы запускаем bind на наших внутренних DNS-серверах.

У нас есть группа подсетей высокой доступности в AWS, которая предоставляет RDS. Чтобы управлять доступом по внутренним ссылкам, мы хотим, чтобы экземпляр RDS разрешил свой частный IP, а не публичный IP.

Поскольку IP время от времени меняется, я настроил пересылку в нашем днс, которая будет разрешать RDS по отношению к DNS-серверу Amazon и давать нам текущий частный IP:

zone "coivvuccn9hs.eu-west-1.rds.amazonaws.com" IN {
   type forward;
   forward only;
   forwarders { 
       xxx.xxx.xxx.xxx; 
   };
};

Когда я делаю запрос от одного из внутренних DNS-серверов к DNS-серверу AWS: dig @ xxx.xxx.xxx.xxx server.coivvuccn9hs.eu-west-1.rds.amazonaws.com, я получаю правильный ответ

Однако, когда я делаю рывок @localhost server.coivvuccn9hs.eu-west-1.rds.amazonaws.com, я получаю общедоступный IP-адрес, хотя tcpdump показывает, что сервер запрашивает DNS-сервер AWS и получает действительный ответ.

Насколько я понимаю, сервер пересылки получит приоритет над ответом от корневых серверов, так почему я получаю общедоступный IP-адрес, а не частный IP-адрес?

Это ответ, который я получаю:

dig @localhost server.coivvuccn9hs.eu-west-1.rds.amazonaws.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> @localhost server.coivvuccn9hs.eu-west-1.rds.amazonaws.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5580
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 13, ADDITIONAL: 0

;; QUESTION SECTION:
;server.coivvuccn9hs.eu-west-1.rds.amazonaws.com. IN A

;; ANSWER SECTION:
server.coivvuccn9hs.eu-west-1.rds.amazonaws.com. 5  IN CNAME <somename>.eu-west-1.compute.amazonaws.com.
<somename>.eu-west-1.compute.amazonaws.com. 604800  IN A <public ip>

;; AUTHORITY SECTION:
eu-west-1.compute.amazonaws.com. 900 IN NS  u6.amazonaws.com.
eu-west-1.compute.amazonaws.com. 900 IN NS  pdns1.ultradns.net.
eu-west-1.compute.amazonaws.com. 900 IN NS  u2.amazonaws.com.
eu-west-1.compute.amazonaws.com. 900 IN NS  ns1.p31.dynect.net.
eu-west-1.compute.amazonaws.com. 900 IN NS  u4.amazonaws.com.
eu-west-1.compute.amazonaws.com. 900 IN NS  pdns3.ultradns.org.
eu-west-1.compute.amazonaws.com. 900 IN NS  ns4.p31.dynect.net.
eu-west-1.compute.amazonaws.com. 900 IN NS  u3.amazonaws.com.
eu-west-1.compute.amazonaws.com. 900 IN NS  pdns5.ultradns.info.
eu-west-1.compute.amazonaws.com. 900 IN NS  u1.amazonaws.com.
eu-west-1.compute.amazonaws.com. 900 IN NS  ns2.p31.dynect.net.
eu-west-1.compute.amazonaws.com. 900 IN NS  ns3.p31.dynect.net.
eu-west-1.compute.amazonaws.com. 900 IN NS  u5.amazonaws.com.

;; Query time: 489 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Aug 24 15:13:53 2017
;; MSG SIZE  rcvd: 416

Для ясности, можете ли вы подтвердить, что tcpdump показывает, что сервер действительно запрашивает DNS-сервер AWS и получает действительный ответ, который был ответом с частным IP?
Хакан Линдквист,

Это правильно - я вижу личный IP в ответе в A:09:47:32.007021 IP 172.28.200.11.31772 > 172.29.0.2.domain: 11853+ [1au] A? gamingstats.coivvuccn9hs.eu-west-1.rds.amazonaws.com. (81) 09:47:32.256192 IP 172.29.0.2.domain > 172.28.200.11.31772: 11853 2/0/1 CNAME ec2-52-30-30-69.eu-west-1.compute.amazonaws.com., A 172.29.7.136 (145)
Pierre Naude

Ответы:


1

Обратите внимание, что ответ dig / nslookup был CNAMEуказанием <somename>.eu-west-1.compute.amazonaws.com( <somename>опущен в вашем посте).

;; ANSWER SECTION:
server.coivvuccn9hs.eu-west-1.rds.amazonaws.com. 5  IN CNAME <somename>.eu-west-1.compute.amazonaws.com.

Это означает, что поиск на server.coivvuccn9hs.eu-west-1.rds.amazonaws.comсамом деле указывает на <somename>.eu-west-1.compute.amazonaws.comимя хоста.

Так как ваш сервер связывания имеет только правило переадресации для rds.amazonaws.comнего, теперь он выполняет поиск по умолчанию для compute.amazonaws.comпоиска, что приводит к общедоступному ip.

Поэтому решение состоит в том, чтобы добавить вторую зону пересылки для «реального» адреса после разрешения CNAME. В этом случае вы должны получить частный IP-адрес.


0

Пахнет как проблема проверки DNSSEC для меня. У вас есть dnssec-validation yes;в разделе основной / просмотр options? Если это так, попробуйте добавить dnssec-must-be-secure domain.tld no;сразу после этого.

НТН-RB


Спасибо - я попробовал это, но это не решило проблему. Я включил некоторые отладки на функции запроса и увидел это: Sep 7 16:26:22 named 34692 resolver: debug 1: fetch: ec2-52-30-30-69.eu-west-1.compute.amazonaws.com/A Sep 7 16:26:21 named 34692 resolver: debug 1: fetch: gamingstats.coivvuccn9hs.eu-west-1.rds.amazonaws.com/A . Как вы можете видеть из дампа пакета выше, ответ содержит cname и A запись. Похоже, что он игнорирует запись и идет и ищет вместо cname, который указывает на публичный IP.
Пьер Науд

Это прискорбно ... но это должен быть дополнительный запрос после первоначального ответа сервера пересылки, который отправляется корневым серверам (скорее всего), переопределяя кеш. Кэш распознавателя всегда имеет приоритет над новым (прямым) запросом.
Потребуется
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.