自宅ネットワークに広告ブロック機能を導入したくて試行錯誤中

2024/01/14に公開

先に結論

自宅サーバーのProxmox上にAdGuard Home用のLXCコンテナを2つ立ち上げてDNSサーバーを並列化し、同期用ツールとしてadguardhome-syncをProxmox上にDockerコンテナとして立ち上げてDNSサーバーを同期させる構成に落ち着きました。

やりたいこと

  1. 自宅ネットワークにDNSベースの広告ブロック機能を導入したい
  2. ローカルDNSサーバーを立てることになるので、自宅ネットワーク用のDNSとしても使いたい

変遷

  1. 有名どころでPi-holeを自宅ProxmoxのLXCコンテナ上に導入してみた
  2. 自宅ルーターのDHCPサーバー設定を変更した(DNSのプライマリをPi-hole、セカンダリをCloudflareのパブリックDNSサーバー1.1.1.1に設定)
  3. ローカルの名前解決に失敗したり、広告ブロックが効いてないことがある
  4. DNS設定のプライマリとセカンダリは主従関係(プライマリがNGだったらセカンダリを使う)ではなく並列(複数あるからどっち使ってもいいよ)らしい、ということがわかった
  5. Pi-holeを並列化するのがよさそうだ
  6. Pi-hole単体では並列化したサーバー間の設定同期はできなくてサードパーティ製の同期ツールを使う必要があるけど、一番有名なgravity-syncはDockerコンテナでの起動をサポートしておらず使い勝手が悪そう
  7. サードパーティ製だけどDockerコンテナで起動できる同期ツールがあるAdGuardHomeを試してみる
  8. 想定どおりに動いてるので、自宅Proxmox上にLXCコンテナを2つ作って並列化して同期ツールはDockerホスト上で実行 ← いまここ

課題

  • 並列化したAdGuard Homeがいずれも同じ物理サーバー上で動いてる。並列化とは……
  • なので、物理サーバーとして使ってるNUCが落ちると家族全員がインターネット使えなくなってしまう(致命的)

広告が出なくなったのは快適ですが、課題のほうが致命的すぎてこのままでは常用できない…… #逸般の誤家庭の皆さんはどうやって解決しておられるのでしょう……

ちなみにこれは思わぬ副産物でしたが、Pi-holeでは大変だったワイルドカードDNSの設定がAdGuard HomeではGUIで簡単に設定できるのはうれしいところです。

Discussion