DNS で簡易ペアレンタルコントロール

我が家でも子供がラップトップを使ってオンラインで授業を受けるようになり、それを機に DNS を使った簡易ペアレンタルコントロールを設定してみました。

OS に内蔵のペアレンタルコントロールや、ルーターにつないで使うデバイス等昨今色々なオプションがありますが、多分もっとも簡単に設定できるのが DNS を利用した簡易的なペアレンタルコントロール(というかコンテンツフィルタリング)かと思います。

DNS とは

インターネットでホームページ見たり等、どこかのサイトにアクセスするには、必ず IP アドレスという住所・番地のようなものを入力する必要があります。これは 192.0.2.254 というような数字の羅列で、覚えにくく直観的ではありません。その数字の羅列と、もっと覚えやすいドメイン名、例えば www.symbolics.com を紐づけるシステムが DNS です。

みなさんホームページを見るのに IP アドレスなんか使ってませんよね?ドメイン名だけでホームページが見られるのは実は DNS がドメイン名を IP アドレスに変換してくれているおかげなんです。

DNS は簡単に言うとインターネット上にある分散データベースシステムで、ある端末からドメイン名の問い合わせが入ると、その IP アドレスを答えたりします。この問い合わせに答えてくれる端末を DNS サーバーと言い、インターネットを使っている人はほぼ 100% DNS サーバーのお世話になっているはずです。

DNS サーバーは、パソコンやスマホがインターネットにつながると、大抵自動的に割り当てられます。そして、パソコンやスマホで DNS サーバが設定されていないと、インターネットが使えないと言っても過言ではありません。アクセスしたいホームページの IP アドレスを全て覚えていれば別ですが・・。

DNS を利用した簡易ペアレンタルコントロール

さて、その DNS の「ホームページが見たい場合に必ず利用しなければならない」しくみを利用したのが、 DNS でのペアレンタルコントロールです。通常プロバイダや携帯電話会社から自動的に割り当てられる DNS サーバーは、基本的にはどんな問い合わせにも答えるのが義務です。しかしペアレンタルコントロール機能のついた DNS サーバーは、不適切なコンテンツのあるホームページや、ウイルスのあるホームページに関する問い合わせは遮断し、その結果それらのページがアクセスできなくなります。

DNS を利用したペアレンタルコントロールのいいところは、特別なハードウェア等が不要で、とにかくインターネットを使うほぼすべての端末で利用できることです。また一度設定してしまえば、あとは自動的にずっと不適切なサイトを遮断してくれます。

いろいろな DNS

さてそのコンテンツの遮断できる DNS ですが、いくつか種類があります。

プリセット型 かんたん
予めウイルスのあるサイトやアダルトコンテンツ等、遮断するものが決まっているタイプです。ただ DNS サーバーをこれに切り替えるだけで最も簡単に使えますが、遮断するサイトを変更したり等カスタマイズはできません。大抵無料で、すぐ使えます。

簡易カスタマイズ型 ふつう
ウイルスのあるサイト、アダルト・薬物コンテンツ等遮断するサイトのカテゴリーを選べるタイプです。一度カテゴリーを設定してしまえば、使い勝手はプリセット型とそうそう変わりません。無料が多いですが、有料のものもあります。

フルカスタマイズ型 むずかしい
遮断したいジャンルやブラックリスト、LAN 内の各端末別のポリシー、そして DNS サーバーへの問い合わせの暗号化の方法などを細かく設定できるタイプです。大抵有料です。

これらの DNS サーバーはどうやって使うかというと、基本的には

  • パソコンやスマホに個別に好きな DNS サーバー設定する
  • 家庭のルーターで設定して、家庭内のパソコンやスマホ全部で同じ DNS サーバーを使う

ことになります。

DNS サーバーの変更の仕方

ちなみにパソコンやスマホでの DNS サーバーは簡単に変更できます。例えば速度が早いことで有名な CloudFlare の DNS サーバー「1.1.1.1」と「1.0.0.1」を使う設定は下記の通りです。

DNSサーバを「1.1.1.1」に変更するだけでネットの速度が最強にアップする

また、家庭の LAN 内のすべての端末の設定を変えるには、ルーターが各端末に DHCP 経由で配布する DNS の設定を変えてやればオーケーです。例えば TP-Link のルーターが各端末に配布する DNS サーバーを Google の高速 DNS サーバー「8.8.8.8」「8.8.4.4」に変更するやり方は下記の通りです。

DNSサーバーの変更方法 (タブ型の管理画面を持つ機種)

プレイステーションはダウンロードが異常に遅い時があることで有名ですが、上記のような高速な DNS サーバーに変更することで、ダウンロードのスピードが上がることがよく知られています。

【Playstation4】PS4のインターネットの回線スピードを高速化する方法 – DNS設定を手動変更

それではペアレンタルコントロール的な機能のある DNS サービスを、タイプ別でいくつか紹介してみます。

プリセット型

プリセット型の DNS サービスは、何もカスタマイズできないので、使いたい端末やルーターで設定してしまえばそれで終わりです。予め設定された、ウイルス等のマルウェアが含まれるサイトや、アダルトコンテンツのあるサイトが遮断されます。 DNS を利用した簡易ペアレンタルコントロールとしては、もっとも簡単です。

CloudFlare Families
1.1.1.2 / 1.0.0.2 マルウェア遮断
1.1.1.3 / 1.0.0.3 マルウェア・アダルト遮断

CloudFlare は CDN 等ネットワーク高速化で有名な会社で、高速な DNS サーバーの 1.1.1.1 / 1.0.0.1 も定評があります。この高速 DNS サーバーにマルウェアやアダルトコンテンツ遮断機能が加わったのが CloudFlare Families です。パソコンやスマホ、ルーターで設定すれば、勝手に遮断してくれます。無料で使えます。


OpenDNS Family Shield
208.67.222.123 / 208.67.220.123 マルウェア・アダルト遮断

Cisco 傘下になった、パブリック DNS の老舗 OpenDNS にも、マルウェア・アダルトコンテントを遮断してくれる DNS サーバーがあります。こちらも無料です。

簡易カスタマイズ型

遮断したいカテゴリーが設定できるタイプの DNS サービスを簡易カスタマイズ型としました。ユーザー登録をして、カテゴリーを設定し、自宅のグローバル IP アドレスを登録すれば使えます。自宅のグローバル IP アドレスが固定でない場合は、 DDNS 等を利用してアップデートできます。

CloudFlare Gateway
172.64.36.1 / 172.64.36.2 29 カテゴリー+強制セーフサーチ

CloudFlare のカスタマイズができる DNS フィルタリングサービスです。ユーザー登録をすれば今のことろ無料で使えます。遮断できるジャンルはアダルト、ドラッグ、ヘイト等29カテゴリーです。また、 Google や Bing 、 YouTube 等で強制的にセーフサーチを有効にする機能もあります。


OpenDNS Home
208.67.222.222 / 208.67.220.220 58 カテゴリー

OpenDNS にもカスタマイズできるサービスがあります。こちらもユーザー登録をすれば無料で使えます。カテゴリーがわりと豊富ですが CloudFlare ほどプライバシーを重視していないのと、管理画面が壊滅的にダサいのがネックです。また強制セーフサーチ機能はありません。

フルカスタマイズ型

さて、上記のプリセット型や簡易カスタマイズ型のサービスは、下記のような難点があります。

  • LAN 内の端末毎に細かく設定を変えられない
  • 強制セーフサーチがすべての端末に適用されてしまう
  • 遮断したいジャンルを追加できない
  • 広告ブロック等がない

これらの難点を解決できる、かゆいところに手が届く DNS サービスが NextDNS です。このサービスは CloudFlare Families + Pi-hole + more といった感じで、機能盛り沢山のモダンな DNS サービスです。最近ベータ版を終了し、毎月 30 万クエリーまでは無料、それ以上は月額 $2 です。

ともかく多機能です。各種ルーター向けの DNS-over-HTTPS クライアントがあり、これを使うと LAN 内の各端末にそれぞれ違うポリシーを設定するという画期的な機能を実現できます。またついでにルーターから DNS サーバーまでの通信が暗号化されます。

Raspberry Pi から生まれた人気広告ブロッカー Pi-hole のような広告ブロック機能もあります。ネットから各種ブラックリストをダウンロードし、様々なカテゴリーのサイトを遮断できます。また、 Pi-hole と違って、ハードウェアも不要です。

なぜ LAN 内の端末すべてにセーフサーチが強制適用されてしまうのが難点なのかは聞かないでください。

注意点

この DNS を利用した簡易的なペアレンタルコントロールは、いくつか注意点があります。

遮断されるサイトは、各サービスの持っているブラックリスト次第です。なので、最新のサイトが遮断されなかったり、特定の言語のサイトが遮断されなかったり、ということがあります。ただカスタマイズできるサービスであれば、個別に遮断するサイトを追加することは可能です。

また、アクセスしたいサイトの IP アドレスを覚えてしまっていて、それを手入力すればアクセスすることは可能です。これはそのサイトへのアクセスそのものを遮断しているわけではなく、 DNS への問い合わせを遮断していることによる限界と言えます。

EdgeRouter で DNS サーバーを設定する

EdgeRouter には内蔵の DNS キャッシュサーバーとして DNSmasq が使われています。セットアップウィザードの設定では、 DHCP もしくは PPPoE で上流の DNS サーバーを自動的に取得し、それを参照します。これを自分好みの DNS サーバー、例えば 1.1.1.2 / 1.0.0.2 に変更する場合はこのようにします。

configure

#参照する DNS サーバーを指定
set service dns forwarding name-server 1.1.1.2
set service dns forwarding name-server 1.0.0.2

#resolv.conf ファイルを参照しない
set service dns forwarding options no-resolv

commit
save

EdgeRouter で NextDNS クライアントを設定する

それでは EdgeRouterNextDNS のクライアントを使う設定例を載せてみます。 NextDNS クラインアントを使うと、 DNS over HTTPS や LAN 内の端末ごとに NextDNS のプロファイルを変えたりできます。

デフォルトではインストーラーが EdgeRouter 内蔵の Dnsmasq を停止させ、 NextDNS を DNS サーバーとして直接使うように設定してしまいますが、それを Dnsmasq を生かして NextDNS を上流 DNS サーバーとして使うよう設定してみます。

1. EdgeRouter に NextDNS クライアントをインストール

SSH で EdgeRouter にログイン
sh -c 'sh -c "$(curl -sL https://nextdns.io/install)"'
# インストール中に下記を選択
i (install)
input NextDNS conifg ID
Report device name > N
Enable hardened privacy mode > N
Automatically configure host DNS on daemon startup > N

2. NextDNS の設定を Dnsmasq と一緒に使えるよう変更

sudo /config/nextdns/nextdns config set -listen 127.0.0.1:50053
sudo /config/nextdns/nextdns config set -setup-router=false

3. Dnsmasq が上流 DNS サーバーとして NextDNS クライアントを使うよう変更

configure
delete service dns forwarding name-server XXX.XXX.XXX.111
delete service dns forwarding name-server XXX.XXX.XXX.222
set service dns forwarding options server=127.0.0.1#50053
set service dns forwarding options strict-order
set service dns forwarding options bogus-priv
set service dns forwarding options domain-needed
set service dns forwarding options add-mac
set service dns forwarding options add-subnet=32,128
commit
save
# この後必ずルーターを再起動

これで、 EdgeRouter 内蔵の Dnsmasq はそのまま使い、かつ NextDNS クライアントが Dnsmasq と NextDNS DNS サーバーの中継ぎをするようになります。 Dnsmasq で FQDN ベースのルーティングを使っていて、 Dnsmasq を使い続けたい場合はこうするのがよいと思います。

4. コンフィグファイル例
私の場合の各種設定ファイルは、こんな感じです。

/etc/nextdns.conf

listen 127.0.0.1:50053
report-client-info false
use-hosts true
auto-activate false
cache-size 10MB
cache-max-age 0s
max-ttl 0s
detect-captive-portals false
bogus-priv true
config XXXXXX
hardened-privacy false
log-queries false
timeout 5s
setup-router false

/etc/dnsmasq.conf

log-facility=/var/log/dnsmasq.log
except-interface=eth0
cache-size=0
server=127.0.0.1#50053
strict-order
bogus-priv
domain-needed
add-mac
add-subnet=32,128
ipset=/www.xxxxx.com/xxxxx-ipset ...

最後の行にあるのは、 FQDN ベースのルーティングに使う ipset の設定例です。

何かの参考になれば幸いです。


yabe.jp » Thoughts » DNS で簡易ペアレンタルコントロール