自宅で動画視聴の時間を制限させるフィルタを作ってみる

2022-10-15
  • B!

TrueNAS サーバ構築

 YouTubeとかamazonプライムビデオとかNetflixとか、ちょっと気を抜くと動画見放題の世界にハマり無用に時間を過ごしてしまい、後悔の念にかられる事はないだろうか。家庭によっては子供の動画の視聴時間を制限させたいというのもあるだろう。

動画を見て良い時間は1日2時間までとか、平日に観ても良い時間は17:00から18:00までとか制限をかける方法を探してみる。パソコンであればペアレンタルコントロール機能が使えるが、リビングのネットテレビでは簡単に制限をかける機能は基本的には無い。

これまでの方法

これまで定番だった方法は、squidのようなHTTP proxyサーバを立ててウェブの利用時間に制限をかけるというもの。やり方はネットで探せばたくさん事例が出てくる。しかし現在はこの方法は使えない。

HTTPS

理由はすっかり普及したHTTPS通信化。HTTPSはどこのURLへ通信するのかという情報も秘匿化するので、中間のproxyではフィルタリングができないのだ。SSLをデコードするフィルタもなくはないが、大掛かりだしセキュリティという面では好ましいものではない。

DNSによる対応

代わりの対応策として、DNSによるフィルタリングがある。端末はHTTPS通信を開始する前に、DNSに問い合わせて接続先サーバのIPアドレスを探す。これは暗号化されないのでフィルタリングが可能。

DNSのリレーサーバにフィルタを設置して、youtube.comのDNS問い合わせが来た時に拒否してしまう。するとクライアントはyoutube.comまで疎通ができないのでHTTPS接続に着手できなくなる。この方法を使えばSSL通信に対するフィルタが一応できる。

NxFilter

DNSによるフィルタリングを行うには、リレーDNSによるフィルタを提供するNxFilterを使と簡単に実装できる。

TrueNASでインストール

TrueNASではサードパーティーのCommunityプラグインにNxFilterがあるので、すぐにインストールが可能。
nxfilter

設定方法

設定はWeb UIでできる。

初めに行う設定は、DNSサーバ。上位のDNSサーバのIPを記入する。
パソコンやネットTVなどのクライアントマシン側はDNS設定をNxFilterのIPアドレスへ向ける。DNSクエリをNxFilter宛にするのだ。NxFilterは受けたDNSクエリをここで設定した上流のDNSへ問い合わせて代理応答する。あるいはyoutube.comへのDNS問い合わせだったら拒否するという動作へ振り分けることでフィルタリングする。

その他の設定は、設定の階層の考え方を理解すれば設定画面を見ればわかると思う。

フィルタリングの階層の考え方

設定は階層構造になっていて、親となる設定項目を基礎にして子となる設定がエンドユーザーへ提供される。この階層構造がWeb UIから分かりにくく初めは設定に面食らうかもしれない。

設定の階層構造は以下である。

WHITELIST (例外で許可する接続先)
CATEGORY と CLASSFIRE (フィルタ設定をカテゴリ分けして整理)
POLICY(上記を組み合わせてフィルタポリシーを作る)
USER(クライアント端末の識別方法と、各端末にどのPOLCYを適用するか)

上から順序に設定をしていけばよい。

動画ブロックと広告ブロックのCATEGORYは初めからデフォルト設定値が入っているので、フィルタリングの接続先設定については特にカスタマイズする必要はない。

簡易フィルタであればこれで十分

使用感としては、簡易フィルタとしてはこれで機能は十分であるし、導入も簡単でTrueNASがあれば無料でできる。もちろん、クライアント端末側でDNS設定を変更されてしまうと簡単に回避されてしまうが、そこまで厳格な運用ではないので良しとする。

なお、本格的に運用したい場合は有料で最新のフィルタ設定にアップデートするサービスが公式にあるし、アクティブディレクトリやLDAPでユーザー認証をしてからフィルタを行う設定もできる。認証はクライアント端末のWeb画面に認証画面が出る。

自宅ではこの方法を使い、ネット動画機能があるTVでも視聴時間制限ができるようになった。