Odpowiedzi serwera DNS i limity czasu

17

W naszej sieci LAN mamy frustrujący problem. Okresowo zapytania DNS do naszych serwerów nazw ISP przekraczają limit 5 sekund. Nawet jeśli ominę /etc/resolv.conf, używając bezpośredniego kopania na jednym z naszych serwerów DNS, nadal mam problem. Oto przykład:

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

Innym razem zapytania odpowiadają natychmiast, jak w mniej więcej 20 ms. Zrobiłem śledzenie pakietów i odkryłem coś interesującego. Serwer DNS jest reagowanie ale klient ignoruje odpowiedzi wstępnej, a następnie wysyła drugi identyczny kwerendy, która jest natychmiast odpowiedziała na.

Zobacz śledzenie pakietów . Zanotuj identyczne porty źródłowe do zapytań (62076).

Pytanie: co powoduje niepowodzenie pierwszego zapytania DNS?

AKTUALIZACJA

Zasoby:

Śledzenie pakietów:

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

Dtruss (strace dla Mac):

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

Zapora Mountain Lion losowo opóźnia żądania DNS od apple.stackexchange.com:

/apple/80678/mountain-lion-firewall-is-randomly-delaying-dns-requests

AKTUALIZACJA 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
dmourati
źródło
dtrusswynik wygląda na obcięty. Nigdy nie widzimy wywołań systemowych, które zapisują wyjście programu do STDOUT.
Andrew B,
Czy wypróbowałeś już inny publiczny serwer nazw, np. Google DNS.
vasco.debian
@ vasco.debian tak, to samo zachowanie.
dmourati
1
Jedyną różnicą między tymi dwoma parami żądanie-odpowiedź są opóźnienia między żądaniem a odpowiedzią. Nie widzę też żadnych problemów w sieci. Eksperymentuj i sprawdź, czy opóźnienie ma znaczenie - system operacyjny może upuścić niektóre pakiety udp do aplikacji z jakiegoś powodu, mimo że jest to widoczne w analizatorze. Zdecydowanie nie jest to problem z konfiguracją sieci lub ogólną, „kopanie” musi działać. Może coś jest nie tak z dostrajaniem stosu sieciowego. Sprawdź ustawienia sysctl dla sieci. Jak ten rolande.wordpress.com/2010/12/30/…
GioMac
1
Nie mówisz, jeśli masz zaporę działającą na komputerze Mac?
JustinP

Odpowiedzi:

3

Wygląda to na błąd w zaporze Lion. Czy jest włączony w twoim systemie?

W tym wątku MacRumors ( problemy z DNS po aktualizacji do Mountain Lion (10.8) ) omówiono możliwe obejście:

Spróbuj zmniejszyć rozmiar MTU.

Preferencje systemowe> Sieć> WiFi> Zaawansowane> Sprzęt> Ręcznie> MTU: Niestandardowy> 1300

Pracował dla mnie.

Czy możesz sprawdzić, czy zmniejszenie rozmiaru MTU zmniejsza Twój problem?

Mels
źródło
Zmiana ustawień zapory sprawiła, że ​​problem zniknął. MTU nie miało wpływu. Zapora musi być wyłączona lub „Blokuj wszystkie połączenia przychodzące”.
dmourati,
Zmiana zapory ogniowej na dowolne ustawienie zmniejszała częstotliwość problemu, ale nie całkowicie go wyeliminowała. W stanie wykonać repozytorium około 1/200 razy.
dmourati,
Uznałbym, że utrata pakietów o tej wielkości jest całkiem rozsądna podczas przeglądania Internetu, szczególnie jeśli na trasie są zatłoczone przeskoki. Pamiętaj, że DNS używa UDP, co nie gwarantuje dostarczania datagramów. Właśnie dlatego sam protokół DNS ma wbudowane próby i wbudowany mechanizm limitu czasu.
Mels
1
Nawiasem mówiąc, wiem, że nie powinniśmy zamieszczać tutaj komentarzy „dziękuję”, ale sześciokrotnie zwiększyłem moją reputację :)
Mels
0

Ostatnio miałem podobny problem i stwierdziłem, że zapora sieciowa Cisco ASA nie została skonfigurowana do obsługi EDNS0, specyfikacji, która zezwala na pakiety DNS UDP większe niż 512 bajtów. Gdy mój administrator fw zezwolił na maksymalnie 4096 bajtów, problem został rozwiązany. Świetne informacje tutaj:

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

Obrabować
źródło
Nie sądzę, żeby miało to tutaj zastosowanie. Odpowiedź jest znacznie poniżej 512 bajtów dla tego konkretnego zapytania DNS, nawet z uprawnieniami i dodatkowymi sekcjami.
Andrew B,