0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pi-holeを使い子供のタブレットだけyoutubeを見れないようにする

0
Posted at

子供のPCとかゲームについて、自分の経験から考えても、何でもかんでも禁止すればいいわけではないのは前提にあるとして、かといって、目を離すと常に学校配布のchromebookタブレットで、youtube(特に、youtuberによるマイクラの実況動画)を延々と見続けて、近づくとタブレットをバタンと閉じてちょっと照れながらもーーっ(来ないでよ)とやられるのを連休中ずっとやられて、兄弟のごっこ遊び中に、チャンネル登録よろしくね、とか言い始められると、もう我慢の限界ですよ。

事あるごとに、youtubeの実況動画を見ないように言い続けているにも関わらず。その度に、ネットワーク的な制限をかけようとしては、やっぱり色々なことを考えてやめる、というのを2年くらい続けてきたけど、最近特に酷いので、とうとう制限してやりましたよ。ふふふ。

ということで、自宅LAN内のPC(linux)にPi-holeを常駐させ、制限付きDNSサーバとし、子供の端末のDNSサーバとしてそのPCを使うように設定することで、子供の端末だけ、インターネットに繋がるけどyoutubeだけは繋がらなくする設定をしたので、その方法についてです。

1. 自宅LANの環境

linux(almalinux 10.2)の小型PCを1台、自宅で常時起動していて都合がいいので、これを使いました。使うのはコンテナが動くPCを1つ、です。
Pi-holeというソフトウェアを使います。いい感じに設定済みコンテナイメージが配布されているので、それを起動して、制限したいドメイン名を登録します。

image.png

自宅LANには家庭用ルータが1つあり、通常、wifiを使う場合、ルータのパスワードを入力したら繋がります。この場合、裏側で色々なネットワーク設定が自動で行われています。その内の1つにDNSサーバの接続先の設定があります。通常、ルータのIPアドレスがDNSサーバとして設定されます。

image.png

今回、制限したいPCについて、DNSサーバの設定を手動で変えて、Pi-holeが動くPCのIPアドレス(192.168.11.104)を設定します。

image.png

Pi-holeは、youtube.comなど制限登録したドメイン名については名前解決をブロックし、それ以外は上流DNSサーバへ問い合わせます。youtube.comなどの制限登録したドメイン名は名前解決させず、それ以外のインターネット上のドメイン名は普通にルータに任せるので、Pi-holeをDNSサーバとする子供PC1〜3だけがyoutubeを見れなくなる、という仕組みです。

2. Pi-hole起動

linux(almalinux 10.2)の小型PCは、podmanがインストール済みなので、コンテナが使えます(無ければ、dnf install podmanで可)。

[root@al10micro ~]# podman --version
podman version 5.8.2
[root@al10micro ~]#

ファイルはここに。

[root@al10micro ~]# mkdir -p /opt/pihole/etc-pihole
[root@al10micro ~]#

Pi-holeのコンテナを起動します。コマンドは以下。

podman run -d \
  --name pihole \
  --restart=unless-stopped \
  -p 192.168.11.104:53:53/tcp \
  -p 192.168.11.104:53:53/udp \
  -p 192.168.11.104:8080:80/tcp \
  -e TZ=Asia/Tokyo \
  -e FTLCONF_webserver_api_password='管理画面用のパスワード' \
  -e FTLCONF_dns_listeningMode=ALL \
  -v /opt/pihole/etc-pihole:/etc/pihole:Z \
  docker.io/pihole/pihole:latest

これを実行すると、コンテナイメージが取得され、起動します。

[root@al10micro ~]# podman run -d \
>   --name pihole \
>   --restart=unless-stopped \
>   -p 192.168.11.104:53:53/tcp \
>   -p 192.168.11.104:53:53/udp \
>   -p 192.168.11.104:8080:80/tcp \
>   -e TZ=Asia/Tokyo \
>   -e FTLCONF_webserver_api_password='mypasswords' \
>   -e FTLCONF_dns_listeningMode=ALL \
>   -v /opt/pihole/etc-pihole:/etc/pihole:Z \
>   docker.io/pihole/pihole:latest
Trying to pull docker.io/pihole/pihole:latest...
Getting image source signatures
Copying blob 55afa1ecc21d done   |
Copying blob 0891c8fbed72 done   |
Copying blob 4f560398de0c done   |
Copying blob 2d3e59679008 done   |
Copying blob 0ee693606189 done   |
Copying blob 1a2e1e92b3a7 done   |
Copying blob dac93237c3b2 done   |
Copying blob 7c769e4eb022 done   |
Copying blob 1d05ca387753 done   |
Copying blob 2849dbb60af0 done   |
Copying blob 88293a27c672 done   |
Copying blob 054a3c9c22d1 done   |
Copying config 15d302c0f8 done   |
Writing manifest to image destination
24e450e5f66298b9d5415d693f856241b426a61a016d38cc43693d462e3f0308
[root@al10micro ~]#

起動確認。

[root@al10micro ~]# podman ps
CONTAINER ID  IMAGE                           COMMAND     CREATED        STATUS        PORTS                                                                                                        NAMES
24e450e5f662  docker.io/pihole/pihole:latest              3 minutes ago  Up 3 minutes  192.168.11.104:53->53/tcp, 192.168.11.104:8080->80/tcp, 192.168.11.104:53->53/udp, 443/tcp, 67/udp, 123/udp  pihole
[root@al10micro ~]#

これで、LAN内のPCから、linux PCを名指しすると名前解決できることを確認します。

taronoMac-mini:~ taro$ dig @192.168.11.104 google.com

; <<>> DiG 9.10.6 <<>> @192.168.11.104 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25809
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             236     IN      A       142.251.24.100
google.com.             236     IN      A       142.251.24.138
google.com.             236     IN      A       142.251.24.102
google.com.             236     IN      A       142.251.24.113
google.com.             236     IN      A       142.251.24.101
google.com.             236     IN      A       142.251.24.139

;; Query time: 6 msec
;; SERVER: 192.168.11.104#53(192.168.11.104)
;; WHEN: Wed Sep 23 12:18:33 JST 2026
;; MSG SIZE  rcvd: 135

taronoMac-mini:~ taro$

解決できています。

3. Pi-holeの制限の設定

自宅LAN内の任意のPCから、Pi-holeの管理画面を開きます。この場合、linuxPCのIPアドレスが192.168.11.104なので、http://192.168.11.104:8080/admin/ です。

image.png

こんな感じの管理画面が出るので、左メニューの「Domains」を開きます。

image.png

「Add a new domain or regex filter」の「RegEx filter」を選び、「Regular Expression:」に、以下の設定を1つ入力し、「Add to denied domains」を押して保存します。これを6つぶん繰り返します。

(^|\.)youtube\.com$
(^|\.)youtu\.be$
(^|\.)googlevideo\.com$
(^|\.)ytimg\.com$
(^|\.)youtubei\.googleapis\.com$
(^|\.)youtube\.googleapis\.com$

こんな感じに、下に6つ、制限の設定が登録されます。

image.png

4. 制限の確認

LAN内のPCから、linux PCを名指しすると、

  • youtubeは名前解決できない
  • google.comなどyoutube以外は名前解決できる

ことを確認します。

youtubeは名前解決できない
taronoMac-mini:\~ taro$ dig @192.168.11.104 [www.youtube.com](http://www.youtube.com)
; <<>> DiG 9.10.6 <<>> @192.168.11.104 [www.youtube.com](http://www.youtube.com)
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7688
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;[www.youtube.com](http://www.youtube.com).               IN      A
;; ANSWER SECTION:
[www.youtube.com](http://www.youtube.com).        2       IN      A       0.0.0.0
;; Query time: 1 msec
;; SERVER: 192.168.11.104#53(192.168.11.104)
;; WHEN: Wed Sep 23 12:22:25 JST 2026
;; MSG SIZE  rcvd: 60
taronoMac-mini:\~ taro$

OKです。Pi-holeによってAレコードとして0.0.0.0が返されており、名前解決を利用したアクセスがブロックされています。

google.comなどyoutube以外は名前解決できる
taronoMac-mini:\~ taro$ dig @192.168.11.104 google.com
; <<>> DiG 9.10.6 <<>> @192.168.11.104 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52884
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; OPT=15: 00 03 ("..")
;; QUESTION SECTION:
;google.com.                    IN      A
;; ANSWER SECTION:
google.com.             0       IN      A       142.251.24.139
google.com.             0       IN      A       142.251.24.100
google.com.             0       IN      A       142.251.24.138
google.com.             0       IN      A       142.251.24.102
google.com.             0       IN      A       142.251.24.113
google.com.             0       IN      A       142.251.24.101
;; Query time: 1 msec
;; SERVER: 192.168.11.104#53(192.168.11.104)
;; WHEN: Wed Sep 23 12:22:31 JST 2026
;; MSG SIZE  rcvd: 141
taronoMac-mini:\~ taro$

OKです。Aレコードが返ってきている。

5. 子供PCのDNS設定

子供PC1はUbuntu 26.04 Desktopです。設定のwifiネットワークを開き、ルータのSSIDの設定で、DNSサーバが自動(192.168.11.1)になっているのを、192.168.11.104に指定し、右上の適用ボタンを押すと、反映されます。

試しにfirefoxを開いてみると、google検索は普通にできるけど、youtubeを開こうとすると、インターネットに接続されていません、と表示される様になり、動画を見れなくなりました。ふふふ。

続いて、子供PC2,3はchromebookです。これも、同じように、「設定」→「ネットワーク」→「Wi-Fi」→ 接続中の自宅Wi-Fi →「ネットワーク」を開き、「ネームサーバー」の項目で「カスタム ネームサーバー」を選択して、192.168.11.104に指定します。同様に、インターネットには繋がるけど、youtubeだけは見れなくなりました。

まあ、子供がここでやった理屈を理解すれば、簡単に戻して見られるようになるんですけどね。戻されたらその時別の対策を考えます。

まとめ

自宅LANで常駐していたlinux PCを、制限機能付きDNSサーバに設定(Pi-holeコンテナを利用)し、制限をかけたいPCのみ、そのDNSサーバを使うよう設定することで、子供のPCからyoutubeを見れないようにしました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?