- 2024年のWebとソフトウェアは、広告、追跡、分析ウィジェット、Cookieバナー、絶え間ない外部通信によって疲弊しやすくなっており、Pi-holeはそれをネットワーク層で減らす方法である
- Pi-holeは家庭やオフィスのネットワークでDNSシンクホールとして動作し、トラッカー、広告CDN、不要なドメインへのリクエストをデバイス全体で遮断する
- 実際の利用環境では、全トラフィックの66.6%が遮断され、日常的な作業には機能的な影響がなかったという
- 構成にはRaspberry PiとmicroSDカード、初期設定用の周辺機器、Pi-holeのインストール、ルーターがDNSリクエストをPi-holeへ送るようにするネットワーク設定が必要である
- Pi-holeだけですべての広告を防ぐのは難しく、YouTubeのようなサービスにはuBlock Originのようなブラウザ広告ブロッカーを併用する構成が有用である
なぜPi-holeを使うのか
- Webブラウジングやソフトウェア利用中の望まないデータ収集や追跡が大きく増えており、ユーザーはコンピューター・ブラウザー・その他のシグナルが同意なくプロファイリングに使われる状況を避けたいと考えている
- 2024年の一般的なオンライン体験は、広告、悪質なスクリプト、分析ウィジェット、チャットボットウィジェット、ページを覆うCookie同意バナー、クリックのたびに外部と通信するソフトウェアで埋め尽くされている
- 広告技術は訪問者を過度に搾取する方向へ変質しており、その対策として家庭内ネットワークにPi-holeを置く方法が提案されている
- Pi-holeはすでによく知られたプロジェクトであり、Jeff Atwood、Troy Hunt、Scott Hanselman、Scott Helmeらが長年取り上げてきたツールである
ネットワークでどのように動作するか
- Pi-holeは通常Raspberry Piで動作するが、技術的にはPi以外でも実行可能である
- ネットワーク内のDNSプロキシ/シンクホールのように動作する
- 目的は、ネットワークからアクセスしたくないドメインへのリクエストを遮断することである
- トラッカー
- 広告配信CDN
- 家庭や事業所内からデータを送りたくないドメイン
- 実際のネットワークでは、全トラフィックの66.6%が遮断され、ユーザーの作業には機能的な影響がなかった
インストールに必要な構成
- Pi-holeの設定には大きな投資は不要で、最大のコストは機材よりも設定と検証にかかる時間である
- 基本構成は次のとおり
- Pi-holeチームはインストール手順をできるだけ簡単にしている
ブロック対象ドメイン一覧の運用
- ハードウェアとソフトウェアをインストールした後は、ルーターのDNSリクエスト先がPi-holeデバイスを指すように構成する必要がある
- 次の段階は、どのドメインをブロックするかを決めることだ
- ネットワークを流れるリクエストを直接見て判断できる
- コミュニティのブロックリストを利用できる
- Firebog は出発点として推奨される資料で、コミュニティが調査・収集した多くのドメイン一覧を提供している
- すべての一覧を無条件で適用する必要はない
- 一部の機能が壊れたり動作しなくなったりする可能性がある
- Pi-holeのリアルタイムクエリログで、どのクライアントがどのドメインへアクセスしようとしているかを確認できる
- 必要に応じてドメインを動的にブロックまたは許可できる
- 正規表現で特定条件に一致するドメインを防ぐことができる
- ロシア、中国、香港に由来する悪性トラフィックを多く見ているという理由で、
.cn、.ru、.hk TLDをブロックする例がある
(^|\\.)(cn|ru|hk)$
- このルールを適用すると、DNSリクエストがPi-holeを経由する限り、それらのTLDサーバーへ向かう通信はネットワークの外に出ない
- 国別TLDがマルウェアの唯一の攻撃ベクトルではないが、それをブロックすることはネットワーク全体のセキュリティ態勢を高める小さな一歩として扱われている
DNS回避の防止
- 一部の機器は、ユーザーが設定したDNSを回避して広告を配信したり、分析データを収集したりしようとする場合がある
- 対応方法は使用するルーターのハードウェアによって異なる
- UniFiエコシステムとUDM Proを使う環境では、UDMにSSHで接続して
iptables ルールを実行する例がある
iptables -t nat -A PREROUTING ! -s YOUR_PI_HOLE_IP -p tcp --dport 53 -j DNAT --to YOUR_PI_HOLE_IP
iptables -t nat -A PREROUTING ! -s YOUR_PI_HOLE_IP -p udp --dport 53 -j DNAT --to YOUR_PI_HOLE_IP
# Make sure that we skip 192.168.1.1 since that seems to break UniFi Protect
iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.1.2-192.168.254.254 -j MASQUERADE
- このスクリプトは、すべてのDNSトラフィックであるポート53をPi-holeへリダイレクトし、NATルールでネットワークアドレスマスカレードを適用する
- 1つ目のコマンドは、TCPのDNSパケットをPi-holeのIPへ宛先NAT処理する
-t nat: NATテーブルのルールを指定
-A PREROUTING: ルーティング前のインバウンドパケット処理チェーンにルールを追加
! -s YOUR_PI_HOLE_IP: Pi-hole自身から開始されたパケットを除外
-p tcp: TCPパケットに適用
--dport 53: DNSポート53宛てのパケットにマッチ
-j DNAT: 宛先IPアドレスを書き換えるDNATターゲットへ送る
--to YOUR_PI_HOLE_IP: パケットをPi-holeのIPへリダイレクト
- 2つ目のコマンドは同じ処理をUDPパケットに適用する
- 3つ目のコマンドは、指定した内部IP範囲の送信元IPをルーターIPに書き換える
MASQUERADE ルールである
- 例の範囲は
192.168.1.2 から 192.168.254.254 までで、各自のネットワークに合わせて調整できる
192.168.1.1 はUniFi Protectが壊れるのを避けるため除外されている
- 結果として、Pi-hole自身から出たリクエストを除くネットワーク機器のTCP・UDP DNSリクエストはすべてPi-holeへリダイレクトされる
ブラウザー広告ブロッカーと併用する
- Pi-holeがネットワーク機器とインターネットの間にあっても、uBlock Origin のような信頼できる広告ブロッカーには依然として価値がある
- YouTubeのようにサービス利用は維持しつつ広告なしで使いたい場合、ドメイン単位のブロックだけで解決するのは難しい
- Pi-holeはブラウザー広告ブロッカーに加えて、望まないコンテンツやリクエストを防ぐ追加レイヤーとして使われる
- ブラウザー広告ブロッカーは、基本Webサイトドメインから読み込まれるネイティブ広告やスポンサーコンテンツのような特定のUI要素もブロックできる
使用後の評価
- Pi-holeをネットワークに導入した後は、元に戻れないほど効果が大きかった
- 両親と配偶者の両親のネットワークにも同じ設定を適用した
- オンライン生活の質に大きな違いをもたらすとして、今後も勧め続けると述べている
5件のコメント
必ずしもPi-Holeを使わなくても、たいていの場合は、すでに広告をブロックしているDNSをそのまま使うだけでも十分です。
http://youtube.com/watch?v=OvfnqFXRybk このように adguard をインストールして使う方法も良いですね。
Adguard Home、Pi-hole、NextDNS の3つをすべて使ってみましたが、Adguard Home がいちばん良かったです。
並列リクエストを有効にしてキャッシュを十分に確保すれば、DNS リクエストは 10ms 未満で処理されます。
広告ブロックの観点では悪くないサービスですね。ただ本文にもあるように、広告をブロックすると意外と使えなくなるサービスが多いので、そういう時は広告をオフにしないといけなかったりして……。自分ひとりならまだしも、妻が使っていて動かずにイライラされるとそれも面倒なので、個人のコンピューターでだけ使っています。泣
おお…ありがとうございます…