【Windows】PowershellでDNSサーバの応答速度を計測するツールを公開しました

OS
スポンサーリンク

前回、DNSサーバを変更することでインターネット?は速くなるのかという記事を書きました。
今回は、そのDNSサーバのレスポンスを計測するためにPowershellでクリプトを作成したので、ツールの紹介と使用方法を記事にしたいと思います。

前提条件

DNSのレスポンスタイムを計測するツールは以下の環境で動作確認をしました。

  • OS : Windows10/11 Windows Server 2016・2022
  • Powershell Version : 5.1

最低限の動作確認しかしていませんが、通常のWindows環境であれば動作すると思います。

使用方法

willserverのGitHubより、DNS_Response_Timeのスクリプト一式をダウンロードして任意の場所に配置します。

DNS_List.csvの編集

[DNS_List.csv]を編集します。

DNSリストの追加

[DNS_List.csv]はチェックしたいDNSサーバの名称と実際に計測したいIPアドレスをCSV形式で記載します。

DNS_Response_Time.iniファイルの編集

[DNS_Response_Time_Script.ini]を編集します。

DNSサーバの設定

[DNS_Response_Time_Script.ini]より、以下の値を変更します。

  • DNS_List_Path : DNSサーバ一覧のパス(変更不要)
  • DNS_Response_Time_Result : DNSの応答時間結果を出力するファイルパス(変更不要)
  • ResolveName : 名前解決を行うドメインまたはIP
  • QueryCount : 名前解決を行う回数
  • Interval_Time : 名前解決間隔(変更不要)

[ResolveName]と[QueryCount]を変更すれば基本的には動作します。
また、Interval_Timeを短くすると、DNSサーバへのクエリ実行間隔が短くなるためDNSサーバの負荷が上昇するため、1s以下にしないでください。

DNS_Response_time_Scriptの実行

Powershellを起動し、[DNS_Response_Time_Script.ps1]を実行します。
実行すると、DNSリストに記載されている順番に、DNSの名前解決時間を表示しながらログに出力されます。
スクリプトが終了し、[DNS_Response_Time.csv]に実行結果が出力されていることを確認します。
以上でDNS_Response_Time_Scriptの使用は完了です。

内部仕様

本スクリプトの内部的な使用も一応記載しておきます。
DNSの応答時間を計測するにあたり、名前解決の部分には[Resolve-DnsName]という標準コマンドを使用して名前解決を行っています。
nslookupのように、DNSサーバにクエリを投げその結果を表示させます。
ただ、Resolve-DnsNameコマンドはDNSの名前解決の結果を変更しますが、名前解決にかかった時間は計測できないので、別のコマンドで応答時間の計測を実行しています。

応答時間の計測には、[Measure-Command]というPowershellの標準コマンドを使用しています。
Measure-Commandはコマンドを実行した実行時間を計測するコマンドで、Resolve-DnsNameコマンドの実行時間をMeasure-Commandで計測し「コマンドの実行時間=DNSの名前解決応答時間」と定義してDNSの応答時間としています。
厳密にいうとこれはResolve-DnsNameのコマンド実行時間であり、「DNSの名前解決の応答時間ではない」と言われれはその通りです。

ただ、一般的にDNSの名前解決応答速度を超厳密に計測するのであれば、もっと別の計測方法を使用しないとだめなような気がしますが、あくまで一般的にどれくらいの応答速度なのか?を計測する精度で作成しているため、問題はないと思っています。

まとめ

今回は、DNSを応答時間を効率的に測定するために、Powershellでツールの作成を行いました。
特にスクリプトを作成してやろうとは思っていませんでしたが、なんかぱっと使いやすそうなツールが無かったので、自作してみました。
Powershellを使用した経緯として、Windows Serverなどの環境でも実行しやすいように、あえて外部ツールを使わず、Windowsの標準機能だけで実装しました。
インフラ系の仕事をしていると、外部のツールを入れるだけで申請が必要だったり、外部ツールを使用するためだけにお客様に説明を行ったりする必要があり、めんどくさいというのがあるので、可能な限り標準機能だけで実行できるようにしています。
ぜひDNSサーバの名前解決時間を計測してみたいという変な需要があれば、ぜひ使用していただけると幸いです。

DNS Reponse Time Check Script -GitHub-

おまけ

本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。

コメント

タイトルとURLをコピーしました