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

Ответы DNS-сервера и таймауты

У нас возникла неприятная проблема в нашей локальной сети. Периодически DNS-запросы к серверу имен нашего интернет-провайдера вызывают задержку в 5 секунд. Даже если я обойду /etc/resolv.conf используя прямой доступ к одному из наших DNS-серверов, я все еще сталкиваюсь с проблемой. Вот пример:

mv-m-dmouratis:~ dmourati$ time dig www.google.com @209.81.9.1 

; <<>> DiG 9.8.3-P1 <<>> www.google.com @209.81.9.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14473
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;www.google.com.            IN  A

;; ANSWER SECTION:
www.google.com.     174 IN  A   74.125.239.148
www.google.com.     174 IN  A   74.125.239.147
www.google.com.     174 IN  A   74.125.239.146
www.google.com.     174 IN  A   74.125.239.144
www.google.com.     174 IN  A   74.125.239.145

;; AUTHORITY SECTION:
google.com.     34512   IN  NS  ns2.google.com.
google.com.     34512   IN  NS  ns1.google.com.
google.com.     34512   IN  NS  ns3.google.com.
google.com.     34512   IN  NS  ns4.google.com.

;; ADDITIONAL SECTION:
ns2.google.com.     212097  IN  A   216.239.34.10
ns3.google.com.     207312  IN  A   216.239.36.10
ns4.google.com.     212097  IN  A   216.239.38.10
ns1.google.com.     212096  IN  A   216.239.32.10

;; Query time: 8 msec
;; SERVER: 209.81.9.1#53(209.81.9.1)
;; WHEN: Fri Jul 26 14:44:25 2013
;; MSG SIZE  rcvd: 248


real    0m5.015s
user    0m0.004s
sys 0m0.002s

В других случаях запросы отвечают мгновенно, например, менее чем за 20 мс. Я провел трассировку пакетов и обнаружил кое-что интересное. DNS-сервер является отвечает, но клиент игнорирует первоначальный ответ, а затем отправляет второй идентичный запрос, на который немедленно отвечает.

Видеть трассировка пакета. Обратите внимание на идентичные исходные порты для запросов (62076).

Вопрос: что вызывает сбой первого DNS-запроса?

ОБНОВИТЬ

Ресурсы:

Трассировка пакета:

http://www.cloudshark.org/captures/8b1c32d9d015

Dtruss (strace для mac):

https://gist.github.com/dmourati/6115180

Брандмауэр Mountain Lion случайным образом задерживает DNS-запросы от apple.stackexchange.com:

https://apple.stackexchange.com/questions/80678/mountain-lion-firewall-is-randomly-delaying-dns-requests

ОБНОВЛЕНИЕ 2

System Software Overview:

  System Version:   OS X 10.8.4 (12E55)
  Kernel Version:   Darwin 12.4.0
  Boot Volume:  Macintosh HD
  Boot Mode:    Normal
  Computer Name:    mv-m-dmouratis
  User Name:    Demetri Mouratis (dmourati)
  Secure Virtual Memory:    Enabled
  Time since boot:  43 minutes

Hardware Overview:

  Model Name:   MacBook Pro
  Model Identifier: MacBookPro10,1
  Processor Name:   Intel Core i7
  Processor Speed:  2.7 GHz
  Number of Processors: 1
  Total Number of Cores:    4
  L2 Cache (per Core):  256 KB
  L3 Cache: 6 MB
  Memory:   16 GB

Firewall Settings:

  Mode: Limit incoming connections to specific services and applications
  Services:
  Apple Remote Desktop: Allow all connections
  Screen Sharing:   Allow all connections
  Applications:
  com.apple.java.VisualVM.launcher: Block all connections
  com.getdropbox.dropbox:   Allow all connections
  com.jetbrains.intellij.ce:    Allow all connections
  com.skype.skype:  Allow all connections
  com.yourcompany.Bitcoin-Qt:   Allow all connections
  org.m0k.transmission: Allow all connections
  org.python.python:    Allow all connections
  Firewall Logging: Yes
  Stealth Mode: No

Похоже, это ошибка брандмауэра Lion. Он включен в вашей системе?

В этой ветке MacRumors (Проблемы с DNS после обновления до Mountain Lion (10.8)) обсуждается возможный обходной путь:

Попробуйте уменьшить размер MTU.

Системные настройки> Сеть> WiFi> Дополнительно> Оборудование> Вручную> MTU: Пользовательский> 1300

Работал у меня.

Не могли бы вы проверить, решает ли уменьшение размера MTU вашу проблему?

Недавно у меня была аналогичная проблема, и я обнаружил, что брандмауэр Cisco ASA не настроен для поддержки EDNS0, спецификации, которая разрешает DNS-пакеты UDP размером более 512 байт. Как только мой fw-администратор разрешил до 4096 байт, проблема была решена. Отличная информация здесь:

http://www.petenetlive.com/KB/Article/0000312.htm