Android 9 Pie標準機能で悪意のあるドメイン・広告ブロック

悪意のサイト
©いらすとや.

「がとらぼ」では以前にDNS66というAndroid用のVPN型の悪意のあるドメイン・広告ブロックアプリを紹介したことがあるが、このDNS66はAndroid 9 Pieでは正しく機能しないことがあるみたい。それと、DNS66をインストールするのが面倒なのよね。勝手アプリをインストールすることに抵抗がある人もいるだろうし。
DNS66以外にもDNSの名前解決で広告をブロックする系のアプリも同様。

で、何かしらのアプリ頼りではなく、アプリ無しで何とかできないものかしらと思ったらAndroid 9 Pieは簡単にできるみたい。

そのAndroid 9 Pieだが、プライベートDNS機能が搭載されている(ハズ)。これは嬉しいことにDNS over TLS対応なやつ。 DNS over TLS対応なDNSサーバとしては大手ではGoogle Public DNS、CloudflareやQuad9などがある。

Google Public DNS

  • IPv4: 8.8.8.8, 8.8.4.4
  • IPv6: 2001:4860:4860::8888, 2001:4860:4860::8844
  • DoT: dns.google
  • DoH: https://dns.google/resolve? (JSON API)
  • DoH: https://dns.google/dns-query (RFC 8484)

2019年6月28日にDoHが正式サービスに昇格し、dns.google.comからdns.googleに正式に変更になっています。上は修正済み。

Cloudflare

  • IPv4: 1.1.1.1, 1.0.0.1
  • IPv6: 2606:4700:4700::1111, 2606:4700:4700::1001
  • DoT: 1dot1dot1dot1.cloudflare-dns.com または one.one.one.one
  • DoH: https://cloudflare-dns.com/dns-query

Quad9

  • IPv4(悪意ブロック有り): 9.9.9.9, 149.112.112.10
  • IPv6(悪意ブロック有り): 2620:fe::fe, 2620:fe::9
  • DoT(悪意ブロック有り): dns.quad9.net
  • DoH(悪意ブロック有り): https://dns.quad9.net/dns-query

  • IPv4(ブロック無し): 9.9.9.10, 149.112.112.10
  • IPv6(ブロック無し): 2620:fe::10, 2620:fe::fe:10
  • DoT(ブロック無し): 不明
  • DoH(ブロック無し): https://dns10.quad9.net/dns-query

ADGUARD

  • IPv4(悪意/広告ブロック有り): 176.103.130.130, 176.103.130.131 (2022年6月30日迄)
  • IPv6(悪意/広告ブロック有り): 2a00:5a60::ad1:0ff, 2a00:5a60::ad2:0ff (2022年6月30日迄)
  • IPv4(悪意/広告ブロック有り): 94.140.14.14, 94.140.15.15 (新)
  • IPv6(悪意/広告ブロック有り): 2a10:50c0::ad1:ff, 2a10:50c0::ad2:ff (新)
  • DoT(悪意/広告ブロック有り): dns.adguard.com
  • DoH(悪意/広告ブロック有り): https://dns.adguard.com/dns-query

  • IPv4(家族用ブロック有り): 176.103.130.132, 176.103.130.134 (2022年6月30日迄)
  • IPv6(家族用ブロック有り): 2a00:5a60::bad1:0ff, 2a00:5a60::bad2:0ff (2022年6月30日迄)
  • IPv4(家族用ブロック有り): 94.140.14.15, 94.140.15.16 (新)
  • IPv6(家族用ブロック有り): 2a10:50c0::bad1:ff, 2a10:50c0::bad2:ff (新)
  • DoT(家族用ブロック有り): dns-family.adguard.com
  • DoH(家族用ブロック有り): https://dns-family.adguard.com/dns-query

ここでいう「ブロック有り」はブラックリストによる悪意/広告/アダルトのドメインの名前解決をブロッキングすること。パーソナルユースでは利用推奨。そういうのが気に入らなければ「ブロック無し」を使う。ブロックの有無が書かれていないのは「ブロック無し」。
DoTはDNS over TLS用のアドレス。
DoHはDNS over HTTPs用のアドレス。
家族用ブロックは悪意+広告+アダルトをブロック。

この記事的にはQuad9の悪意ブロック(悪性ドメインブロック)有り、または、ADGUARDの悪意/広告(+アダルトサイトの家族向け)ブロックがオススメ。
今回はADGUARDの悪意/広告ブロック有りを利用するとする。

設定方法

Android 9 Pie標準機能で悪意のあるドメイン・広告ブロック 1
Android 9 Pieの設定メニュー画面を開く。
「ネットワークとインターネット」を開く。(機種によっては若干項目名が違うことがある?)

Android 9 Pie標準機能で悪意のあるドメイン・広告ブロック 2
「プライベートDNS」を開く。(機種によっては若干項目名が違うことがある?)

Android 9 Pie標準機能で悪意のあるドメイン・広告ブロック 3
初期値は「自動」の筈なので「プライベートDNSプロバイダのホスト名」を選択する。
アドレスを入力する。今回はdns.adguard.comを入力したが、上のリストの緑字のアドレス(ホスト名)を入力
通常のDNSの設定のようにIPアドレスを入力するわけではない。
「保存」を押す。(設定おしまい)

Android 9 Pie標準機能で悪意のあるドメイン・広告ブロック 4
入力したアドレス(ホスト名)が表示されていることだけ確認しておく。

Android 9 Pie標準機能で悪意のあるドメイン・広告ブロック 5
今回は広告ブロックを含むADGUARDのDNSを使ったので広告がブロックされるハズ。
ブラウザで広告が表示されるウェブサイトなどを閲覧してみる。広告が表示されていなければ正しく機能している。なお、DNSによるブロッキングなので広告が表示されるべきエリアが見苦しい(上の画像の中央部分のようになる)が、これは諦めて欲しい。

Androidの9 Pieよりも低いバージョンの場合は 「プライベートDNS」の項目が存在しないので、ネットワークの設定で普通にDNSの設定で上のリストのIPアドレスを登録すれば良い。Wi-Fi用とLTE/3Gのアクセスポイントの設定にそれぞれDNSの項目があるので両方の設定を変えるということになる筈。DHCPの場合は静的設定に変えてゴニャゴニャしないといけないなど面倒な場合あり。だからこそ、Androidの9 Pieで「プライベートDNS」が標準機能になったのがありがたい。

プライベートDNSで広告・悪意のあるドメインを弾くDNSを登録したのに何か表示されるなぁという場合は、Chromeブラウザではフラグで「Async DNS resolver」を[Disabled]にすると良いみたい。
プライベードDNSを設定すると正常に利用できないサービスがあるかもしれません。そのサービスを使うときだけプライベートDNSをオフにして下さい。とりあえず、何かヘンだなと思ったらプライベートDNSをオフというのを憶えておくと良いでしょう。

上で紹介した dns.adguard.com は2020年後半に複数回サービスが停まる事象が発生しています。DNSで名前解決できなくなると「インターネットが使えなくなったぁ」状態になるので焦るかもしれませんが、これも同じくネットが使えない→モバイル・Wi-Fi接続を確認→プライベートDNSをオフという一連の流れを実行するようにすれば良いかと思います。

関連記事:

コメント: Android 9 Pie標準機能で悪意のあるドメイン・広告ブロック

  1. ありがとうございます。
    今回はAndroidの標準機能でやるという限定条件にしたのでアプリについては省かせてもらいました。

  2. 情報ありがとうございます。
    https://280blocker.net/blog/20190520/2056/
    の記事によると「負荷が重くなるようなら公開停止しますので、詳しい人だけがこっそり使っていただければと思います。」と書かれているので使いたい人は使っても良いけど大々的に提供されているサービスではないように思います。なので記事の方には追加せず、こちらの情報としてのコメントは残させていただきます。

  3. こんにちは。
    記事後半の実際に広告をブロックした画像にて、広告のエリアが残って見苦しいとありますが、これはどうやらキャッシュが残っているのが原因らしくて、試しにシークレットモードで開いてみたらある程度枠が消えて綺麗になりました。
    キャッシュが残っていると広告が表示されるべきエリアにまた広告を読み込もうとして変な枠が出てしまうみたいなので、DNSを設定したら一度キャッシュを消すとよさそうです。

  4. 情報ありがとうございます。
    Javascriptがキャッシュされている場合に見苦しい、そうでなければ見苦しいものの原因がそもそも読み込まれないということですね。
    ウェブサイトの管理者が用意した広告枠が広さ指定で用意されている場合は空き地ができてしまうのは変わらないでしょうけど。綺麗な空き地なら我慢できるかしら。

  5. 今日は!大変参考になります。dns66を利用するとchrome内の広告は消えるのですが、googleアプリ内のpopup広告はなかなか消えません。良い方法があったらお教えください。
    Adguardなら解決しますがどうも通信量が増えるみたいで、dns66を使いたく考えています。
    280blockerを変換してdns66で試行しましたがすり抜けるようです。変換の仕方が悪いのかもしれません。
    Blokadaにした方が良いのかもしれませんね。

  6. DNS66は、Android 8の時代までは良かったのですが、その後どうもトラブルが多いようです。
    個人的にはプライベートDNSと信頼できるDNSの組み合わせが良いかなと思います。記事に挙げたdns.adguard.comはこの1年ほどちょこちょこトラブってるようなので他が良いかもしれません。
    広告ブロック専用アプリは使わないのでよくわかりません。

  7. ご回答ありがとうございました。実は、私のxperia、Galaxyは古くまだAndroid 5&6です。DNS66では、Chrome内広告は消えますが、Googleアプリ内広告はいろいろ試してみましたが消えませんでした。本日、試しにpersonalDNSfilter Android(DNSFilter.apk)をinstallしたら起動するだけで、アプリ内広告もBrowser内広告も消えました。一寸不思議な感じです。しばらく、安定性や安全性など見てみます。

コメントは締め切られています。