9
8

More than 5 years have passed since last update.

自宅Wi-Fi環境をいじって、SNSやネトゲの縛りから解放してあげたいと思ったんだ

Posted at

ことの経緯

  • 子供がネトゲばかりで勉強しないので困ってる、と友人が言ってた。
  • ずっとSNS疲れを実感してて、ネット依存の自分を見つめ直したい。
  • 世の中にはネット依存の人がわんさか。

とりあえず、自宅Wi-Fi環境にあれやこれや接続制限をかけてみようと思いました。

しっかり利用制限するなら、ペアレンタル・コントロール・アプリの導入や、SIMデータ通信プランの見直しが有効なのは言うまでもありません。

考え方は簡単

Free Wi-Fiを利用する時、ユーザ認証を経て一時的にネットが使える仕組みがありますよね。Captive Portalと言いますが、早い話それと同じシステムを自宅で構築しようという試みです。

接続制限は

  • 何時から何時まで使えるようにする。
  • 一日何時間まで使えるようにする。
  • それらの組み合わせ
  • 他にもいろいろ

といった感じになります。
一日に何時間までといったルータ機能がなかなかないんですよね。

システム構成

  • 既存インターネット・ルータ(ルータA)の下に、接続制限するルータ(ルータB)をぶら下げます。クライアント側でどちらにするか振り分けます。
  • ルータB(ラズパイ+WN-G300UA)のファームウェアはOpenWrtを使い、Captive PortalのパッケージCoovaChilliをインストールします。Wi-Fi APへ接続した時に認証画面を表示し、認証サーバへ取り次ぎをします。
  • 認証サーバはIronWifiのサービスを利用します。機能はFreeRADIUSがベースになっています。無料で1アクセスポイント、10ユーザまで利用できます。IronWifi - Captive Portal Demosでデモできます。本当はOpenWrtでFreeRADIUSをインストールできるようですが、私には難しそうなので外部サービスを利用することにしました。

いざ実装

1. ironwifiの設定

(A). サインアップします

VendorCoovaChilliにします。

RegionTokyo(asia-northeast1)にします。

メール認証します。

メール認証後、メーンページが表示されます。

(B). Networksを設定をします

Name(ネットワーク名)を入力します。ルータの識別名です。

登録されました。

詳細情報を確認します。

(C). Captive Portalsを設定をします

Name(最初に表示されるログイン・ページの名前)を入力します。
Networkは、(B)で登録したネットワーク名を指定します。
VendorCoovaChilliを指定します。

登録されました。

詳細情報を確認します。

Authentication ProvidersLocal Accountにします。

登録されました。

(D). Usersを設定をします

Username(ユーザのログイン名)を入力します。

詳細情報が表示されます。
Authentication Source(認証方式)をlocalにします。
Passwordを設定します。

ラズパイ、WN-G300UA、OpenWrt、CoovaChilliをインストールします

参考:

(A). ラズパイとWN-G300UAとOpenWrtを、しなやかに融合させてみた(ルータモード編) の通りにインストールします

(B). CoovaChilli 1.4をインストールします

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install tar grep diffutils patch
root@OpenWrt:~# opkg install libustream-openssl ca-bundle ca-certificates
root@OpenWrt:~# opkg install gcc autoconf automake libtool-bin make

root@OpenWrt:~# opkg install tcpdump kmod-tun
root@OpenWrt:~# opkg remove  wpad-mini
root@OpenWrt:~# opkg install wpad

root@OpenWrt:~# wget https://sources.lede-project.org/gengetopt-2.22.6.tar.gz
root@OpenWrt:~# tar zxvf gengetopt-2.22.6.tar.gz
root@OpenWrt:~# cd gengetopt-2.22.6

root@OpenWrt:~gengetopt-2.22.6# sh ./configure --prefix=
root@OpenWrt:~gengetopt-2.22.6# make
root@OpenWrt:~gengetopt-2.22.6# make check
root@OpenWrt:~gengetopt-2.22.6# make install

root@OpenWrt:~# cd
root@OpenWrt:~# wget https://github.com/coova/coova-chilli/archive/1.4.tar.gz -O coova-chilli-1.4.tar.gz
root@OpenWrt:~# tar zxvf coova-chilli-1.4.tar.gz
root@OpenWrt:~# cd coova-chilli-1.4

root@OpenWrt:~# wget https://raw.githubusercontent.com/openwrt/packages/master/net/coova-chilli/patches/100-fix_compile_kmod.patch
root@OpenWrt:~# wget https://raw.githubusercontent.com/openwrt/packages/master/net/coova-chilli/patches/200-fix-compile-with-musl.patch
root@OpenWrt:~# patch -p1 < 100-fix_compile_kmod.patch
root@OpenWrt:~# patch -p1 < 200-fix-compile-with-musl.patch

root@OpenWrt:~# ./bootstrap
root@OpenWrt:~# ./configure --enable-miniportal --prefix= --bindir=/usr/bin --sbindir=/usr/sbin --includedir=/usr/include
root@OpenWrt:~# make
root@OpenWrt:~# chmod 755 /usr/share/automake-1.15/install-sh
root@OpenWrt:~# make install

(C). CoovaChilliの環境設定をします

root@OpenWrt:~# mkdir ironwifi
root@OpenWrt:~# cd ironwifi

Captive Portalsの設定ページからOpenWrt/CoovaChilli用設定ファイルをダウンロードします。ダウンロード・リンク名はDefaultsChilli Init Scriptですが、実際のファイル名はそれぞれdefaultschilliになります。

1ページ目

2ページ目

ダウンロードしたchillidefaultsを環境に合わせて修正します。
その際ダウンロードしたファイルに^Mがある場合はすべて削除します。

root@OpenWrt:~/ironwifi# chmod 755 chilli
root@OpenWrt:~/ironwifi# cp -p chilli chilli.org
root@OpenWrt:~/ironwifi# cp -p defaults defaults.org
root@OpenWrt:~/ironwifi# vi chilli

(変更前)

~/ironwifi/chilli
config_load hotspot > /etc/chilli/config

(変更後)

~/ironwifi/chilli
#config_load hotspot > /etc/chilli/config
root@OpenWrt:~/ironwifi# vi defaults

(変更前)

~/ironwifi/defaults
HS_WANIF=eth1              # WAN Interface toward the Internet

(変更後)

~/ironwifi/defaults
HS_WANIF=br-lan            # WAN Interface toward the Internet

設定ファイルを修正したものに置き換えます。

root@OpenWrt:~/ironwifi# mv /etc/chilli/defaults /etc/chilli/defaults.org
root@OpenWrt:~/ironwifi# cp defaults /etc/chilli/defaults
root@OpenWrt:~/ironwifi# ln -s /etc/chilli/defaults /etc/chilli/config
root@OpenWrt:~/ironwifi# mv /etc/init.d/chilli etc-init.d-chilli.org
root@OpenWrt:~/ironwifi# mv chilli /etc/init.d/chilli
root@OpenWrt:~/ironwifi# reboot

OS起動時に自動でプロセスchilliが自動実行されるようにします。

root@OpenWrt:~# /etc/init.d/chilli start
root@OpenWrt:~# /etc/init.d/chilli enable

(D). スマホで動作確認をします

Wi-FiのSSID OpenWrt を選択し、そのパスワードを入力します。
すると Wi-Fiネットワークにログイン OpenWrt が表示されるのでそれを選択します。
その後IronWifiで設定したユーザ名とパスワードを入力すると通常通りネット接続できます。

:one: :two: :three:
:four:

(E). IronWifiで接続制限をかけます

参考:

Usersの設定ページのAttributesで接続制限の設定をします。

1ページ目

2ページ目

:one:一日の接続時間を 1時間=60分=3600秒 に制限する。

ATTRIBUTE TABLE OPERATOR VALUE
Max-Daily-Session radcheck := 3600
Session-Timeout radcheck := 3600

:two:接続時間帯を 「19:00-20:30 JST」=「10:00-11:30 UTC」 に制限する。

参考:

ATTRIBUTE TABLE OPERATOR VALUE
Login-Time radcheck := Al1000-1130

:three:時間帯 「19:00-20:30 JST」=「10:00-11:30 UTC」 のうち、1時間=60分=3600秒 接続できるようにする。

ATTRIBUTE TABLE OPERATOR VALUE
Max-Daily-Session radcheck := 3600
Session-Timeout radcheck := 3600
Login-Time radcheck := Al1000-1130

結び

あれこれと解放されたい気持ちでいっぱいです。(=^・^=)

9
8
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
9
8