[ホーム] - [Windows 11 サービス一覧] - [DNS Client]

DNS Client サービスの概要と起動の必要性

このページでは"DNS Clientサービス"とは何かに関して説明します。関連してこのサービスが必要性なのか、起動方法の変更方法、手動の停止や手動の開始方法に関して説明します。
作成日:2023/09/12

【目次】

サービス名 Dnscache
表示名 DNS Client
dll / exe 名 C:\WINDOWS\system32\svchost.exe -k NetworkService -p
説明 (マイクロソフト情報より引用) DNS クライアント サービス (dnscache) により、このコンピューターのドメイン ネーム システム (DNS) 名がキャッシュされ、フル コンピューター名が登録されます。サービスが停止されると、 DNS 名は引き続き解決されます。しかし、DNS 名のクエリの結果はキャッシュされず、コンピューター名は登録されません。サービスが使用不可にされた場合、このサービスに明示的に依存するサービスはすべて起動できなくなります。
セキュアPC上の起動必要性


◎起動を強く推奨、○起動を推奨、△環境による、×停止を推奨、××停止を強く推奨



DNS Clientサービスとは


このサービスはホスト名をIPアドレスに変換する機能のキャッシュを提供します。
例えば Microsoft Edge や Internet Explorer や FireFoxなどのブラウザが www.yahoo.co.jp と入力した場合にWindowsはDNS サーバにアクセスしてIPアドレスを取得します。
次回に同じ www.yahoo.co.jpにアクセスした場合にはわざわざインターネット上のDNSサーバにアクセスしなくてもローカルにキャッシュされた情報を参照にしてIPアドレスを取得します。
このキャッシュを提供する機能がこのサービスとなります。

まとめると以下の通りです。

・ホスト名からIPアドレスに変換→WindowsとDNSサーバ
・上記の結果をキャッシュして提供→DNS Clientサービス


このサービスを停止するとどうなるか


このサービスを停止しても名前解決は行われます。ブラウザでwww.yahoo.co.jp と入力してもIPアドレスが取得されるため正常にアクセスされます。
しかしキャッシュ機能が無効化されるため、毎回毎回インターネット上のDNSサーバにアクセスすることになり効率が悪くなります。

サービスが無効の場合、dnsキャッシュ関連のコマンドは以下のエラーで失敗します。

C:\>ipconfig /displaydns

Windows IP 構成

DNS リゾルバー キャッシュを表示できませんでした。

C:\>ipconfig /flushdns

Windows IP 構成

DNS リゾルバー キャッシュをフラッシュできませんでした: 関数は実行中に失敗しました。




必要なサービスか


ホストの名前解決のキャッシュに使用します。特に必要の無い限り自動起動としてください。停止させる理由もないでしょう。停止するとブラウザでのインターネットアクセスが逆に遅くなります。

私の環境(Windows 10 バージョン1803) では services.msc から停止しようとしても以下のとおりメニューがグレイアウトされて停止することができませんでした。しかし停止可能な古いバージョンもあるようです。

DNSサービスは停止できない



net コマンドで停止しようとしても以下の通り停止できません。そもそも SCM (Service Control Manager)からの停止コマンドはサポートしていないようです。

C:\WINDOWS\system32>net stop dnscache
要求した一時停止、続行、または停止は、このサービスには無効です。

NET HELPMSG 2191 と入力すると、より詳しい説明が得られます。



またスタートタイプも"無効"に変更できません。

C:\>sc config dnscache Start= disabled
[SC] OpenService FAILED 5:

アクセスが拒否されました。



停止させたり無効化することは考えない方が良さそうです。


サービスの起動方法を変更する

サービスの起動方法を変更にする方法を紹介します。サービス管理ツール(services.msc) で設定します。Windows 11 の画面で説明します。

(1)スタートメニューから[管理ツール] - [サービス]を選択します。

(2)以下の画面が表示されるため、"DNS Client"をダブルクリックします。

(3)「スタートアップの種類」から起動のタイプを設定します。設定が完了したら[OK]をクリックします。

各起動設定の内容は以下の通りです。



自動(延滞開始)・・・・・他の自動起動サービスが全て起動されてから起動されます。
自動・・・・・Windows 起動時に自動で起動されます。
手動・・・・・自動では起動されませんが、手動あるいは他のサービスなどから起動することが可能です。
無効・・・・・自動起動されません。手動でも起動できません。
自動(トリガー)・・・・・Windows 起動時に自動起動されますが、役目が終了したら自動的に停止します。
手動(トリガー)・・・・・他のサービスなどから起動されますが、役目が終了したら自動的に停止します。

sc コマンドでサービスを設定する

次にsc コマンドでコマンドプロンプトより設定する方法を紹介します。

(1)管理者でコマンドプロンプトを開きます。

参考:管理者権限でコマンドプロンプトを開く方法

(2)以下のコマンドを実行します。


自動起動設定



C:\>sc config Dnscache Start= auto


【注意】Powershellで実行すると、sc がコマンドレットである set-contentとバッティングしエラーとなるので注意してください。C:\WINDOWS\system32\sc.exe などフルパスで指定するなどの工夫が必要です。
手動



C:\>sc config Dnscache Start= demand

無効



C:\>sc config  Dnscache Start= disabled

自動(延滞開始)



C:\>sc config  Dnscache Start= delayed-auto

sc コマンドで以下のようなエラーが発生する場合はコマンドプロンプトを管理者として実行してください。


C:\>sc stop ServiceName

[SC] OpenService FAILED 5:
アクセスが拒否されました。

サービスを手動開始する

サービスを手動で開始する方法を紹介します。sc コマンドにより起動します。


C:\>sc start Dnscache

他の方法として net コマンドでも開始させることが可能です。


C:\>net start Dnscache


サービスを手動で停止する

サービスを手動で停止する方法を紹介します。sc コマンドにより停止します。


C:\>sc stop Dnscache

他の方法として net コマンドでも停止させることが可能です。


C:\>net stop Dnscache


サービスの設定を確認する

sc コマンドを利用してサービスの設定を確認する方法を紹介します。



c:\>sc queryex Dnscache 

SERVICE_NAME: Dnscache 
        TYPE               : 30  WIN32  
        STATE              : 4  RUNNING 
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 2844
        FLAGS              : 

sc コマンドを利用してサービスの起動設定(自動、手動、無効など)を確認することが可能です。



c:\>sc qc Dnscache 
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: Dnscache
        TYPE               : 20  WIN32_SHARE_PROCESS 
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\WINDOWS\system32\svchost.exe -k NetworkService -p
        LOAD_ORDER_GROUP   : TDI
        TAG                : 0
        DISPLAY_NAME       : DNS Client
        DEPENDENCIES       : nsi
        SERVICE_START_NAME : NT AUTHORITY\NetworkService

サービスが起動中か確認する

net start コマンドを利用してサービスが起動中か確認することが可能です。findstr の 戻り値 (ERRORLEVEL)で結果の判定が可能です。
サービス起動中なら文字列が存在するはずなので findstr で検索しています。




c:\>net start   | findstr -i /c:"DNS Client" 
   DNS Client

c:\>rem 0で実行中、その他は1、findstr失敗は2 

c:\>rem if %ERRORLEVEL% == 0 echo 起動中 

c:\>rem if %ERRORLEVEL% == 1 echo 停止中 

c:\>rem if %ERRORLEVEL% == 2 echo 不明 
起動中

sc コマンドを利用してサービスが起動中か確認することが可能です。findstr の 戻り値 (ERRORLEVEL)で結果の判定が可能です。
サービス起動中なら"Status"が"Running" であるためfindstr で検索します。




c:\>sc query Dnscache   | findstr -i State   | findstr -i Running 
        STATE              : 4  RUNNING 

c:\>rem 0で実行中、その他は1、findstr失敗は2 

c:\>rem if %ERRORLEVEL% == 0 echo 起動中 

c:\>rem if %ERRORLEVEL% == 1 echo 停止中 

c:\>rem if %ERRORLEVEL% == 2 echo 不明 
起動中

レジストリからサービスの設定を確認する

レジストリから reg コマンドでサービスの設定を確認する方法を紹介します。サービスの設定はレジストリに保存されています。その値を確認します。



c:\>reg query HKLM\System\CurrentControlSet\services\Dnscache   | findstr -i "group ObjectName DependOnService ErrorControl RequiredPrivileges ServiceSidType" 
    DependOnService    REG_MULTI_SZ    Tdx\0nsi
    ErrorControl    REG_DWORD    0x1
    Group    REG_SZ    TDI
    ObjectName    REG_SZ    NT AUTHORITY\NetworkService
    RequiredPrivileges    REG_MULTI_SZ    SeChangeNotifyPrivilege\0SeCreateGlobalPrivilege
    ServiceSidType    REG_DWORD    0x1

[ホーム] - [Windows 11 サービス一覧]




(ご注意)本ページの内容の正当性は保障されません。内容に誤りがある場合も有ります。 本ページの情報は高セキュリティを目指すPCで起動すべきサービスの指針を示していますが、環境に依存するためすべての環境に当てはまることは保障しません。 本サイト内の内容を使用して発生したいかなる時間的損害、金銭的損害あるいはいかなる損害に対して、いかなる人物も一切の責任を負いません。あくまでも個人の判断で使用してください。 本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)


Copyright(c) TOOLJP.COM 1999-2023