この記事について
この記事を最後まで読んで実践してもらえれば、Raspberry Piで自由に制限がかけられる、WiFiルータが作れてしまいます。
しっかり正確に記載していますので、是非実践してみてください。
はじめに
もうかれこれ2年以上になりますが、筆者の長男自身より、ネットを使いすぎるので制限をかけてほしいとの相談があり、どうせならプロキシーサーバのsquidを利用した細かい制限をかけていこうということで、WiFiルータを組む事になりました。
Wifiルータサーバ機器はどうしようということで、今流行りのRaspberry Piで作成することにしました。
筆者はLinuxは得意なのですがシングルボードコンピュータは初めで、少々手こずりましたが、無事快適に制限が掛けられるWifiサーバを完成させ運用しております
youtubeなどの動画サイトは制限なく観てしまいますから、大人であっても制限を掛けたほうが良いかもしれませんね。
それでは、ご説明をいたします。
ネットワーク構成
ネットワーク構成は次のようになります。
光ルータ ⇔(ワイヤード) Wifiルータ(大人用) ⇔(ワイヤード) Raspberry Pi WiFiルータ- WiFiルータ(大人用) 192.168.10.1
- Raspberry Pi WiFiルータ 192.168.150.1
各ルータ間はすべてLANケーブル接続されている構成です。
Raspberry PiはWiFiクライアントと、WiFiサーバの両方になることはできないようなので、WiFiルータにするのであれば、上位回線とはLANケーブル接続するしかないようです。
この構成でWiFiルータ(大人用)は制限なく、Raspberry Piルータ側にはいろいろと制限をかける構成に仕上げます。
RasberryPiの購入とインストール
・RasberryPi 3B+の購入
Raspberry PiはAmazonなどで簡単に買えます。WiFiを国内で使うなら、技適取得者を購入したいところです。次なら技適も採取しているようなので、よろしかったらどうぞ。
また、SDカードも必要です。32GBで十分です。以下にリンクをおいておきますね。
・RasberryPiのインストール
Raspberry Piのインストールは、まず、PCを使ったインストールファイルのダウンロード及びSDカードへのコピーを行います。
出来上がったSDカードをRaspberry Piへセットして起動します。
初回起動時にインストーラが起動しますので、順当に進めれば作業完了となります。
注意点として、PCでSDカードへコピーする際、PCで使っているファイルシステムと違う形式での書き込みになるので、処理中にPC側から認識できないメディアとのメッセージが出ることがあります。メッセージは無視して進めてください。
筆者は以下サイトの記事を参考にインストールしました。
最近のRaspberry Piイメージ(Raspbian)をインストールするメモ
RasberryPI WiFiルータ構築
WiFiサーバ機能をhostapdで、dhcpサーバとdnsキャッシュでdnsmasqを、制限などを付与するproxyにsquidをproxyの自動設定スクリプトの配布用にapache2をインストールして、設定していきましょう。
・必要パッケージのインストール
次のコマンドにて必要パッケージをインストールしましょう。
# sudo apt-get update && apt-get upgrade
# sudo apt-get install hostapd squid dnsmasq apache2
# systemctl enable hostapd
# systemctl enable squid
# systemctl enable dnsmasq
# systemctl enable apache2
・hostapdの起動順変更
hostapdの起動をdnsmasqより後する必要がありますので、次のようにsystemdのファイルを修正します。
Filename: /lib/systemd/system/hostapd.service[Unit] Description=Advanced IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP Authenticator #After=network.target ←コメントアウト After=dnsmasq.service ←追加
修正が終わりましたら、次のコマンドにてsystemdに読み込みを行ってください。
# systemctl daemon-reload
・WiFiサーバのipアドレス設定(dhcpcd)
次のファイルの最終行に追加してください。WiFiサブネットを「192.168.150」、WiFiサーバを「192.168.150.1」とした設定です。変更される場合は、その設定を記載してください。
Filename: /etc/dhcpcd.confinterface wlan0 static ip_address=192.168.150.1/24
・WiFiサーバの設定
WiFiサーバの設定を行います。以下設定はSSIDをRasberry、パスワードをxxxxとした設定です。設定するときは変えてくださいね。
Filename: /etc/hostapd/hostapd.confinterface=wlan0 driver=nl80211 country_code=JP #SSIDを設定 ssid=Rasberry hw_mode=g channel=7 ieee80211n=1 ieee80211d=1 beacon_int=100 dtim_period=2 macaddr_acl=0 wmm_enabled=1 macaddr_acl=0 auth_algs=1 wpa=2 wpa_key_mgmt=WPA-PSK #パスワード wpa_passphrase=xxxx rsn_pairwise=CCMP
DAEMON_CONFの行を次のように変更してください。これをしないと、hostapdが起動されません。
Filename: /etc/default/hostapdDAEMON_CONF="/etc/hostapd/hostapd.conf"
・WiFiサーバ配下のipアドレス発行
Wifiクライアントに発行するipアドレスの範囲を設定してください。以下では、192.168.150.2から192.168.150.40までの範囲で、48時間を期限で発行する設定をしています。
また、ファイル中のwpad.datは、後続で設定するsquidプロキシーサーバを自動配布で参照する設定です。どうも最近のスマホなどは、セキュリティーの関係からプロキシーサーバの自動設定は完全自動では行われないようになっておりますが、この設定があれば一部の手間が省けるので設定をされたほうが良いと思います。
Filename: /etc/dnsmasq.confinterface=wlan0 dhcp-range=192.168.150.2,192.168.150.40,255.255.255.0,48h dhcp-option=252,http://192.168.150.1/wpad.datFilename: /var/www/html/wpad.dat
function FindProxyForURL(url,host) { return "PROXY 192.168.150.1:8080"; }
・ipv4パケットの転送設定
net.ipv4.ip_forwardの行を次のように変更してください。
Filename: /etc/sysctl.confnet.ipv4.ip_forward=1
ファイル変更が終わったら、次のコマンドで反映します。
sysctl -p
ここまで設定が終わったら、wifiルータとしてはほぼ可動しているはずです。最後にプロキシーで制限を掛けて完成です。
・squidプロキシーサーバの設定
いよいよ、制限設定です。squidの設定は結構奥が深いので、こちらなどを参考にさせてもらいました。
条件のトレース方法は、【squid.conf】acl設定書式 ~複数条件や正規表現(url_regex), http_accessの順番, whitelist~を参考にさせてもらいました。
どうも条件を上からトレースして、条件に合致したらそれで終わり(先に禁止条件が合致したら、後続にOK条件があっても評価してくれない、逆もしかり)になるようです。
長男からは、動画サイトを制限してほしいとのオーダーでしたので、ブラックリストを定義して、そちらに時間指定で制限を掛けてみました。
動画サイトについては、7:00-8:00,19:00-20:00のみ閲覧可能、土日については、19:00-21:00まで延長の設定で対処してみました。
Filename: /etc/squid/squid.confacl blacklist dstdomain "/etc/squid/blacklist" acl ok_black_time1 time 7:00-8:00 #許可時間を定義 acl ok_black_time2 time 19:00-20:00 #許可時間を定義 acl ok_black_time_weekend time 19:00-21:00 SA #許可時間を定義 土曜と日曜 acl tomo src 192.168.150.27/255.255.255.255 #長男のスマホIPアドレス acl tomopc src 192.168.150.4/255.255.255.255 #長男のパソコンIPアドレス http_access allow blacklist ok_black_time_weekend tomo tomopc http_access allow blacklist ok_black_time1 tomo http_access allow blacklist ok_black_time2 tomo http_access deny blacklist http_access allow tomo tomopc acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl home src 192.168.12.0/24 acl home src 192.168.150.0/24 acl CONNECT method CONNECT http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localhost http_access allow home http_access deny all http_port 8080 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 acl NOCACHE src 192.168.150.0/24 cache deny NOCACHEFilename: /etc/squid/blacklist
.googlevideo.com .youtube.com .nicovideo.jp .pixiv.net .bokete.jp
・スマホ側プロキシー設定
スマホからは全自動認識させたいところですが、Wifi接続の際にプロキシー設定をしないといけないようです。次のように詳細をクリックいただければ入力欄が表示されますので、そちらで指定して接続してください。
以上で、動画制限付きの家庭用Wifi環境ができました。みなさんも参考にしてみてください。
失礼致しました。Amazonで日本のラズベリーパイを販売している林遠です。
返信削除ブログを拝見しました。弊社のラズベリーパイ3b+レビューブログ記事を書きしてくれませんか。
こちらは無料でサンプルを提供します。
連絡メールはjp02@vertue.cnです。
御返事お待ちしております。どうぞよろしくお願いします。