「"pi-hole" バックアップ」でググっても、Pi-hole での広告ブロックを讃称するだけだったり、インストール方法の記事ばかりだったので、自分のググラビリティとして。
Pi-hole とはローカル・ネットワーク向けの DNS サーバーの一種です。ドメイン名と IP アドレスの名前解決をする際の DNS キャッシュ機能とブロック機能を提供します。詳しくは TS; DR 参照。
TL; DR (今北産業)
-
バックアップは、Pi-hole の GUI(管理画面)の [
Settings
] - [Teleporter
] - [Backup
] ボタンを押すとアーカイブのダウンロードが始まる。- 作成されるファイル:
pi-hole-<pi-hole のホスト名>-teleporter_<YYYY-MM-DD_hh-mm-ss>.tar.gz
- 作成されるファイル:
-
リストアは、同じ画面の [
Restore
] にあるFile input
でバックアップ・ファイルを指定して、リカバリしたい項目にチェックを入れて [Restore
] ボタンを押す。 - バックアップのアーカイブ(
.tar.gz
)に含まれるファイル。- whitelist.exact.json
- whitelist.regex.json
- blacklist.exact.json
- blacklist.regex.json
- adlist.json
- domain_audit.json
- group.json
- client.json
- domainlist_by_group.json
- adlist_by_group.json
- client_by_group.json
- setupVars.conf
- dhcp.leases
- custom.list
- pihole-FTL.conf
- etc/hosts
- dnsmasq.d/06-rfc6761.conf
- dnsmasq.d/01-pihole.conf
TS; DR (Pi-hole とは)
Pi-hole とは、Raspberry Pi などの SBC でも動かせる、ローカル・ネットワーク向けの DNS サーバーの一種です。ドメイン名と IP アドレスの名前解決をする際の、キャッシュ機能とブロック機能を提供します。
ローカル DNS サーバーとして
ネットワーク内で Pi-hole を立ち上げると、クライアント側(ネットワーク内のデバイス側)で Pi-hole を DNS サーバーとして指定できるようになります。
具体的には、クライアント側のネットワーク設定で TCP/IP
の DNS サーバーのアドレスを Pi-hole の IP に指定します。すると、クライアントは Pi-hole にドメイン名の名前解決をリクエストするようになります。Google の 8.8.8.8 や、Cloudflare の 1.1.1.1 を指定されたことがある方も多いのではないでしょうか。
また、ルーターの DHCP の設定で DNS も設定できるタイプであれば、クライアント側で設定しなくてもルーター側で設定された DNS が使われるようになります。
初回の名前解決自体は外部の DNS サーバーに問い合わせますが、それらをキャッシュする(外部への通信量が減る)ことで、ローカル・ネットワーク全体の速度向上が期待できます。
hosts
サーバーや DHCP サーバーとして
Pi-hole の主な機能は DNS サーバーなのですが、hosts 機能と DHCP サーバー機能も持っています。
hosts 機能とは、簡易 DNS のことです。
厳密には、ローカルに保存されているテキスト・ファイル(hosts
ファイル)を参照することで外部に問い合わせずに名前解決するもので、どの PC にも実装されています。
例えば自身のマシンにアクセスする際、ホスト名に localhost
を使うことがあると思いますが、PC 内の hosts
ファイルに 127.0.0.1 localhost
という割り当てがされているためです。つまり、hosts
ファイルに 127.0.0.1 hoge.fuga
という記載をしておくと http://hoge.fuga/
で 127.0.0.1
にアクセスできるということになります。
そして Pi-hole の Local DNS
機能も hosts
と同じ機能を提供するものです。
Pi-hole の Local DNS
機能を使うと、クライアントごとに hosts
ファイルを設定しなくても同じ要領で名前解決できます。通常の hosts
との違いは DNS
だけでなく CNAME
も指定できることです。
Pi-hole における CNAME
はドメイン名(ホスト名)のエイリアス機能です。つまり hoge.com example.com
と設定すると hoge.com
のアクセスを example.com
に転送させることができます。
注意点として、CNAME
は http
接続の場合のみ正常に動作します。https
接続の転送はうまく動作しません。例えば bing.com
を google.com
に設定しても、SSL/TLS のドメイン証明書が一致しないため、不正なドメインとしてブラウザ側でエラーになります。
また、Pi-hole は DHCP サーバ(IP アドレスの自動割り当て機能)も備えています。
家のルーターの DHCP を外部 DHCP に設定できる場合は、MAC アドレスと IP アドレスの自動割り当てを Pi-hole でできます。ルーター側の静的アドレスの割り当て数が足りなかったり、GUI が使いづらい場合に便利です。
注意点として、同一ネットワーク内に複数 DHCP サーバーは立ち上げられません。IP 設定などのネットワーク設定に慣れていなかったり、DNS・NS・DHCP・NAT といった用語の違いがわからない場合は、Pi-hole を DHCP サーバーとして使うことはオススメしません。
ドメインブロッカーとして
しかし、Pi-hole の 1 番の特徴は、ドメインのブロック機能です。
Block list
/Allow list
(ブラックリスト、ホワイトリスト)方式で、ドメインの名前解決をさせるか否かを指定できます。
つまり、ブロックリストに記載されたドメインだった場合は、IP アドレスが 0.0.0.0
になるため、そのドメインでは外部サーバーにアクセスできなくなります。
The Firebog などの、有志によるブロック・リストを追加することで、有害と判断された数百万のドメインをブロックできます。
ポルノサイトはもちろん、個人情報を抜いたりアクセス履歴をトレースするサイトだけでなく、既知のマルウェアやウィルスをダウンロードさせようとするサイトのドメイン名の名前解決をブロックします。
有志の中には、必要以上に慎重な人もいて Facebook や Amazon などのサイトすらも Block List
(ブラックリスト)に入れられているので、必要にあわせて適宜 Allow List
(ホワイトリスト)に追加するなどの工夫が必要です。
筆者も、いくら言ってもリンクを踏んじゃう年寄りがいるのでブロックリストを公開しています。参考になれば幸いです。
- Block List KEINOS @ GitHub
Pi-hole のメリットとデメリット
メリット
このことから広告ブロックに使われることが多いのですが、一番のメリットは、子供やジッちゃなどのネットリテラシーが低いユーザーがいる環境で抜群の効果があることです。
二番目のメリットは、ネットワーク内からの不審なアクセスやデバイスを発見できることです。筆者は、中華製のフォトフレームがモバイル・ユーザー向けのログ集計サイトに不明なパケットを送っているのを発見しました。どうやら安いぶん、アフィリエイトで稼いでいるタイプのようでした。
三番目のメリットは、ネットワークが若干軽くなることです。これは(ユーザーのトレース情報などを)、知らないところで外部送信しているパケットが送れなくなるためです。
デメリット
とは言え Pi-hole はセキュリティの銀の弾丸にはなりません。デメリットもあります。
まず、ルーターとしての機能はないため、IP 直打ちの場合は効果がありません。また、クライアント側で DNS サーバーを手動で 8.8.8.8
などに設定されると効果はありません。
一番のデメリットは、ある程度のネットワーク知識がないとトラブル・シューティングが難しいことです。
例えば、とあるサイトが認証やユーザー動向の追跡を別の外部サイトに依存しているものの、その外部サイトがブロックされている場合です。
特に、電子決済系のサイトで、「ついでに」ユーザーの動向も取っちゃっているサイトなどは、大抵のブロック・リストに含まれているからです(悪名高い Double Click に飛ばしてからログイン・ページに飛ばすサイトなどは顕著です)。
でもメリットの方が大きい
とは言え「n 分間 Pi-hole を停止させる」(ブロックしない)といった設定も Web UI から簡単にできます。
また、Web UI の Query-log
タブを開いた右上にある Search
で、自分のマシンの IP アドレスでフィルターすれば自分のマシンがどのサイトにリクエストしたのか確認できます(もちろんログさせない設定もできます)。
このログのページを開いた状態で、正常に動かないページにアクセスしたのち、更新すると、意外なページも一緒にリクエストされて(ブロックされて)いることに驚くでしょう。
Pi-Hole は名の通り Raspberry Pi でも動かせるので、子供や年寄りがいる家庭なら、自身のネットワークの勉強も含めて導入してみるのをオススメします。
児童が多い場所なら、思い切って全てをブロックしておき、リクエストの多いドメインを Allow List
(ホワイトリスト)に適宜追加する、という運用もありだと思います。
動作確認環境
- FriendlyARM NanoPi NEO 2
- Armbian 22.08.1 (Bullseye with Linux 5.15.48-sunxi64)
- Pi-hole v5.12.1
- FTL v5.18
- Web Interface v5.15