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

Amazon Route53: очень долгое время поиска, равное нс

У меня было несколько неудачных вызовов API в мобильном клиенте. Для расследования я последовал совету Джозефа Скотта и выполнил curl с несколькими параметрами отладки:

Результаты с сервера Amazon EC2:

        time_namelookup:  0.011
           time_connect:  0.011
        time_appconnect:  0.016
       time_pretransfer:  0.027
          time_redirect:  0.000
     time_starttransfer:  0.049
                        ----------
             time_total:  0.049

Результаты с ноутбука (в Израиле):

        time_namelookup:  5.004
           time_connect:  5.264
        time_appconnect:  5.851
       time_pretransfer:  5.851
          time_redirect:  0.000
     time_starttransfer:  6.188
                        ----------
             time_total:  6.188

Мой resolv.conf:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
nameserver 192.168.0.1

Другие детали:

  1. TTL - 300.
  2. High time_namelookup не меняется после нескольких последовательных вызовов, поэтому это не проблема локального кеша.
  3. Проблема возникает как с записями CNAME, так и с A.
  4. dig возвращается мгновенно.

Есть идеи, почему поиск time_name занимает так много времени?

Обновить

Когда я выполняю ту же команду в другой беспроводной сети, я получаю следующее:

        time_namelookup:  0.003
           time_connect:  0.273
        time_appconnect:  2.189
       time_pretransfer:  2.189
          time_redirect:  0.000
     time_starttransfer:  3.200
                        ----------
             time_total:  3.201

Вероятно, это означает, что долгое time_namelookup действительно была проблема с брандмауэром. Спасибо всем, кто помогал!

Тот факт, что время ожидания составляет пять секунд, может иметь большое значение. Некоторые приложения (но особенно не dig) использовать getaddrinfo() вместо того gethostbyname(); первый, если он вызывается с определенными аргументами, будет ждать ответов как IPv4, так и IPv6, тогда как второй сразу же вернет ответ IPv4. Тайм-аут по умолчанию для getaddrinfo() в данном случае - пять секунд.

Нам действительно нужен tcpdump отслеживать трафик порта 53 с точки зрения ошибочного клиента, чтобы увидеть, что происходит. Я недавно решил такую ​​проблему, и оказалось, что брандмауэр блокировал один из ответных пакетов.

Это macosx, я вижу это в дампе resolv.conf. этот файл используется для совместимости. сервер имен 192.168.0.1 работает правильно? поведение указывает мне, он не работает и обрабатывает таймауты с контактом DNS. другое, 192.168.0.1 - это локальный IP-адрес в немаршрутизируемом классе IP (не маршрутизируемый через Интернет). это должен быть любой DNS-сервер с локальным кешем. это работает? Вы проверяли это с помощью nslookup?

другой момент, в macosx у вас есть файлы / etc / resolver / *. возможно, один инструмент получает конфигурацию из resolv.conf и ожидает тайм-аута, а другой инструмент получает ее из файла / etc / resolver / *. посмотрите, что настроено в этом файле. возможно, вам следует обновить конфигурацию, особенно внутри resolv.conf. не редактируйте это вручную (как описано в комментарии), сделайте любой инструмент macosx.

Я нашел рецепт с разрешением DNS, но не уверен, что он вам подходит: http://www.justincarmony.com/blog/2011/07/27/mac-os-x-lion-etc-hosts-bugs-and-dns-resolution/ но, возможно, это вам поможет.