NextDNSというサービスは子持ち家庭のインターネットを安心安全にする

tl:dr;

  • 子供にも安全にインターネットさせたいが、なるべく親がコントロールしたい
  • いままで /etc/hosts を工夫して狭い範囲でブラックリスト管理していたが運用が辛かった
  • NextDNS.io というサービスがやりたいことを全部実現していたので課金した

我が家には小学生と幼稚園の男児がいて、どちらもラップトップを持ってネットサーフィンをする。分からないことは自分で調べさせたりScratchでプログラミングさせたりして遊ばせれば、これが結構な時間潰しになる。わたしの古いMacBook Airを使わせたりしていたが、予算に余裕が出たタイミングで上の子にはMacBook Proを買い与えた。いちどそのMacにMinecraftをインストールしてやったらすぐに廃人になったので、さすがにそれはアンインストールして禁止した。おおよそ自由にネットサーフィンはさせているのだが、インターネット上での出会いは禁止したい。小学生や幼稚園児には早すぎるし、そもそもインターネット上のSNSなんてロクなもんじゃない。

基本的なリテラシー教育は「学校では教えてくれないこと」シリーズの 学校では教えてくれない大切なこと(12)ネットのルール | 旺文社 をいくらか読ませたら大体は理解するようだ。

学校では教えてくれない大切なこと 12 ネットのルール

学校では教えてくれない大切なこと 12 ネットのルール

  • 発売日: 2016/07/15
  • メディア: 単行本(ソフトカバー)

とはいえ放っておくとやっぱりYouTubeであれやこれやのサイトを見に行ってしまうので、ある程度コントロールしたいという要求がある。で、どうやっているかというと

1. OSの管理者権限は与えない、必要なアプリは親がインストールする
2. アクセスさせたくないドメインは /etc/hosts でloopbackを向くようにする
3. ChromeにはFamily linkで作ったアカウントでログインさせる
4. CloudFlareの 1.1.1.1 for Families を使って(親にとって)未知の怪しいドメインもブロック

という方針で管理していた。これには技術的にいくつかの問題があって、アクセスさせたくないドメインをいちいち /etc/hosts に前部下記並べないといけないのが面倒だった。ワイルドカードであるドメイン以下は全部禁止( e.g. *.youtube.com のような指定)はできない。

- name: Set up /etc/hosts, blacklist
  become: true
  lineinfile:
    path: /etc/hosts
    state: present
    line: "::1	{{ item }}"
    regexp: "::1	{{ item }}"
  loop:
    - twitter.com
    - mobile.twitter.com
    - youtube.com
    - www.youtube.com
    - ...

こういう感じのPlaybookを書いていつも実行するという、面倒なことをやっていた。

ChromeにFamily link 済のアカウントでログインすると言ってもSafariを使えばそういった問題は全部回避できるし、適当なブラウザをインターネットからダウンロードしてユーザーランドにインストールしてしまえば何だってできる。しかも子供がほしいといったアプリをいろいろインストールするのはとても面倒であった。mac OS のペアレンタルコントロールである程度アクセスを制御できるといっても、しかもこのペアレンタルコントロール、OSをアップデートすると設定が全部飛んだことがあった(Screen timeに切り替わったタイミングだったように思う)。泣きたかったが、儲なので涙をこらえた。

困っていたところに id:ymotongpoo に教えてもらったのが NextDNS だ。

nextdns.io

いわゆるフルスペックのDNSサービスで、Googleの8.8.8.8やCloudFlareの1.1.1.1のような存在に近い。しかし大きく異なるのは、サービス側でユーザーを認識して異なる設定に基づいたクエリ返答をすることができる点だ。

ほしかった機能

1. MalwareやPornなどぁゃしぃインターネットをドメインでブロックする
2. どういうドメインがブロックされたのか知りたい
3. ブロックされるドメインのリストをいい感じに賢くメンテナンスしたい(してほしい)
4. うちにある多様なOSのサポート: MacOS, Android, iOS, Linux
5. 大人と子供で異なる設定にしたい(端末毎に設定を変えることができる)

いままでAnsibleのPlaybookを書いて流すことで、上記のうちいくつかは実現できていたが、まあ面倒だ。SSHで入れるように設定しないといけなかったのもそうだ。

感動したところ

メジャーなOSをカバーしている

おうちの野良ハックで済ませるのが難しい iOSとAndroidに対応していて、アプリのインストールが簡単にできた。Mac, Linuxがどちらも使えるし、ソースアドレスを設定すればルーターにも適用することができる。家のトラフィックのほとんどのケースをこれでカバーできる(家庭内ユーザーが自分で他のDNSを使うとかはさすがにできない)。

さらに、OSだけじゃなくFirefoxやChromeなど、メジャーなブラウザにも設定することができる。

SNSをリストから選んでブロック

子供にはFamily linkでGMailのアドレスを与えているので、その気になればFacebookやTwitterで親の知らないアカウントが作れてしまう。しかも新しい趣向のSNSは次から次へと生えてくるので、それを簡単にブロックできるようにしたかった。その理想的な実装がNextDNSにはあった。設定画面にメジャーなSNSがリストされていて、それをポチポチを選ぶだけでブロックできる。

f:id:kuenishi:20200606111527p:plain
適当に選んでブロックしたSNSのリスト。トグルスイッチもついていて、一時的にサイトを選んでブロックを解除することもできる。

DNSクエリの統計情報

GAFAM率とかが出せる。端末ごとに統計を見ることができる。

f:id:kuenishi:20200606111339p:plain
統計情報の一部

f:id:kuenishi:20200606111237p:plain
GAFA Dominance

いろいろなフィルタを選べる

インターネットにはさまざまなドメインリストが落ちているので、それをポチポチと選んで使うことができる。しかしながら、個々人の要件を完璧に満たす禁止リストなんてものは落ちていないので、どうしたってブロックされては困るドメインもある。例えばうちだと子供がなぜかUnityを使うので、 "id.unity.com" にアクセスできないと困る。「このサイトは見れません」とブラウザに拒否されたら、DNSクエリのログ(しかもブロックされたものだけ)を見て、ドメインを禁止してるフィルタを選んで外すことができる。こうやってDNSのポリシーを要件に合わせてデバッグしていくことができるのは嬉しい。


個人用でも使える価格設定

無料枠は30万クエリまでで、それを超えると普通のDNSとして振る舞うようになるらしい。無料枠以上でも普通に使うためには 1.9USD/mo, or 19.90USD/y で、日本円だと250JPY/moという価格になる。年間2500円で適切にコントロールした家族の安全なインターネットが手に入るので安いと思って課金した。

ちょっとした不満点

  • ログインにMFAを設定できない
  • Macでの設定アプリはユーザーごとにやらないといけなくて、ユーザーが自分でEnable/Disbleを切り替えられてしまう
  • 野良のブロックリストをいくつか設定できるが、使いたいアプリが失敗したときに「ネットワークにつながりません」みたいなエラーしかでないので、いちいち管理画面でドメインがブロックされたログを探して原因になっているリスト設定を見つけないといけなくて面倒
  • ブロック可能なSNSにWhatsApp, Skype, ZoomがあるのにLINEがない

雑感

さて一週間使ってみたところ特に不満なく、これで家庭が平和でマルウェアもトラッキング広告も踏まないし、ニュースサイトをみていたら広告があったスペースに何も映らなくなる。広告はインターネットにとって重要な資金源だが、Webサイト利用者の有限のアテンションをとって思考をどうしても妨げるものだ。それがないと本当に快適になる。画像は asahi.com の見え方だ。→ 🔗

f:id:kuenishi:20200606110345p:plain
広告の映らない新聞社サイト( (C)asashi.com )

どこもそうだと思うのだが、ISPが提供するDNSはチラホラ遅かったり落ちていることがあって、そういうときにGoogle Public DNSとかCloudFlareのDNSを使うようにしていた。しかしまあDNSくらいISPにあるものが近くて速いだろうということで使っていたのだが、さすがにこれだけ付加価値のあるサービスがでてきたらもうISPのものを使っていられない。実際NextDNSはIP Anycastを使って世界中のASと接続しているので世界中どこでも似たような性能が出ると思う。NextDNSのCo-founderは凄腕のハッカーでNetflixの偉い人だったりするので、ビジネス面(サービスの継続性)でも割と大丈夫なんじゃないかって信用できると思う。