DNS over HTTPS を Windows で常時行う(DoH 設定&自動起動)
2019-10-01
azblob://2022/11/11/eyecatch/2019-10-01-always-dns-over-https-windows-000.jpg

9月26日(UTC)に Cloudflare のエッジネットワークで QUIC 及び HTTP/3 がサポートされました。
 DNS over HTTPS (DoH) は、 Mozilla Firefox で既に実装されており、Google Chrome では特定のバージョンで実装の検証実験が行われているところではありますが、せっかくなので Windowsで DoH を常時使う設定を紹介します。

DoH を Linux 系で使う記事は先人に任せるとして、Windows 固有の設定ポイントをまとめてみました。
なお、この記事では DoH の技術的な説明は行いません。

DNS over HTTPS を使ってみる

DNS over HTTPS Client の設定

Cloudflare が提供している DNS over HTTPS を利用するためのバイナリを使って設定します。

利用する OS (今回は Windows x64) のバイナリを選んでダウンロードし、解凍して得た cloudflared.exe を適当なフォルダに置きます。C ドライブ直下に tools というフォルダを作って関連データを入れておくのがおすすめです。

コマンドプロンプトまたは Powershell を開いて以下のコマンドを実行すると、localhost:53で DNS over HTTPS Client が起動します。

C:\tools> ./cloudflared.exe proxy-dns
INFO[0000] Adding DNS upstream                   url="https://1.1.1.1/dns-query"
INFO[0000] Starting metrics server               addr="127.0.0.1:64178"
INFO[0000] Adding DNS upstream                   url="https://1.0.0.1/dns-query"
INFO[0000] Starting DNS over HTTPS proxy server  addr="dns://localhost:53"

待ち受けポートの設定

管理者権限でコマンドプロンプトを先程とは別に開き、以下のようなコマンドを実行します。

netsh interface ip set dns "Wi-Fi" static 127.0.0.1 primary

"Wi-Fi" の部分は、netsh i i sh conf コマンドで表示されるネットワークインターフェイス名から利用するものを選択してください。元々の設定に戻すときに必要となるので、場合によってはメモしておきましょう。

設定の確認

DoH が設定されていることを確認するために、Cloudflare のサイト にアクセスしてテストを実行します。

画像のように「Secure DNS」と表示されると DoH 接続が成功しています。 (Windows で dig コマンドを使って DoH の確認をするには BIND のデータをダウンロードする必要があります。)

DNS over HTTPS Client を自動起動させる

ここまでの内容のバッチファイルを作成し、ローカルグループポリシーエディターからPC起動時の実行設定をを行います。

バッチファイルの作成

以下の内容のファイルを作成し、doh_client_running.batとして適当な場所に保存します。

@echo off

netsh interface ip set dns "Wi-Fi" static 127.0.0.1 primary
netsh interface ip add dns "Wi-Fi" 8.8.8.8

start /min C:\tools\cloudflared proxy-dns

localhost での名前解決がうまくいかなかった時のために、セカンダリ DNS サーバーとして8.8.8.8を登録しています。

PC 起動時に自動実行設定

「Win+R キー」を押すなどして「ファイル名を指定して実行」を開き、gpedit.mscと入力して実行します。

ローカルグループポリシーエディターが開くので、コンピュータの構成 > WIndows の設定 > スクリプト(スタートアップ/シャットダウン) からスタートアップ を開きます。

スタートアップのプロパティから、追加 > スクリプト名 の横にある「参照」から先ほど作成したバッチファイルを選び、適用します。

自動起動設定の確認

再起動して先ほどのサイト にアクセスして確認します。
実行ウィンドウが表示されないため、終了するにはタスクマネージャからプロセスを殺す必要があります。因みに、タスクスケジューラを使用して自動実行を登録した場合は実行ウィンドウが表示されます。

(補足) 元の設定に戻すスクリプトの作成

問題が発生した場合のために、元々の状態に戻すバッチファイルを作成しておくと便利です。

netsh interface ip set dns "Wi-Fi" static 1.1.1.1 primary
netsh interface ip add dns "Wi-Fi" 8.8.8.8

taskkill /F /IM cloudflared.exe

このバッチファイルは管理者権限で実行する必要があります。

参考文献