Alpine Linuxベースの仮想マシンにPi-hole広告ブロックDNSを構築

公開

Pi-holeの基本設定

インストールが終わればもう即、広告ブロック付きDNSサーバとして機能を始めています。広告ブロックリストは、左メニューの Adlists でそのリストソースを確認できます。

図21.Adlist Group Management

図21.Adlist Group Management

個別にブロックから除外したいドメインは、メニューの Domains でホワイトリストに登録することができます。

図22.Domain Management

図22.Domain Management

ちなみにリスト中の s.youtube.com は、iOSデバイスのYoutubeアプリが閲覧履歴を残すのに使うのだそう。Androidと挙動が異なるとは知りませんでした。

他、実際に使ってみてDNS利用中に何か不都合があれば、左メニューの Disable Blocking で広告ブロックの一時的な無効化も簡単。

図23.Disable Blocking

図23.Disable Blocking

LAN内のことはDHCPに聞くように

Pi-holeにもDHCPサーバの機能がありますが今回はこれを使わず、引き続きOpenWrtルータのDHCPサービスがIP配布を担っています。

この場合、Pi-holeにはLAN内のデバイスに関する名前解決が一切できない(わからない)ことから、ローカルネットワークに関する問い合わせ先を、 Settings ページの DNS タブの下方、 Conditional forwarding 項に指定しておきます。

図24.Conditional forwarding

図24.Conditional forwarding

これによりクライアントデバイス名が、素っ気ないIPアドレスからホスト名に変換されるので助かります。

 

LAN以外のプライベートサブネットからも使いたい

OpenConnect VPN経由でPi-holeをDNSに利用しようとすると(関連記事はこちら)、ローカルサブネット以外からのアクセスに当たることから、次の警告が挙がります。

図25.non-local network Warning

図25.non-local network Warning

警告を回避するには、上述の同じ設定 DNS タブの上方にある、 Interface settings を以下の要領で変更します。

図26.Respond only on interface

図26.Respond only on interface

/etc/resolv.confの考察

図26の通り、Pi-holeは上流のDNSサーバとしてUnboundの5335番ポートに振り向けられているのですが、ローカルシステム自身のDNSサーバ一体どこを向いているのかと言うと、自身の静的IPアドレスを向いていました。

以前、Alpine LinuxにUnboundを入れた時は localhost だったので、はてさて。

この素朴な疑問がPi-holeのフォーラムにも挙がっていましたが、結局どちらでもよさそう。

どうしてこんな細かいことを確かめたかと言うと、リモートホストからPi-holeホスト自身の名前を解決しようとすると、localhostが返ってきてしまうことでした。

結局、 resolv.conf とは無関係なことがはっきりしたので、少し間抜けですがPi-holeの Local DNS Records に自身の名前を記述して解決。

図27.Local DNS Records

図27.Local DNS Records

複数DNSサーバの併行運用

既存のUnboundサーバと共に2つのDNSサーバを併行運用したいので、OpenWrtのDHCPサーバのオプションにカンマ区切りで列記します。

 

図28.OpenWrt DHCP Option

図28.OpenWrt DHCP Option

一方、静的IPアドレスで繋いでいるRaspberry Pi(debian 11)では、 /etc/dhcpcd.conf を次のように半角スペース区切りで列記します(紛らわしい)。

 

DNSパフォーマンステストスクリプト

指定したDNSサーバのパフォーマンステストを実行、比較しやすく表示してくれる楽しそうなスクリプト(Great Works!!)を見つけたので、早速試してみます。

必要なパッケージは全てインストール済みなので、 git clone で適当なPCへダウンロード。

実行の前に、 dnstest.sh の冒頭部分を編集して、対象のDNSサーバを絞ります。

実行の結果から、Pi-hole DNSサーバ( resolv11 )のパフォーマンスは問題無し。既存のUnbound DNSサーバ( resolv9 )がやや不調。こちらもPi-holeへリプレースしようかと思います。

 

次回は個別ブロックリスト機能を応用した、簡易ペアレンタルコントロールを試します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA