DNSサーバーの応答とタイムアウト


17

LANでイライラする問題が発生しています。ISPネームサーバーへのDNSクエリは定期的にタイムアウトし、5秒の遅延を強制します。/etc/resolv.confDNSサーバーの1つに直接掘ってバイパスしても、問題が発生します。以下に例を示します。

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サーバー応答していますが、クライアントは最初の応答を無視し、すぐに応答される2番目の同一のクエリを送信します。

パケットトレースを参照してください。クエリと同じソースポートに注意してください(62076)。

質問:最初のDNSクエリが失敗する原因は何ですか?

更新

リソース:

パケットトレース:

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

Dtruss(mac用のstrace):

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

Mountain Lionファイアウォールは、apple.stackexchange.comからのDNS要求をランダムに遅延させています:

/apple/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

dtruss出力は切り捨てられたように見えます。プログラム出力をSTDOUTに書き込むシステムコールはありません。
アンドリューB

Google DNSなどの他のパブリックネームサーバーを試しましたか。
vasco.debian

@ vasco.debianはい、同じ動作です。
dmourati

1
これら2つの要求と応答のペアの違いは、要求と応答の間の遅延のみです。ネットワークにも問題は見当たりません。遅延が重要かどうかを実験して確認します-アナライザーに表示されているにもかかわらず、OSが何らかの理由で一部のudpパッケージをアプリケーションにドロップする場合があります。間違いなく、それはネットワークや一般的な構成の問題ではなく、「発掘」が機能する必要があります。ネットワークスタックの調整に問題がある可能性があります。ネットワークのsysctl設定を確認してください。このようなrolande.wordpress.com/2010/12/30/...
GioMac

1
Macでファイアウォールを実行しているかどうかはわかりませんか?
JustinP

回答:


3

これは、Lionのファイアウォールのバグのようです。システムで有効になっていますか?

このMacRumorsスレッド(Mountain Lion(10.8)に更新した後のDNSの問題)で、考えられる回避策について説明します。

MTUサイズを小さくしてみてください。

システム環境設定>ネットワーク> WiFi>詳細設定>ハードウェア>手動> MTU:カスタム> 1300

私のために働いた。

MTUサイズを小さくすると問題が軽減されるかどうかを確認できますか?


ファイアウォールの設定を変更すると、問題はなくなりました。MTUは効果がありませんでした。ファイアウォールを無効にするか、「着信接続をすべてブロックする」必要があります。
-dmourati

ファイアウォールをいずれかの設定に変更すると、問題の発生頻度は減少しましたが、問題が完全に排除されるわけではありません。1/200回程度再現できます。
-dmourati

インターネットを通過するとき、特にルート上に輻輳したホップがある場合、その大きさのパケット損失は非常に合理的だと思います。DNSはUDPを使用しますが、これはデータグラムの配信を保証するものではありません。DNSプロトコル自体に再試行とタイムアウトメカニズムが組み込まれているのは、まさにそのためです
。– Mels

1
ちなみに、ここに「ありがとう」のコメントを投稿するつもりはないことは知っていますが、あなたは私の評判を6倍に増やしただけです:)
Mels

0

最近、同様の問題が発生し、Cisco ASAファイアウォールがEDNS0(512バイトを超えるDNS UDPパケットを許可する仕様)をサポートするように構成されていないことがわかりました。fw管理者が最大4096バイトを許可すると、問題は解決しました。ここで素晴らしい情報:

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


ここには当てはまらないと思います。この特定のDNSクエリの応答は、権限や追加のセクションがある場合でも512バイトを大きく下回ります。
アンドリューB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.