指定時間YouTubeを見せたくない!!

この記事を読む およそ時間 < 1

Webフィルターサーバ実装

ある環境において、ある一定期間YouTubeを見せたくない時間帯があります。例えば不特定多数が操作できるような環境にTVを設置していて、いつでも動画コンテンツを見られてしまうような場合。

営業時間内は、見えるけど営業時間外スタッフがみて、通信コストが跳ね上がるみたいなのを抑制したいなどの用途を想定しています。

どうやって実現?

それをどのように実現するか?って話なのですが、我が家にルータにはURLフィルターて奴が機能としれ備わってます。当初それを使って実装をしていこうと思ったのですが、なんとこの機能は、制限事項として、http通信のみしか制限出来ない。今時のサイトは全て暗号可されており、https通信になっているので、この場合、これらのサイトは制限できない話になってしまいます。めんどくさいですねw

では、これらをどうやって制御するか?

色々考えたのですが、内部で対応するのが一番スループットからして良いという結論に達しました。では、考えた方法は、どういう制御をいれるのか?

1.指定時間帯はWLANをタイマー機能でOFFにする
2.指定時間帯該当のドメインに対して無意味な(127.0.0.1)みたいな物を返すDNSサーバを立てる

この2つです。基本的に全者は、YouTube以外も犠牲になるためNGにしました。後者は、美味くやれば可能という結論に至りました。後者をVMサーバとして構築していきます。

仕組み

基本的にLinuxで組みます。内部にBINDかアンバウンドを入れてcacheサーバとして動作させます。BINDの場合、CRONでHOSTSを切り替えて、簡易制御するか、BINDのローカルロケーションを書いてCRONで制御するかにします。

BINDもアンバウンドも定義ファイルを更新すると、再起動が必要なので簡単にHOSTS運用をしようかなと思っています。

Linuxのデフォの名前解決は、HOSTSなので、そちらにまず、下記を設定します。

127.0.0.1   www.youtube.com
127.0.0.1   youtube.com

これを1ファイルにしてCRONで時間で差し替えます。曜日・時間・等で細かく制御できるので非常に便利ですね。haproxyいれて、VMとラズパイで冗長化してVIPを参照にするでもいいかも知れません。

この方式なら、アマゾンプライムやその他の映像配信サービスもドメインが設定されているどんなサイトでも制御可能で有り、https / httpに関わらず制御する事が出来る、最善の方法だと思われます。

ちょっとした案

また、上記設定例では、ローカルホストを登録してますが、立てるサーバのIPを入れてしまえば、例えば、時間外に接続したらapacheが時間外の為見れませんのhtmlを返却し、見ようとしている人に警告する的なsorryサーバ的な組込も可能かと思います。その場合、httpsで証明書のエラーがでるのできれいには行かないでしょうけどね。
アプリで見ている様な場合も特に、エラー表示しか出ないしょうし。

なお、外部サイトでサービスとしてやっているサイトもあるので、そちらはDNSをそこを見せるだけで、後はWebの設定画面から制御できるんですが、DNSの参照が遅いとか色々書いているので、制御したのいのは、1つか2つくらいなので、ローカルサーバでさっくりやって終わりにしたいと思います。

Related posts