今日、私のマシンはインターネットにアクセスできなくなりました。私はまだいくつかのローカルネットワークリソースにアクセスできます。エラーログを見ると、次のtcpip警告が表示されました。
グローバルUDPポートスペースからエフェメラルポート番号を割り当てる要求は、そのようなすべてのポートが使用されているために失敗しました。
私は走ったnetstat -anob
そして出力にはDNScacheが何千回もリストされています(ポート50000から65536まで)。
これが私に起こったのはこれが2度目です。見つかった指示に基づいてDNSClientプロセスを強制終了する ここ は機能しましたが、この問題の原因を突き止めたいと思います。
更新:この問題が発生した場合でも、問題が発生する前にDNSを使用してホスト名を解決したプログラムでオンラインに接続できます。たとえば、Pidginと友達とチャットを続けることができます。 IPアドレスを使用して直接Webサイトに接続することもできます。
私はそれを考え出した!それはHealthAlertsSvc(Windows Server Health Service)でした。 Windows Home Server 2011マシンのヘルスサービスがクラッシュしたようです。そのため、クライアント側のHealthAlertsSvcにバグがあり、UDPポートが正しく解放されませんでした。
これが事実であることを再確認するため。サーバー側とデスクトップでサービスを無効にしました。デスクトップでサービスを再度有効にするとすぐに、開いたままになっているUDP接続の数が徐々に増え始めました。サーバーでサービスを再開した後、多数のUDP接続がすぐに解放され、リストのサイズが大きくなりませんでした。