Команда Dig: гарантируется ли сортировка выходных данных?

допустим, я пытаюсь найти IPs mail.yahoo.com,gmail.com и mail.google.com

если я выполнить:

dig @8.8.8.8 +nocomments +noquestion 
    +noauthority +noadditional +nostats +nocmd 
    gmail.com mail.yahoo.com mail.google.com

я:

gmail.com.                       299    IN  A       173.194.123.21
gmail.com.                       299    IN  A       173.194.123.22
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169
mail.google.com.                   0    IN  CNAME   googlemail.l.google.com.
googlemail.l.google.com.         243    IN  A       173.194.123.21
googlemail.l.google.com.         243    IN  A       173.194.123.22

могу ли я гарантировать, что если я вижу CNAME запись A соответствующая ей запись не появится перед CNAME соответствующий другой машине или A запись на другое имя?

например, позвольте мне сосредоточиться на mail.yahoo.com (Я просто хочу IP или IPs mail.yahoo.com разруливает to):

это выход:

mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169

хоста я ищу ( mail.yahoo.com) - первый столбец первой записи. Тогда есть куча CNAMES я действительно не волнует, а потом A запись с фактическим IP (который меня волнует).

есть ли возможность получения CNAMES или A записи вышли из строя? Что-то вроде:

ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net. #(!)BAD
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net. #(!)BAD
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169

или еще хуже (фактический A запись на top):

any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.

или хуже и хуже (в мульти-разрешение dig исполнение, как показано на верхней части поста):

ats.member.g02.yahoodns.net.       0    IN  CNAME   any-ats.member.a02.yahoodns.net.
any-ats.member.a02.yahoodns.net.  17    IN  A       98.139.21.169
mail.google.com.                   0    IN  CNAME   googlemail.l.google.com.  # This one I want
gmail.com.                       299    IN  A       173.194.123.21            # This one I want
gmail.com.                       299    IN  A       173.194.123.22            # This one I want
mail.yahoo.com.                    0    IN  CNAME   login.yahoo.com.          # This one I want
login.yahoo.com.                   0    IN  CNAME   ats.login.lgg1.b.yahoo.com.
ats.login.lgg1.b.yahoo.com.        0    IN  CNAME   ats.member.g02.yahoodns.net.
googlemail.l.google.com.         243    IN  A       173.194.123.21
googlemail.l.google.com.         243    IN  A       173.194.123.22

спасибо заранее.

5
задан BorrajaX
источник

1 ответов

нет - порядок возвращаемого результата зависит от DNS-сервера, и вы не контролируете это, поэтому я не буду зависеть от порядка от конкретного DNS-сервера.

Я считаю, и мои тесты до сих пор подтвердили это, что фактические запросы выполняются в порядке, в вашем случае, сначала google.com, и последнее mail.google.com -это потому, что dig будет выполнять запросы в порядке, указанном в командной строке.

из-за синтаксиса командной строки настройка, порядок важен. Таков мой ответ. Если бы он не подходил к ним в указанном порядке, то любые неглобальные модификаторы испортились бы.

со страницы man:

реализация привязки 9 dig поддерживает указание нескольких запросов в командной строке (в дополнение к поддержке пакетного файла-f опцион.) Каждый из этих запросов может быть снабжен собственным набором флаги, параметры и параметры запроса.

в этом случае каждый запрос аргумент представляет отдельный запрос в синтаксис командной строки, описанный выше. Каждое состоит из любого стандартные опции и флаги, имя для поиска, необязательный тип запроса и класс, а также все параметры запроса, которые должны применяться к этот запрос.

0
отвечен Micah 2014-10-29 23:09:10
источник

Другие вопросы dig dns parsing unix