WindowsでもUnbound (Remote controlの準備)

unbound

4年ほど前に書いたWindowsでもUnboundで広告ブロックの追記的な記事です。前回は触れてなかったRemote-control部分をちょっとだけ。「がとらぼ」の人は基本的に設定ファイルを変更してUnboundの設定再読込を実行する派で、それで十分なのでFreeBSDでもremote-controlは使ってないんだけど。(使えるように設定すらしてない)

unbound-control 周りの簡単な設定 1
まず、OpenSSLがWindowsに入っていなければそのインストールから。OpenSSLは普通だとソースからビルドってなるかと思われるがWindowsでビルド環境の用意からというのはなんなのでビルドされた物をいただいて使用することに。OpenSSLのWikiにバイナリのリストがあるのでリストから好きなものを。とりあえず今回はリストの1番上のものを使わせてもらうことに。画像のリンクから進みダウンロード。

unbound-control 周りの簡単な設定 2
ダウンロードしたOpenSSLのバイナリをインストール。
ライセンス同意して「次へ」。

unbound-control 周りの簡単な設定 3
幾つかの画面を進んで、OpenSSLのDLLファイルなどをWindowsのシステムディレクトリに置くかどうかの画面。
普通にWindowsのシステムディレクトリを汚されたくないので「下」を選択。(初期値は上)
「次へ」。

unbound-control 周りの簡単な設定 4
寄付の画面では、初期値で10ドルが選択された状態。このチェックを外して「Finish」。

unbound-control 周りの簡単な設定 5
インストールしたOpenSSLがどこに置かれたかを確認する。
64ビットWindowsなら基本的にはC:\Program Files\Openssl-Win64\binにあるopenssl.exe の筈。

unbound-control 周りの簡単な設定 6
Windowsの設定から、「システム」の「詳細情報」の中の「システムの詳細設定」を開く。

unbound-control 周りの簡単な設定 7
システムのプロパティが開くので上部の「詳細設定」タブを選択し一番下の「環境変数」ボタンをクリック。

unbound-control 周りの簡単な設定 8
下半分の「システム環境変数」の側の「新規」ボタンをクリック。

unbound-control 周りの簡単な設定 9
「新しいシステム変数」窓が開くので、変数名にSSL_PROGRAMを指定、変数値に事前に調べたopenssl.exe(等)のフルPathを入力。(手入力がイヤなら下の「ファイルの参照」からopenssl.exeを選択)
「OK」を押す。

unbound-control 周りの簡単な設定 10
入力した内容が登録されていることを確認する。リストの並びは変数名のアルファベット順なので半分より下にスクロール。
正しく登録されていれば「OK」
システム変数はこの時点では登録はされていてもシステムに反映されていない(つまり使われない)筈なのでOSを再起動する。

unbound-control 周りの簡単な設定 11
スタートボタンから「Windowsシステムツール」の中の「コマンド プロンプト」を右クリック(これが重要)。
「その他」から「管理者として実行」をクリック。

unbound-control 周りの簡単な設定 12
管理者モードでコマンドプロンプトが開く。
インストールしたUnboundのディレクトリに移動する。 cd \program files\unbound
そこにあるunbound-control-setup.cmdを実行する。
画像ではその後の処理が表示されているが、これはunbound-control-setup.cmdの編集をしているから。
実際は何か表示されたかと思ったらコマンドプロンプトが終了して窓が閉じる筈。そのとき、...........++++のような表示が一瞬でも見えればOK。
何も表示されずにいきなりコマンドプロンプト窓が閉じれば失敗。ただし、速いマシンだと一瞬の表示が読めないこともあるかも。(次へ)
ちなみに、先に登録した環境変数SSL_PROGRAMはこのunbound-control-setup.cmdで求められている。

unbound-control 周りの簡単な設定 13
コマンドプロンプトがあっという間に閉じてしまって処理内容を確認できなくてもUnboundのディレクトリに上の画像の4つのファイル(キーファイルと証明書ファイル各2つ)が作成されていれば成功。root.keyは存在していてもここでは関係ないので念の為(消さないでね)。

設定でremote-control関係の最低限の設定を行う。その他は好みでやってください。
unboundの設定ファイルは初期値ならC:\Program Files\Unbound.service.conf
1
2
3
4
5
6
remote-control:
	control-enable: yes
	server-key-file: "C:\Program Files\Unbound\unbound_server.key"
	server-cert-file: "C:\Program Files\Unbound\unbound_server.pem"
	control-key-file: "C:\Program Files\Unbound\unbound_control.key"
	control-cert-file: "C:\Program Files\Unbound\unbound_control.pem"

1行目はセクションなので行頭から、2行目以降が字下げになっているのはremote-controlセクションの子設定なので。
既に設定内に存在する(ハズの) Server:セクションの途中に挿入せず、設定ファイルの先頭かまたは設定ファイルの末尾に挿入すると間違いが無いかと。

unbound-control 周りの簡単な設定 14
設定を行ったらWindowsの「サービス」を開く。(Windows 10ではスタートボタンからシステム管理ツールの下)
Unbound DNS validatorが「実行中」の筈。設定変更を反映させるためにクリックしてからサービスを再起動させる。(またはWindowsを再起動)
そのあと、「実行中」にならなければ何か問題が発生していると思われます。(特にWindows起動後に自動起動しない場合)

unbound-control 周りの簡単な設定 15
Unboundサービスが起動しているのに名前解決が機能しない、通信できないという場合はファイフウォールの設定も確認。プライベートとパプリックが有効で許可のステータスになっているのが常識的な状態。Unboundを初めて実行したときに通信の許可の確認が出たときに許可していればこの状態の筈。

これで、Unboundディレクトリにあるunbound-control.exeによる制御が行えるようになる筈。

鍵ファイルと証明書は無しでもいけるかもだけど、今回は敢えて素直に作った。

関連記事: