広告をネットワークレイヤでブロックするPi-holeを動かしてみた

docker

概要

  • ネットワークレベルで広告をブロックするというPi-holeを動かしてみました。
  • どういうアーキテクチャでブロックしているのかすごい気になっていました。普通はE2Eで暗号化されているのでネットワークにPi-holeを設置したところでどうやって防ぐのかと。。。
  • まぁ、意外と仕組みは簡単で、Pi-holeがホスト名の広告サーバリストをブラックリストとして保管していて、ウェブブラウザを行う端末のDNSリゾルバをPi-holeのホストに向けることで広告コンテンツの配信をブロックします。これにより、各自がブラウザでad blockerを入れなくても対処できます。会社で言えば、一元的にブラックリストを管理できるという利点がありそうですが、マーケティング関係者や制作関係者にとっては困ります。

設定

  • 名前にPiと書いてあるからRaspberry-Piで動かすために作られたソフトウェアのようです。
  • Dockerコンテナですぐに起動できるイメージがあるので動かしてみました。
  • docker-composeのサンプルがありますが、そのままだと動かないので少し改変しました。
  • また、Ubuntuにはdns-resolverがすでに53番ポートでlistenしているので止める必要があります。それには再起動も必要なので面倒でした。

% wget https://gist.githubusercontent.com/matsubo/ff8ad2857ad5ae84ea74d51f946330cc/raw/d8f281aff30ff21a5ee8b2df940fd00fa6b8459a/docker-compose.yml
% docker-compose up

初回の起動時は、ブラックリストとなるホスト名をダウンロードするので2分ぐらいかかります。

起動したら、UDP 53番ポートがListenしているしていることを確認して、ネットワーク上のホストのDNSリゾルバを向けてあげれば使えます。

画面が見えます。

実験

その1

あんまり変わりません。右上のトラッカーとかが無くなっています。

その2

ホスト名レベルでのブロックなので、画像配信サーバがブラックリストにある様子です。

(それにしても世の中の広告は卑猥な広告か、ゲームばかりです。普段はAdBlockを使っているので目していませんでしたが、広告面の大きさすごいでかい。)

管理画面

http でアクセスすると管理が見えます。なぜかIPv6のインターフェイスでしかListenしてくれませんでした。設定的にはIPv4もListenするはずなんですが。テストの利用なのでとりあえず先に進めます。

今すぐPi-holeを使ってみる!

  • なんと、Pi-holeをpublicに運用している人が居ます。自分のDNSリゾルバを変更するだけですぐに試せちゃいます。
  • https://public-pihole.com/

  • Netherland
    • 51.158.168.202
  • France
    • 54.39.97.51
  • Canada
    • 54.39.97.51
  • Singapore
    • 139.99.74.182

まとめ

  • 一定の効果はありそう。もし、問題が起きたときでも簡単にWebから設定を確認、変更できそうなので良いです。
  • 外出先からも自分の運用するPi-holeを利用するためにはVPNで自宅に接続する状態にするか、publicにPi-holeを置く感じの運用になりそう。

コメント