DNSブロックについて

Last-modified: 2021-05-18 (火) 22:22:44

Androidの非root広告ブロックアプリAdGuardを使ってChromeやアプリ内の広告を無料でスマホから消す方法


ここでは、AdGuardのDNSブロックについて解説します。初心者にも分かるように、DNSとは何かというところから、メリット・デメリットを含めて、丁寧に説明します。また、DNSブロックを使う場合のオプションについても説明します。


DNSとは?

DNSとは何かを正確に説明すると非常に難しくなってしまうため、ここでは初心者にも理解できるようにイメージだけをできるだけ分かりやすくお伝えします。もっと正確に知りたい方はWikipediaなどの記事を読んでみてください。

まず、例としてGoogleのウェブサイトにアクセスするときのことを考えてください。大抵の人は、

http://www.google.com/

などとブラウザ(Chromeなど)のアドレス欄に入力するはずです*1。それでは、

http://216.58.199.228/

と入力しても全く同じウェブサイトにアクセスできるのをご存知でしょうか。実は、Googleに限らず、あらゆるウェブサイトには、原則としてこのような2通りのアドレスが存在しています*2。「www.google.com」のように英数字*3を使ったものをドメイン名、「216.58.199.228」のように数字だけを使ったものをIPアドレスと呼びます。

どうして、2つのアドレスがあるのでしょうか。それは、人間にとっては英数字のほうが扱いやすいけれど、機械にとっては数字だけのほうが扱いやすいからです。人間と機械との間の橋渡しをするために、ドメイン名とIPアドレスを相互に変換してくれるシステムがDNS(ドメイン・ネーム・システム)です。

実は、普段インターネットを利用するときにも、知らず知らずのうちに裏でDNSが使用されています。例として、Googleのウェブサイトにアクセスする際にどのようにDNSが使われるのかを簡単に見てみます。

  1. ユーザーがスマートフォンのブラウザのアドレス欄に「http://www.google.com/」と入力する
  2. スマートフォンが自動的に「www.google.comをIPアドレスに変換してください」とインターネット上のDNSサーバーにリクエストする
  3. インターネット上のDNSサーバーが「www.google.comは216.58.199.228ですよ」とスマートフォンに回答する
  4. スマートフォンが自動的に「http://216.58.199.228/」にアクセスする
  5. Googleのウェブサイトが表示される

このように、ユーザーはドメイン名を入力しただけですが、機械の内部ではインターネット上のDNSを使ってIPアドレスに変換し、IPアドレスを使ってウェブサイトにアクセスしているのです。

DNSブロックとは?

AdGuardのDNSブロックとは、広告等(広告のほかにウイルスなどの有害コンテンツも含む)を配信するサーバーに関するDNSリクエストをブロックすることで、広告等のダウンロードを阻止する技術です*4

先程のDNSの説明を思い出してください。スマホの内部では、ウェブサイトにアクセスする前に、DNSを使ってドメイン名をIPアドレスに変換していました。広告等へのアクセスでもこの原理は変わりません。そこで、IPアドレスへの変換自体をブロックしてしまえば、広告等をブロックできるということになります。

AdGuardのDNSブロックが架空のアプリ「アフィカスアプリ」のアプリ内広告をブロックする様子を簡単に見てみます。
(ドメインにexample.comを使用していますが、これはあくまでも例示のためのものでありexample.comが広告を配信しているわけではありません。)

  1. アフィカスアプリが広告をダウンロードするために「http://example.com/koukoku/」へ接続しようとする
  2. スマートフォンが自動的に「example.comをIPアドレスに変換してください」とインターネット上のDNSサーバーにリクエストする
  3. AdGuardアプリがDNSサーバーに代わって「example.comのIPアドレスは見つかりませんでした*5」と回答する
  4. IPアドレスが分からないのでアフィカスアプリは広告をダウンロードできない

このように、広告等にアクセスする前のDNSリクエスト自体をブロックしてしまい、広告等のダウンロードを阻止するのがDNSブロックというわけです。

DNSブロックのメリット

DNSブロックには2つのメリットがあります。一つは省電力化・高速化、もう一つは無料版でのアプリ内広告ブロックです。

省電力化・高速化

DNSブロックには、省電力化と高速化の効果があります。この効果は、同じ広告等サーバーに何度も繰り返してアクセスしようとするアプリやウェブサイトに対して大きな効果があります。

例えば、アフィカスアプリは、広告のダウンロードに失敗したら1秒後にまた広告のダウンロードを試みるという仕様だったとします*6。DNSブロックを使わないで通常の通信ブロック機能でアフィカスアプリ内の広告をブロックする場合には、アフィカスアプリが広告のダウンロードを試みてそれをAdGuardがブロックするという同じ動作を1秒置きに繰り返すことになります。これでは無駄にバッテリーを消耗してしまいますし、動作が重くなる原因にもなります。同じサーバーの広告をたくさん貼っているウェブサイトでも同じことが言えます。

一方、DNSブロックではこれらの心配はありません。なぜなら、DNSリクエストに対する「見つかりませんでした」という結果は一定時間保存されているからです*7。一度「example.comのIPアドレスは見つかりませんでした」と回答してしまえば、この結果が保存され、AdGuardが何もしなくても一定時間ブロックの効果が続くというわけです。

無料版でのアプリ内広告ブロック

DNSブロックは、本来は省電力化と高速化のために作られた機能です。しかし、副次的効果として、DNSブロックを使えば、無料版AdGuardでも多くのアプリ内広告をブロックすることができます。AdGuardのアプリ内広告ブロックはプレミアム版限定機能ですが、お金を払わずに似たようなことができるというわけです。

どうして無料版でもアプリ内広告のブロックができるのでしょうか。それは、DNSリクエストの時点では、example.comにアクセスしようとしているのがブラウザーなのかアフィカスアプリなのかが分からないためです。無料版AdGuardは、本来ブラウザーでの広告ブロック機能しかありませんが、DNSブロックではブラウザー内広告とアプリ内広告が区別できないので、両方ブロックする仕様になっています。

DNSブロックのデメリット

DNSブロックの欠点として、きめ細かいブロックができないということが挙げられます。

例えば、「http://example.com/koukoku/」で広告が配信されている一方で、「http://example.com/yakyuu/」で野球情報が配信されているとしたらどうでしょう。DNSブロックでexample.comをIPアドレスに変換できないようにしてしまうと、野球情報も見られなくなってしまいます。

このように、広告等とまともなコンテンツが同じサーバーで配信されている場合には、このサーバーをDNSブロックの対象外とするか、思い切ってまともなコンテンツごとDNSブロックしてしまうか、二者択一となります*8。DNSブロック機能のみの広告ブロックアプリ*9ならば非常に悩ましい問題となりますが、AdGuardはDNSブロックと通常の通信ブロックと両方の機能を搭載しているため、2つの機能の使い分けで解決できます。すなわち、まともなコンテンツのない広告等専用サーバーだけをDNSブロック機能でブロックし、その他のサーバーは通常の通信ブロック機能を使ってきめ細かく広告等だけを選別してブロックします*10

ただし、通常の広告通信ブロック機能でアプリ内広告をブロックするのはプレミアム版限定機能なので、無料版では、まともなコンテンツと同じサーバーから配信されているアプリ内広告はブロックできないことになります。

DNSブロックのオン・オフのまとめ

プレミアム版ユーザーは、基本的には誤爆を減らすためにもDNSブロックをオンにして280blocker adblock filterを使用してください。ただし280さんの公認設定通りでやりたいならDNSブロックをオフにしても構いません。*11

無料版ユーザーは、アプリ内広告をブロックするためにDNSブロックをオンにして280blocker adblock domain lists AdGuard_formatやAdGuard DNSフィルタ等のドメインテキスト形式のフィルタを使用してください。稀にマイナーなウェブサイト・アプリで不具合が出ることがあるかも知れませんが、それについては当Wikiへの報告によって、なんJ改修フィルターで修正していくことができます。

プレミアム版ユーザーが280blocker adblock filterを使用すべき理由

例えば、「http://example.com/koukoku/」でアプリ内の広告が配信されている一方で、「http://example.com/yakyuu/」で野球情報が配信されているとしたらどうでしょう。

無料版の場合アプリ内の広告をブロックする場合この広告ブロックを諦めるか誤爆してでもDNSブロックするしかない訳です。
それに対してプレミアム版ならコンテンツブロックで「http://example.com/koukoku/」だけをブロックできるためDNSフィルタに280blocker adblock domain lists AdGuard_formatを入れない方がいいのです。
(280blocker adblock domain lists AdGuard_formatやAdGuard DNSフィルタはそれらのサイトを諦めるか多少の誤爆を覚悟でサイトごとブロックするかしているため)

ただし、だからといってDNSブロックを無効化してしまうと「http://example.net」では広告だけが配信されている場合、DNSブロックでブロックした方が電力消費量が少ないためもったいないです。
そこでDNSフィルタに280blocker adblock filterを使用することで広告しか配信しないドメインはDNSブロックで、それ以外はコンテンツブロックで広告ブロックができるようになり誤爆も電力も抑えることができるのです。
(DNSフィルタに280blocker adblock filterなどのAdblockPlus形式のフィルタを使用した場合「||example.net^」の様な有効な指定のみブロックできて「||example.com^$third-party」や「example.com##.ad_bottom」の様な無効な指定は全て無視されるため)

参考

DNSサーバーの選び方

DNSブロックは、AdGuard導入法で解説しているように、DNS画面からオンを選択するだけで利用することができます。この他、おまけ機能として、DNS画面からDNSサーバーを選択することもできます。

DNSサーバーの選択によって、ウェブサイトへのアクセスを高速化することもできます。また、広告ブロックやセキュリティー対策の機能がついたDNSサーバーもあります。ここでは、代表的なDNSサーバーを簡単に説明します。どのDNSサーバーを使うかは、好みによっても変わってくるので、説明を読んだ上で各自判断してください。

参考サイト:ハルパス氏のブログ
無料で安全なDNSサービスの一覧
DNS over HTTPS(DoH)対応のDNSサービスの一覧

AdGuardがおすすめするDNSプロパイダ

システム・デフォルト

初期状態では、これが選択されています。特に不満がなければこのままの設定で構いません。

システム・デフォルトでは、スマートフォンに設定されているデフォルトのDNSサーバーを使用します。例えば、docomoのスマートフォンを利用している場合には、docomo社のDNSサーバーが使用されます。

システム・デフォルトのDNSサーバーの利点は、日本国内の多くのユーザーが利用しているため、国内の主要なドメイン名を超高速でIPアドレスに変換できるということです*12

また、認証画面での認証などが必要な一部のWi-Fiについては、システムの既定のDNSサーバーでないと使用できないことがあります*13。このようなWi-Fiを常用している場合には、システム・デフォルトを選択しましょう。

AdGuard DNS

AdGuard社が提供しているDNSサーバーです。このDNSサーバーは、DNSのついでに広告等のブロックもできます。つまり、ユーザーのスマートフォンのAdGuardアプリではなく、DNSサーバーの側でDNSブロックをしてくれるということです。これにより、さらなる省電力化が期待できます。

このDNSサーバーを使う場合は、「DNSリクエストによるブロック」のオプションをオフにすることをおすすめします。なぜならば、DNSサーバーの側でDNSブロックをしてくれるので、わざわざユーザーのスマホで重ねてDNSブロックをする必要がないからです。

AdGuard DNSのデメリットとしては、DNSサーバーの側でブロックが行われるので、なんJ改修フィルターによる不具合修正ができないことが挙げられます。
ホームページ:https://adguard.com/ja/adguard-dns/overview.html

AdGuard DNS ファミリープロテクション

AdGuard DNSの広告等ブロック機能に加えて、アダルトサイトのブロック機能が追加されています。

AdGuard DNSと同様に「DNSリクエストによるブロック」のオプションをオフにすることをおすすめします。また、なんJ改修フィルターによる不具合修正ができないデメリットも同様です。

アダルトサイトが嫌いな人や子どものスマホなどに利用するといいでしょう。

AdGuard DNS(フィルタリングなし)

セキュアで安定した接続を提供しますが、フィルタリングは行いません。

Google DNS

検索エンジン世界最大手のGoogle社が提供しているDNSサーバーです。このDNSサーバーの利点は、世界中のマイナーなウェブサイトも含めて、あらゆるドメイン名を高速でIPアドレスに変換できるということです*14。マイナーなサイトによくアクセスする人は、Google Public DNSを検討しましょう。
ホームページ:https://developers.google.com/speed/public-dns/

Cloudflare DNS

CloudflareがAPNICと提携して維持、運営を行っている無料のDNSサービスです。

2018年4月1日にリリースされた比較的新しいDNSで、プライバシーを優先した消費者向けのDNSサービスとしては、インターネット上最速であることを売りにしています。
1.1.1.1公式サイトの速度比較グラフでは、殆どの場合Google Public DNSを上回る結果を出しています。

このサービスはDNSキャッシュサーバーとして機能します。
DNS-over-HTTPSとDNS-over-TLSに対応しています。

(1)ホームページ

(2) DNSアドレス

  • IPv4
    優先サーバー:1.1.1.1
    代替サーバー:1.0.0.1
  • IPv6
    優先サーバー:2606:4700:4700::1111
    代替サーバー:2606:4700:4700::1001

(3)家庭用無線LANルーター(Google Wi-Fi等)に1.1.1.1を導入する

  • 長所
    環境依存ですが、応答速度やセキュリティの向上が見込めます。
  • 短所
    製造メーカーによって設定手順に、かなりの差があります。
    ルーターで不具合が起きた場合、その影響は接続されている全ての端末に及びます(Webに全く接続できなくなる等)。
    ルーターを初期化して再起動させる方法を、必ず確認した上で設定を行って下さい。

CloudflareセキュアDNS

Cloudflare DNSにフィッシングサイト等の危険なドメインをブロックする機能が追加されています。

CloudflareファミリーDNS

CloudflareセキュアDNSにアダルトサイトのブロック機能が追加されています。

AdGuard DNS ファミリープロテクションやと同様にアダルトサイトが嫌いな人や子どものスマホなどに利用するといいでしょう。

Cisco OpenDNS

ネットワーク機器世界最大手のCisco社が提供しているDNSサーバーです。ウイルスなどの危険サイトのドメイン名はIPアドレスに変換しないようにしているため、DNSのついでに危険サイトのブロックもできます。AdGuardも危険サイトの一部をブロックしてくれますが、Cisco OpenDNSはより充実したセキュリティが実現できるようです。また、ドメイン名のタイプミスなどを自動修正してくれる機能もあるようです。

Cisco OpenDNS ファミリーシールド搭載

Cisco OpenDNSにアダルトサイトのブロック機能が追加されています。

AdGuard DNS ファミリープロテクションやCloudflareファミリーDNSと同様にアダルトサイトが嫌いな人や子どものスマホなどに利用するといいでしょう。

Quad9

マルウェアからの保護付きのプライバシーに考慮されたDNSサービスです。

ホームページ:https://quad9.net/

その他のDNSプロパイダ

Alternate DNS

広告ブロック機能を持つDNSサーバーです。
AdGuardとは別のデータベースを使用しているため、AdGuardのDNSフィルターに起因する不具合を回避できる場合がありますが、このDNSサーバーに起因する不具合が発生する可能性もあります。

ホームページ:https://alternate-dns.com/

280blocker DNS

このDNSプロパイダは利用者の減少に伴い停止されました。詳しくは280さんの利用者のほとんどいない古いDNSサーバーの停止をご参照ください。

IIJ Public DNS

IIJが試験的に提供しているDNSサーバーです。
IIJ、IIJmioのユーザーでなくても利用できます。

ICSAが定める基準に則り、児童ポルノ対策のためのDNSブロッキングが実施されます。
アクセスに関わる(DNSリクエスト及びレスポンス)データ保存が行われます。

ホームページ:https://public.dns.iij.jp

DNSサーバー選択のまとめ

DNSサーバーごとに様々な特徴があります。自分に合ったものを選びましょう。よく分からなければデフォルトで構いません。


不具合等発生時には、「コメント欄」ではなく「不具合・広告相談所」に書き込んでください。
また、消えない広告については消えない広告の報告ご参照ください。

最新の4件を表示しています。 コメントページを参照

  • Adguardは消費電力半端ないのでアンインストールして、プライベートDNSにAdGuard DNS Family Protectionを選択。キモいアダルト広告も消えてやったー!って思ったら、S!メールの受信に失敗する。回避策ありませんかね?(泣 -- 2020-01-27 (月) 09:18:26
    • DNSでブロックされている場合、DNSが対応しないと無理です。別のDNSへ変更を。 -- 2020-01-28 (火) 22:18:45
  • ここでAdGuard各種サービスの稼働状況が確認できるみたいです https://status.adguard.com/ -- 2020-03-18 (水) 19:47:33
    • 不具合でDNSが止まってたみたいだし、不具合報告かよくある質問にリンク先を載せてもいいかもしれないですね -- 2020-05-30 (土) 10:36:45
  • 興味深い記事がありました DNS Zombies - Companies recording DNS queries and replaying them later https://www.reddit.com/r/dnscrypt/comments/h0h657/dns_zombies_companies_recording_dns_queries_and/ -- 2020-06-15 (月) 19:32:44
  • iOS14でAdGuard DNSをより簡単に利用できるようになりました(無料). 同様のサービスをNexDNSも提供しています. https://adguard.com/ja/blog/encrypted-dns-ios-14.html -- 2021-05-18 (火) 22:22:44
URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

*1 httpsやgoogle.co.jpなどもありますが、DNSの説明とは無関係なので省略しています。
*2 なお、稀にドメイン名が存在しないウェブサイトもあります。また、IPアドレスは必ず存在しますが、IPアドレスではアクセスできないようにしているウェブサイトもあります。
*3 英数字だけでなく日本語の文字などが使えるドメイン名もあります。
*4 なお、DNSCloakやDNS66など、DNSブロック機能だけを持つ広告ブロックアプリも存在します。
*5 正確にはこれを「NXDOMAIN」と言います。なお、以前のバージョンのAdGuardでは、「example.comは127.0.0.1ですよ」と嘘の回答をする仕様でした。127.0.0.1は自分自身を表す特別なIPアドレスで、当然このIPアドレスでは広告をダウンロードすることはできません。
*6 実際にこのように再アクセスを繰り返すアプリはたくさんあります。
*7 これをネガティブキャッシュと言います。保存される時間は、環境によって異なります。
*8 このようなサーバーの代表的な例として、graph.facebook.comがあります。このサーバーをDNSブロックすると、多くのアプリ内広告が消せる一方で、一部のFacebook連携アプリが機能しなくなります。ブロックすべきかどうかは、各自の使用アプリなどによって変わってくることになります。graph.facebook.comのブロックについては、AdGuard導入法(応用編)の無料版ユーザー向け厳罰化ルールをご覧ください。
*9 DNSCloakやDNS66などがあります。
*10 また、本文中では同じサーバーでまともなコンテンツも配信している場合を取り上げましたが、例えば、広告しか配信していないサーバーであってもその広告をブロックすると一部のウェブサイトで不具合が発生するというような場合も、通常の通信ブロック機能で対応していくことになります。
*11 DNSブロックをオフにしても誤爆を防ぐことはできますがブロックに漏れが生じる場合があります
*12 サーバーキャッシュと言って、DNSサーバーに他のユーザーたちの変換履歴が残っているためです。
*13 認証用サーバーへのアクセスにも当然DNSを利用しますが、認証前にアクセスできるDNSサーバーがデフォルトのDNSに限定されている場合にこの問題が発生します。なお、他のDNSサーバーでも問題なく使用できるWi-Fiもあります。
*14 サーバーキャッシュが極めて充実しているためです。