
子ども用Wi-Fiは、止める前に分ける|Family DNSと時間ルールの始め方【OpenWrt集中連載009】
子ども用のスマートフォン、タブレット、学校用PC、ゲーム機。すべて家族用Wi-Fiへつなげば、ひとまず使えます。
あとから困るのが、「子ども用端末だけ成人向けサイトへアクセスしにくくしたい」「夜間だけインターネットを止めたい」と思った時です。家族用ネットワーク全体に制限をかけると、親のスマートフォンや仕事用PCまで影響を受けます。
そこで、まず子ども用SSIDとネットワークを分けます。ルールを適用する範囲をはっきりさせてから、必要な制限を加えていきます。
今回の設定に使っているOpenWrtルーターはこちらです。
この記事では、Linksys Velop WRT Pro 7(LN6001-JP)に子ども用Wi-Fiを作り、Cloudflare 1.1.1.1 for Familiesと夜間ルールを段階的に加える方法を紹介します。
子ども用SSIDは、ルールを分ける入口になる
SSIDは、端末に表示されるWi-Fiの名前です。名前だけを MyHome_Kids に変えても、所属先が家族用の lan なら、ルールは分かれていません。
子ども用Wi-Fiには、SSIDとは別に、専用のネットワーク、DHCPサーバー、ファイアウォールゾーン(通信ルールを分ける単位)が必要です。

この記事では、家族用LANを 192.168.1.0/24、子ども用ネットワークを 192.168.30.0/24 とします。子ども用端末からインターネットへの通信だけを許可し、家族用LANへの転送は許可しません。
ルーターに任せる範囲と、端末で管理する範囲を決める
ルーター側のフィルタリングには限界があります。最初に期待値を合わせておくと、必要以上に強い設定を重ねずに済みます。

LN6001-JPでは、子ども用SSIDへ指定したDNSを配り、通信できる時間帯を制限できます。アプリの利用時間、年齢に応じた購入制限、モバイル回線は、端末やアカウント側で管理します。
Family DNSが見ているのはWebページの内容ではありません。マルウェアや成人向けと分類されたドメインへの接続を減らす仕組みです。
設定前に一枚のメモを作る
作業中にSSID名やIPアドレスを考え始めると、設定が食い違いやすくなります。先に使う値を決めます。

192.168.30.0/24 がVPNや既存ネットワークと重なる場合は、空いている別のアドレスを選んでください。子ども用SSIDのパスワードは、家族用とは別にします。
以降のCLI例と画面名は、LN6001-JPのメーカー提供のOpenWrtベースのOS(ver. 1.2.0.15)を前提にしています。一般的なOpenWrtや将来の本流移行環境とは画面・firewallの扱いが異なる場合があります。現在の対象と移行作業の位置づけは003のファームウェア解説を確認してください。
六つの工程で、小さく始める
この六工程を順に進めます。

1. 有線LANから作業し、バックアップを取る
Wi-Fi設定の反映中は無線接続が切れることがあります。可能ならPCをLANケーブルでLN6001-JPへ接続し、そのPCからLuCIを開きます。続いて System → Backup / Flash Firmware から設定バックアップを保存してください。
バックアップにはSSID、パスワード、内部IPアドレスが含まれる場合があります。SNSや公開リポジトリへ置かないでください。
2. kids ネットワークとSSIDを作る
子ども用ネットワークの作り方は、007のゲストWi-Fiと基本的に同じです。この記事だけでも進められるよう、必要な値を次にまとめます。画面ごとの詳しい操作は007も参照してください。
Bridge device:br-kids
Interface:kids
IPv4 address:192.168.30.1
IPv4 netmask:255.255.255.0
ESSID:MyHome_Kids
WirelessのNetwork:kids
LuCIの Network → Interfaces → Devices で空のブリッジ br-kids を作ります。次に Network → Interfaces を開き、プロトコルに Static address を選んで、kids インターフェースを追加します。DHCP Serverも有効にします。
次に Network → Wireless から子ども用SSIDを追加し、Networkを kids に割り当てます。SSID名が子ども用でも、Networkが lan のままなら分離にはなりません。
3. kids zoneは、WANだけを出口にする
Network → Firewall で kids zoneを作ります。
Input:REJECT
Output:ACCEPT
Forward:REJECT
Covered networks:kids
Allow forward to destination zones:wan のみ

kids → wan は許可し、kids → lan の転送は作りません。これでNASなどの家族用LAN端末には原則として届きません。kids ゾーンのInputを REJECT にすることで、ルーター自身のLuCIも遮断します。最後に実際の端末で両方を確認してください。
Inputを REJECT にした状態でも、IPアドレスを受け取るためのDHCPは必要です。Network → Firewall → Traffic Rules で、kidsからルーターのUDPポート67への通信を許可します。
この記事ではFamily DNSへ直接問い合わせるため、kids からルーターへ許可するのはDHCP用のUDPポート67です。LN6001-JP自身をDNSとして使う場合に限り、TCP / UDPポート53も許可します。二つの構成を同時に設定しないでください。
4. Family DNSを子ども用端末へ配る
008でForce Local DNSを有効にした人だけ確認
Force Local DNSを有効にすると、端末から外部DNSへ向かう通常のDNS通信はLN6001-JPへ転送されます。そのため、DHCP Option 6で 1.1.1.3 を配っても、Family DNSへ直接届かないことがあります。
DNSの流れは、次のどちらかに統一します。
kids からFamily DNSへ直接送る:DHCP Option 6で 1.1.1.3 / 1.0.0.3 を配り、Force Local DNSが kids に適用されないことを確認する
ルーターのDNSへ集約する:子ども用端末にはLN6001-JPをDNSとして使わせ、ルーター側の上流DNSやAdblockを調整する
この記事は、前者の直接送る構成で進めます。後者へ切り替える場合は、家族用LANと同じDNSサービスの上流を変えるだけでは家族用端末にも影響し得ます。kidsだけの方針を保てる構成が確認できるまでは、両方を混ぜないでください。
この記事では、Cloudflare 1.1.1.1 for Familiesの「マルウェアと成人向けコンテンツをブロック」を使います。

LuCIの Network → Interfaces → kids → DHCP Server → Advanced Settings を開き、DHCP Optionsへ次を追加します。
6,1.1.1.3,1.0.0.3
DHCP Option 6は、端末が使うDNSサーバーを指定する項目です。保存したら子ども用端末のWi-Fiをつなぎ直し、新しいDHCP情報を取得させます。
この記事の初期確認はIPv4だけで行います。IPv6を kids へ配る場合、DHCP Option 6だけでは足りません。RDNSS / DHCPv6のDNS配布とIPv6ファイアウォールを別に設計します。CloudflareのFamily DNSは、IPv6用に 2606:4700:4700::1113 と 2606:4700:4700::1003 も案内しています。
CloudflareへDNS問い合わせを送る構成になるため、利用前に同社のプライバシー方針も確認してください。分類は完全ではなく、必要なサイトが誤って止まる可能性もあります。
5. 実際の端末で、通す通信と止める通信を確認する
子ども用端末を MyHome_Kids へ接続し、次の順番で確認します。
192.168.30.x のIPアドレスを受け取る
Webサイトを開ける
192.168.1.1 のLuCIを開けない
家族用LANのNASへ届かない
Family DNSのテスト用ドメインがブロックされる
学校用サイト、ログイン、動画、ゲームが必要な範囲で動く
Cloudflareは、Family DNSの確認用として malware.testcategory.com と nudity.testcategory.com を案内しています。実在する危険サイトを探して試す必要はありません。確認するのはkidsへ接続した端末の通常のブラウザです。診断ツールでFamily DNSを直接指定して成功しても、ブラウザがDoHなど別経路を使っていないことまでは分かりません。IPv4だけを確認する段階でも、意図しないIPv6のDNS配布やVPNが残っていないかを確認します。
SSHを使える場合は、以下の確認コマンドも利用できます。いずれも設定は変更しません。
echo "### kids interface"
ifstatus kids
echo "### kids DHCP"
uci show dhcp.kids
echo "### kids firewall and wireless"
uci show firewall | grep -E "kids|Allow-Kids|Block-Kids"
uci show wireless | grep -E "MyHome_Kids|kids|ssid|network"
6. 時間ルールは、通常動作を確認してから加える
Family DNSとネットワーク分離が安定してから、必要であれば夜間ルールを加えます。Network → Firewall → Traffic Rules で、kids から wan への新しい通信を REJECT するルールを二つ作ります。

二つのルールに、次の値を設定します。曜日を限定しない場合は、曜日欄を空欄のままにします。
Block-Kids-Night-1:Protocol Any、Source zone kids、Destination zone wan、Action REJECT、22:00〜23:59
Block-Kids-Night-2:Protocol Any、Source zone kids、Destination zone wan、Action REJECT、00:00〜06:00
ルール一覧で両方が有効になっていることを確認し、Save & Apply を押します。別の許可ルールを作っている場合は、その許可より前に夜間ルールを置きます。無効に戻す時は、二つのルールの Enabled を外してから再度 Save & Apply を押してください。
有効にする前に、LuCIの System → System でタイムゾーンと現在時刻も確認します。夜まで待って初めて試すのではなく、影響のない時間にkidsのテスト端末で短い時間帯のルールを試し、家族用LANが使い続けられることも確認します。テスト用の時間設定を残さず、最後に本来の二つの時間帯へ戻して記録してください。
時間になっても動画やゲームがすぐ止まらない場合があります。すでに確立した通信が残るためです。確認時は端末のWi-Fiを切断して再接続し、アプリも起動し直します。
DoH、DoT、VPN、モバイル回線は別の経路になる
DHCP Option 6でDNSサーバーを指定しても、端末やアプリ側の固定DNS、DoH、Androidの「プライベートDNS」などで使われるDoTが優先されることがあります。その場合、Family DNSは使われません。

VPN内でDNSを処理する通信や、モバイル回線へ切り替えた通信も、家庭のLN6001-JPを通りません。
家庭での現実的な順番は、子ども用SSID、Family DNS、端末側のセキュアDNS確認、OSやアカウントのペアレンタル設定です。技術だけで穴をすべて埋めようとすると、学校用サービスや必要なアプリまで壊しやすくなります。
学校用PCは、最初から例外候補にする
学校が管理するPCやタブレットは、独自DNS、VPN、証明書、管理ポリシーを使う場合があります。家庭側のFamily DNSや夜間ルールを適用すると、授業サイトへログインできない、教材を提出できないといった問題が起きることがあります。
まず子ども用SSIDで通常時間帯に試します。問題が出たらメインSSIDへ戻し、Family DNSまたは時間ルールが原因か確かめます。学校用PCだけ別SSIDや別ルールにする選択肢も残してください。
つながらない時は、症状から一段ずつ戻る

SSIDに接続できない時は、無線(Radio)、暗号化方式、パスワードを確認します。IPアドレスを取得できない時は、kids のDHCPサーバーとUDPポート67の許可を確認します。
IPアドレスが取れているのにWebサイトを開けない時は、まず kids → wan の転送を確認します。時間制限が有効なら、その二つのルールを一時的に無効にして比較します。そのあとDNSだけを切り分けます。Family DNSを外す場合は、作業前に記録したDNS設定へ戻し、端末へDHCP情報を取り直させてください。ルーターへのDNS通信を拒否したまま、配布先だけをルーターへ戻すと、別の名前解決エラーを作ってしまいます。
時間ルールが効かない時は、LN6001-JPの時刻、二つの時間帯、ルールの有効化、既存接続の順に確認します。複数の設定を一度に直すと、原因が分からなくなります。
家庭内ルールは、一文で説明できる形にする
家族への説明も設定と一緒に残します。たとえば、次の一文です。
MyHome_Kids はFamily DNSを使い、夜22時から朝6時まではインターネットを止める。学校用PCで困った時は親へ伝える。
SSID、時間帯、例外、バックアップ日を一緒に保管してください。
SSIDを増やさず、端末別に設定する場合
固定DHCP割り当てと端末別のfirewallルールでも設定できます。ただし、プライベートMACや機種変更への追従が必要です。最初はSSID単位で分けるほうが、家族へルールを説明しやすくなります。