Wi-Fiの接続が不定期に切れる状況(イベントID: 1014DNS Client Events)を解決する

# はじめに

約半年(2021/9末)前から、Wi-Fiの接続が不定期に切れる事象が自分のPCで発生してました(スキマ時間で調べていた)。
ネットワークに詳しくないなりに調べて、「接続が切れたときにWindows イベントログにID: 1014DNS Client Events」が記録されていることがわかりました。
調査結果と対策を記載してみようかと思います。

# 調査結果

## 事象
　Wi-Fiの接続が不定期(数十分~数時間と間隔は不定期)に切れる。

## 環境について

OS:
　Windows10 Home 64bit version 21H1(OSビルド19043.1546) 
モデム：
　HUMAX　HGJ310
ネットワークアダプタ：
　Qualcomm Atheros QCA61x4A Wireless Network Adapter
　バージョン 12.0.0.938
　2.4GHzの周波数帯を利用している。
　障害発生時に利用していたのは、これだけ。

## 復帰方法
　ネットワーク診断を行うと、回線は復帰する。診断の結果は「ネットワークの問題は見つかりませんでした。」と表示される。時間が経過すると、再び接続が切れる。

## 確認したこと

### モデムの確認

- 接続が切れた際のモデムのランプ点灯状態を確認すると、異常がない。念のため、モデムを再起動は試したが、良化しなかった。
- モデムの管理画面からログを取得して、ネットでエラーメッセージを調査したが、該当情報が得られなかった。
<details><summary>ログの抜粋</summary><div>
Mar 9 00:22:03, local use 2 (local2), Alert, kernel: FLOWMGR: Net device eth0 down - Cleaning flows
Mar 9 00:22:03, local use 2 (local2), Alert, kernel: FLOWMGR: Net device eth1 down - Cleaning flows
Mar 9 00:22:03, local use 2 (local2), Alert, kernel: FLOWMGR: Net device eth2 down - Cleaning flows
Mar 9 00:22:03, local use 2 (local2), Alert, kernel: FLOWMGR: Net device eth3 down - Cleaning flows
Mar 9 00:22:05, system daemons, Emergency, toad: Broadcom Traffic Ordering Agent -- starting on wl1 as daemon process...
Mar 9 00:22:12, system daemons, Error, HSRGClientInfoMgrApp: HSRgClientInfoMgrApp:error:332.480:cmsLck_acquireLockWithTimeoutTraced:167:Failed to acquire lock for GetInterfaceTypeforWiFi
</div></details>

### 電波状況の確認

- プロバイダーのサイトで、障害の発生状況を確認したが、何も起きていない。
- ネットワークドライバーは最新。念のため更新したが、効果がなかった。
- 電波状況が良好。
netsh wlan show interfaceコマンドを実行した結果の抜粋(ネットワークがつながっているときのもの)。
<details><summary>結果の抜粋</summary><div>
    名前                   : Wi-Fi
    説明                   : Qualcomm Atheros QCA61x4A Wireless Network Adapter
    :
    状態                   : 接続されました
    SSID                   : HUMAX-4005C
    :
    ネットワークの種類     : インフラストラクチャ
    無線の種類             : 802.11n
    :
    接続モード             : 自動接続
    チャネル               : 1
    受信速度 (Mbps)        : 144.4
    送信速度 (Mbps)        : 144.4
    シグナル               : 100%
    プロファイル           : HUMAX-4005C
    :
    ホストされたネットワークの状態: 利用不可
</div></details>

### PCでやったこと

- [Windowsの電源管理が原因で無線LANが頻繁に切断される](https://yogi.blog.ss-blog.jp/2012-08-22-1)って記事を見て、試したが効果が得られなかった。
- 接続が切れたときに、イベントログを確認すると、「イベントID 1014:DNS Client Events」が記録される。<br>確認方法は[イベントログ]->[Windows ログ]->[システム]を開く。<br><details><summary>ログの抜粋</summary><div>

| レベル | 日時と日付 | ソース | イベントID | タスクカテゴリ |全般|
|:-:|:-:|:-:|:-:|:-:|:-:|
|警告|2022/03/09 0:21:18|<b>DNS Client Events</b>|<b>1014</b>|(1014)|名前 xxxxxxxxx.comの名前解決は、構成されたどの DNS サーバーからも応答がなく、タイムアウトしました。|
|情報|2022/03/09 0:22:03|Diagnostics-Networking|4100|診断の成功|ネットワーク診断フレームワークで、操作の診断フェーズを完了しましたが、ネットワークの問題は見つかりませんでした。|
|情報|2022/03/09 0:22:05|Diagnostics-Networking|6100|ヘルパー クラス情報|ネットワーク アダプター イーサネットのドライバー情報:(略)|
|情報|2022/03/09 0:22:05|Diagnostics-Networking|6100|ヘルパー クラス情報|ネットワーク アダプター Wi-Fiのドライバー情報:(略)|
|情報|2022/03/09 0:22:05|Diagnostics-Networking|6100|ヘルパー クラス情報|ネットワーク アダプター Bluetooth ネットワーク接続のドライバー情報:(略)|
|情報|2022/03/09 0:22:05|Diagnostics-Networking|6100|ヘルパー クラス情報|ワイヤレス接続の診断の詳細: <br>このセッションの詳細については、ワイヤレス接続の情報イベントを参照してください。<br>ヘルパー クラス: 自動構成<br>初期化の状態: 成功<br>診断されている接続の情報<br>診断結果: 問題は見つかりませんでした|

</div></details>

# 対策結果

効果があった対処は、「RSS, Autotuning,Taskoffloadの無効化」。
[参考　Event ID 1014: Microsoft Windows DNS Client](https://social.technet.microsoft.com/wiki/contents/articles/3336.event-id-1014-microsoft-windows-dns-client.aspx)

コマンドプロンプトを管理者権限で実行する。下記コマンドを実行する。

~~~実行コマンド
netsh interface tcp set global rss = disable
netsh interface tcp set global autotuninglevel = disable
netsh int ip set global taskoffload = disable
~~~

~~~変更前の設定
C:\WINDOWS\system32>netsh int tcp show global
アクティブ状態を照会しています...
TCP グローバル パラメーター
----------------------------------------------
Receive-Side Scaling 状態          : enabled
受信ウィンドウ自動チューニング レベル    : normal
アドオン輻輳制御プロバイダー  : default
ECN 機能                      : disabled
RFC 1323 タイムスタンプ                 : disabled
初期 RTO                         : 1000
Receive Segment Coalescing 状態    : enabled
非 Sack の Rtt 回復性             : disabled
SYN の最大再送信数             : 4
Fast Open                           : enabled
Fast Open フォールバック                  : enabled
HyStart                             : enabled
Proportional Rate Reduction         : enabled
ペーシング プロファイル                      : off
~~~


~~~変更後の設定
C:\WINDOWS\system32>netsh int tcp show global
アクティブ状態を照会しています...
TCP グローバル パラメーター
----------------------------------------------
Receive-Side Scaling 状態          : enabled
受信ウィンドウ自動チューニング レベル    : normal
アドオン輻輳制御プロバイダー  : default
ECN 機能                      : disabled
RFC 1323 タイムスタンプ                 : disabled
初期 RTO                         : 1000
Receive Segment Coalescing 状態    : enabled
非 Sack の Rtt 回復性             : disabled
SYN の最大再送信数             : 4
Fast Open                           : enabled
Fast Open フォールバック                  : enabled
HyStart                             : enabled
Proportional Rate Reduction         : enabled
ペーシング プロファイル                      : off
~~~

レジストリ設定を次のように変更して、ScalableNetworking Pack（SNP）を無効にした。

~~~
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
 
EnableTCPChimney=dword:00000000
EnableTCPA=dword:00000000
EnableRSS=dword:00000000
~~~



# 解決に役立ったサイト

[Windows Ten Forums :Event ID Error 1014](https://www.tenforums.com/general-support/150564-event-id-error-1014-a.html)
[Event ID 1014: Microsoft Windows DNS Client](https://social.technet.microsoft.com/wiki/contents/articles/3336.event-id-1014-microsoft-windows-dns-client.aspx)
[Windowsでインターネットが極端に遅い場合のチェックポイント(SNP設定編)](https://freesoft.tvbok.com/web/network/disable_snp.html)