あなたの家に子供がいる場合、あなたは特定の望ましくないウェブサイトをブロックする必要性を感じたかもしれません。 もう1つの一般的な問題の分野はソーシャルメディアWebサイトです - あなたは子供(そして大人)がFacebookやTwitterなどであまりにも多くの時間を浪費し、それらをブロックしたい、あるいは少なくともその日の特定の時間にだけアクセスできるようにしたいと思うかもしれません。
これを可能にするには、 ルーターとコンテンツフィルター 、つまりラップトップ、スマートフォン、タブレットなどのすべてのデバイスをインターネットに接続するためのアプライアンスが必要です。 このアプライアンスは、これらのデバイスがアクセスするWebサイトも傍受し、ブラックリストに登録されているWebサイトにアクセスしようとするとそれらをブロックします。
市販されている、すぐに使えるコンテンツフィルタが市場に出回っていますが、私たちのDIYタイプにとって、それには面白みはありません。 したがって、私たちは手を汚して、仕事のためにラズベリーパイをセットアップします。 このプロジェクトでは、サイズが小さく電力消費がごくわずかなので、ラズベリーパイを選択しました。 しかし、 これらの指示は 、 Debian Linuxまたはその派生物 (Ubuntu、Mintなど)を実行しているほとんどすべてのコンピュータでほぼ修正されずに機能します 。
免責事項 :このガイドは、Linuxに関する中級レベルの経験と、問題が発生した場合とその発生時にトラブルシューティングを行う意欲を前提としています。 コマンドラインとファイアウォールに関する以前の経験はボーナスです。
使い方
ハードウェア
Raspberry Pi 3をルーター兼コンテンツフィルターとして使用します。 そのためには、インターネットに接続するためのネットワークインターフェイスと、他のデバイスが接続するためのWiFiホットスポットとして機能するためのネットワークインターフェイスの2つが必要です。 ラズベリーパイ3は内蔵のイーサネットジャックとWiFiモジュールがあります。 そのため、このシナリオでは、インターネットに接続するためにイーサネットケーブル( eth0 )を使用できますが、WiFiモジュール( wlan0 )はホットスポットとして機能します。
もちろん、イーサネットを使ってインターネットに接続することは必ずしも可能ではありません。 この場合、インターネットに接続するには互換性のあるUSB WiFiドングル( wlan1 )が必要ですが、内蔵WiFiモジュール( wlan0 )がホットスポットとして機能します。 これが、このガイドで使用する構成です。
Raspberry Pi 3は、数台のラップトップやスマートフォンを使用する家庭用セットアップにはほとんど適していますが、大規模なオフィス用セットアップには必要なパフォーマンスが得られないことに注意してください。 多数のクライアントがコンテンツフィルタに接続する場合は、より高性能なハードウェアを調べてください。
ソフトウェア
私達は私達のウェブリクエストを傍受しフィルターにかけるために優れたE2guardianを使います。 コンテンツフィルタリングは(ブロックリストのサイズによっては)パフォーマンスに影響を与える可能性があるため、このパフォーマンスの低下を相殺するためにSquidキャッシュを使用します。
前提条件
1.最新バージョンのRaspbian OSがインストールされたRaspberry Pi 3 、およびインターネットへのアクセス。 Raspberry Piを使い始めたばかりの場合は、Raspberry Pi 3を使い始める方法についてのガイドを読むことをお勧めします。
2. (オプション) USB WiFi Dongle - これは、Raspberry Pi 3をイーサネットケーブルでインターネットに接続できない場合に限り、必要です。 インターネットへの接続とホットスポットの両方にWiFiを使用する予定の場合は、これが必須です。
3. ラズベリーパイへの物理的アクセス - この記事の性質上、ヘッドレスモードで使用すると、ファイアウォールの設定を1回間違えるだけでパイからあなたを締め出すことができます。 そのため、すべての設定が完了するまで設定しながらモニタ、キーボード、マウスを接続することをお勧めします。
ラズベリーパイをルーターとして使用する
1. Ethernet ( eth0 ) を使ってPiをインターネットに接続します 。 代わりにUSB WiFiドングル(おそらくwlan1 )を使用している場合は、それをインターネットに接続してください。 今のところは内蔵のWiFiモジュール( wlan0 )をそのままにしておきます。
2.必要な前提ソフトウェアを入手します。
sudo apt install iptables iptablesパーシステントhostapd dnsmasq squid3
3. PiがWiFiホットスポットとして機能できるように、 hostapd
を設定します。 そのためには、 sudo nano /etc/hostapd/hostapd.conf
ような好みのテキストエディタを使って設定ファイルを作り、GitHubページから内容を貼り付けてください。
あなたが好みに応じて変更したいと思うかもしれないいくつかの行は次のとおりです。
ssid = RaspberryPiAP
この行は、アクセスポイントの名前が何であるかを決定します。 RaspberryPiAP
を選びました。
wpa_passphrase = beebom.com
これは、ホットスポットへのアクセスに使用されるパスフレーズを指定します。 私はbeebom.com
を使用しbeebom.com
、あなたが選んだ強力なパスフレーズに変更することをお勧めします。
4.次に、 dnsmasq
を使ってDHCPサーバーを設定します 。 設定ファイル/etc/dnsmasq.conf
編集して、最後に次の行を追加します。
[ソースコード] interface = lo、wlan0
no-dhcp-interface = lo
dhcp-range = 192.168.8.20、192.168.8.254、255.255.255.0、12h [/ sourcecode]
これにより、 wlan0
(内蔵のWiFiモジュール)のインタフェースは192.168.8.20から192.168.8.254の範囲のIPアドレスをクライアントに配布します。
5.内蔵WiFiモジュールwlan0
静的IPアドレスを設定します。 /etc/network/interfaces
ファイルを開き/etc/network/interfaces
。 それはおそらく次のようになります(私の強調)。
[ソースコード]ソースディレクトリ/etc/network/interfaces.d
オートロー
iface lo inetループバック
iface eth0 inetマニュアル
allow-hotplug wlan0
iface wlan0 inetマニュアル
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inetマニュアル
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf [/ sourcecode]
ここで、 wlan0
を扱っている行を太字にして変更し 、ファイルが次のようになるようにします。
[ソースコード]ソースディレクトリ/etc/network/interfaces.d
オートロー
iface lo inetループバック
iface eth0 inetマニュアル
allow-hotplug wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
アドレス192.168.8.1
ネットマスク255.255.255.0
allow-hotplug wlan1
iface wlan1 inetマニュアル
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf [/ sourcecode]
これはwlan0の静的IPアドレス192.168.8.1
を設定します。 これは後でRaspberry Piと通信するために使用するアドレスであるため、このアドレスを忘れないでください。
6. IP転送を設定します 。 ファイル/etc/sysctl.conf
編集して、次の行を追加します。
net.ipv4.ip_forward = 1
7.ファイアウォールにネットワークアドレス変換 (NAT)を設定します 。 これを行うには、次の2つのコマンドを入力してください。
sudo iptables -t nat -A POSTROUTING -s 192.168.8.0/24! -d 192.168.8.0/24 -jマスカレードsudo iptables-save | sudo tee /etc/iptables/rules.v4
最初のコマンドはNATを設定し、2番目のコマンドは現在のファイアウォール設定を/etc/iptables/rules.v4
というファイルに保存します。 これにより、再起動後も設定が確実に保持されます。
8.この時点で、Raspberry Piを再起動してください 。 これは、設定ファイルに加えたすべての変更が機能していることを確認するためです。
9.再起動後、ノートパソコンやスマートフォンなどの他のデバイスで、新しく作成したRaspberryPiAP
ホットスポットが表示されます(手順3で名前を変更した場合を除く)。 あなたは指定したパスワードを使ってそれに接続し、インターネットにアクセスすることができます。
これが基本的な低電力ルータを必要とするならばあなたがする必要があるすべてです。 コンテンツフィルタも設定したい場合は、先に進んでください。
E2guardianを使用したコンテンツフィルタの設定
E2guardianはデフォルトのRaspbianリポジトリにはありません。 インストールするには、プロジェクトのGithubページに行き、 armhf.deb
終わるファイルをダウンロードしてarmhf.deb
。 ターミナルを開き、 ダウンロードフォルダ(またはファイルのダウンロードを選択した場所)に移動してインストールします。
cd〜/ダウンロードsudo dpkg -i ./e2guardian_*_jessie_armhf.deb
E2guardianをインストールするときに、おそらく不足しているパッケージに関するいくつかのエラーが表示されるでしょう。 これを修正するには、インストールを終了させ、次のコマンドを入力します。
sudo apt-get install -f
コンテンツリストの使用
/etc/e2guardian/lists
ディレクトリにはいくつかのリストがあり/etc/e2guardian/lists
。 これらのファイルには、bannedextensionlist、bannediplist、bannedphraselist、bannedsitelist、bannedurllist、exceptionlistなどがあります。 これらのファイルは、コメント付きで適切に文書化されています。 それらを見て自分をよく理解してください。
例として、 人気のあるソーシャルネットワークをブロックしたいとしましょう。 /etc/e2guardian/lists/bannedsitelist
ファイルを/etc/e2guardian/lists/bannedsitelist
、 Blanket SSL / CONNECTブロックの下に(これらのWebサイトでは単純なhttpではなくhttpsが使用されているため)、以下の行を追加します。
facebook.com twitter.com reddit.com
sudo service e2guardian reload
コマンドを使用してE2guardianサービスをsudo service e2guardian reload
ます ( 設定ファイルを変更するたびにこのコマンドを実行する必要があります )。 コンテンツフィルタを使用しているクライアントは、これらのWebサイトにアクセスできなくなります。 携帯サイト(例:m.twitter.com)や専用のスマートフォンアプリでも機能しません。
E2guardianもデフォルトでポルノをブロックします 。 許可したい場合(ちょっと、私たちは判断していません)、 /etc/e2guardian/lists/bannedphraselist
ファイルを/etc/e2guardian/lists/bannedphraselist
、次の行を見つけます。
。含める
先頭にハッシュ (#記号)を追加してコメントアウトし、次のようにします。
#。含める
繰り返しになりますが、 sudo service e2guardian reload
で設定をsudo service e2guardian reload
すれば完了です。
クライアントの設定
これでプロキシサーバーがセットアップされたので、次にクライアントの構成に進みます。 コンテンツフィルタを使用するには、すべてのクライアントがRapberry Piのホットスポットに接続され、プロキシを使用するように設定されている必要があります。 プロキシの設定は、すべてのオペレーティングシステムとデバイスで異なります。 ただし、WindowsとAndroidでの設定方法がより一般的であるため、ここではその設定方法について説明します。
Windows
[コントロールパネル]> [ネットワークとインターネット]> [インターネットオプション]の順に選択します。 表示されたウィンドウで[ 接続 ]タブに移動し、[ LANの設定 ]をクリックします 。
ここでは、「 Advanced 」をクリックし、プロキシアドレスとして192.168.8.1
、ポートとして8080
を入力してください。 [ すべてのプロトコルに同じプロキシサーバーを使用する]チェックボックスがオンになっていることを確認します。 OKをクリックしてください。
それがあなたがする必要があるすべてです。 Google ChromeやFirefoxなどの一般的なWebブラウザは、自動的にシステムプロキシ設定を選択します。
アンドロイド
[システム設定]> [WiFi]に進みます。 ラズベリーパイのホットスポットを長押しして、 [ネットワークの変更]を選択します 。 詳細オプションで、 プロキシオプションを手動に設定します。 それでは、 Proxy hostnameの下に、Pi 192.168.8.1
IPアドレスを入力してください。 [ プロキシポート]で 、 8080
と入力して[ 保存]をタップします 。
これでプロキシの設定をテストできます。 ブラックリストのWebサイトにアクセスしてみてください。このような「アクセスが拒否されました」ページが表示されます。
プロキシ使用の強制
これまでのところ、私たちは、コンテンツフィルタを介してインターネットをうまく利用しているクライアントに頼っています。 もちろん、これは現実の世界ではめったに起こりません。 そのため、すべてのクライアントにプロキシを通過させるには、次のコマンドを実行します。
sudo iptables -A事前設定-t nat -p tcp - 宛先ポート80 -jリダイレクト--to-ports 8080 sudo iptables -A事前設定-t nat -p tcp - 宛先ポート443 -j REDIRECT --to-ポート8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4
これにより、ラズベリーパイのホットスポット上のすべてのhttp (ポート80)およびhttps (ポート443)トラフィックが自動的にコンテンツフィルタプロキシにリダイレクトされます 。 今、あなたのデバイス上でプロキシ設定を構成せずに、彼らはFacebookやGmail、Twitterなどのような安全なhttpsのウェブサイトにアクセスすることは全くできなくなります 。 これにより、あなたのPiホットスポットに接続したい人は誰でもプロキシを経由する必要があります。
コンテンツフィルタの基本的な使い方について知っておく必要があるのはこれだけです。 いくつかの高度な機能を学びたいのなら、読んでください。
高度な使用シナリオ
時間ベースのフィルタの設定
上記のコンテンツリストの使用のセクションで言及したWebサイトをブロックしたいとしましょう。ただし、その日の特定の時間帯に限定してください。 私は個人的には平日の勤務時間中(午前9時 - 午後5時)にReddit、Facebook、Twitterをブロックすることを好みます。なぜならそれらは生産性の悪夢だからです。
/etc/e2guardian/lists/bannedsitelist
ファイルを/etc/e2guardian/lists/bannedsitelist
、以下の行を追加します。
時間:9 0 17 0 01234
この行は次のように機能します。タイマーは、 0 (月曜日)から4 (金曜日)までの17 (24時間形式で午後5時)までの9 (9 am) 0 (00分)で開始します。
別の例を見てみましょう。
時間:10 30 20 45 024
これにより、月曜日(0)、水曜日(2)、および金曜日(4)の午前10時30分(10 30)から午後8時45分(20 45)までの構成済みサイトがブロックされます。
特定のIPアドレスにプロキシをバイパスさせる
特定のIPアドレスにコンテンツフィルタをバイパスさせることは可能です。 これはファイアウォールを設定することで設定できます。 dnsmasq.conf
では、 192.168.8.20から192.168.8.254までのIPアドレスをクライアントに割り当てるようにホットスポットのみを設定しています。 つまり、 192.168.8.2から192.168.8.19までのアドレスは、どのクライアントにも自動的に割り当てられることはありません( 192.168.8.1は、Raspberry Pi自体が使用しているので使用できません)。
これを行うには、最初にフルアクセスを許可するデバイスに静的IPを設定します。 たとえば、Windowsマシンに192.168.8.2の静的IPを設定するには、次の設定を使用します。
さて、あなたのラズベリーパイで、以下のコマンドを実行してください。
sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 80 -j戻り値sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 443 -j RETURN
今、 あなたのデバイス上でプロキシの使用を無効にし 、禁止されているウェブサイトを開くことを試みなさい 。 開くことができるはずです。 ホワイトリストに追加するIPアドレスがまだある場合は、上記の2つのコマンドをもう一度実行しますが、IPアドレスを必要なものに置き換えます。 ホワイトリストに満足したら、次のコマンドを実行してファイアウォール設定を保存します。
sudo iptables-save | sudo sudo tee /etc/iptables/rules.v4
心に留めておくべき1つの重要なことはあなたが誰かにホワイトリストに載せられたIPアドレスを知らせてはいけないということです。 それ以外の場合は、プロキシを迂回するためにデバイスをそのIPアドレスに設定するだけです。
セキュリティ上の懸念
あなたのラズベリーパイはあなたのすべてのコミュニケーションのための入り口と出口になるので、それを保護することは重要です。 セキュリティを向上させるためのヒントをいくつか紹介します。 これらは単なる基本的な指針であり、セキュリティの落とし穴の包括的なリストではありません。 セキュリティの量は、ネットワークの性質(自宅、小規模オフィスなど)と、ユーザーがどれほどいたずら好きかによって異なります。
不要なサービスを無効にする
これはルーターなので、必要なサービスだけを実行するのが最善です。 より多くのサービスを実行することは潜在的に悪用される可能性があるより多くの脆弱性を意味します。 このシステムを通常のデスクトップとして使用しないでください 。
[メニュー]> [設定]> [ラズベリーパイの設定]に移動します 。 [ インタフェース ]タブで、不要なサービスをすべて無効にします。
デフォルトパスワードを変更する
新しいRaspbianインストールには、デフォルトユーザー「pi」のデフォルトパスワード「raspberry」が付属しています。 これをより安全なパスワードに変更することをお勧めします。 変更するには、端末を開いて次のコマンドを実行します。
パスワード
モニタとその他の周辺機器を取り外す
このPiで動くのはルーターとウェブフィルターとして使うのに必要なソフトウェアだけなので、モニターやマウスやキーボードのような他の周辺機器は必要ありません。 設定などを変更する必要がある場合は、常にSSHを使用するか、必要に応じてモニタとキーボードを接続してください。
自動ログインを無効にする
Raspbianは、パスワードの入力を求めずに「pi」のユーザー資格情報で自動的にログインするように設定されています。 これは汎用のファミリーデスクトップでは問題ないかもしれませんが、ルーターにとっては危険です。 これを無効にするには、Raspbianデスクトップで、 Menu> Preferences> Raspberry Pi Configurationの順に選択します 。 [ システム ]タブで、[ 自動ログイン]の見出しの前にある[ ユーザー 'pi'としてログイン]チェックボックスをオフにします。
同じダイアログボックスで、 Boot設定をTo CLIに設定することをお勧めします 。 ルータ上にGUIは必要ないので、これはリソースを節約します。 何らかの理由でデスクトップを使用したい場合は、自分のユーザー名でログインし、 startx
コマンドを実行してグラフィカルインタフェースを有効にします。
一般的な問題のトラブルシューティング
インターフェースの名称変更
あなたがあなたのPiで2つの無線インターフェースを使っているならば、これは非常に一般的です。 Piをインターネットに接続するためにイーサネットを使用している場合は、このセクションを無視しても問題ありません 。 問題は、両方のワイヤレスインタフェース( wlan0とwlan1 )が再起動後に名前を交換することがあるということです。 つまり、内蔵WiFiモジュールwlan0はwlan1に名前が変更され、その逆も同様です。 私達はそれらが私達の設定ファイルのために一貫した名前を持つことに依存しているので、これはもちろん大きな問題です。 再起動後も一貫性を保つ方法は次のとおりです。
1. インターフェイスのMACアドレスを調べます 。 コマンドifconfig | grep HWaddr
実行しますifconfig | grep HWaddr
ラズベリーパイのifconfig | grep HWaddr
。 次のような出力が表示されます。
wlan0およびwlan1セクションの単語「HWaddr」の右側のテキストを書き留めます。 あなたは安全にeth0セクションを無視することができます。 これらはあなたの無線インターフェースのMACアドレスです。
どのMACアドレスがどのインタフェースに属しているのかわからない場合は、単にUSB WiFiドングルを取り外し、もう一度コマンドを実行してください。 もう1つはUSBですが、今出てくる無線LANインターフェースはあなたの内蔵のWiFiインターフェースです。
2.お気に入りのテキストエディタを使って新しいファイル/etc/udev/rules.d/10-network.rules
を作成します。 例えば :
sudo nano /etc/udev/rules.d/10-network.rules
3.このファイルに次のテキストを入力します。 xx:xx:xx:xxなどを適切なMACアドレスに置き換えます 。
[sourcecode]#内蔵WiFiモジュールをwlan0として設定します。 xx:xx:xxなどをで置き換えます。
#組み込みモジュールのMACアドレス
サブシステム== "net"、アクション== "add"、ATTR {address} == "xx:xx:xx:xx:xx:xx"、NAME = "wlan0"
#USB WiFiドングルをwlan1として設定します。 yy:yy:yyなどをで置き換えます。
#USBドングルのMACアドレス
サブシステム== "net"、アクション== "add"、ATTR {address} == "yy:yy:yy:yy:yy:yy"、NAME = "wlan1" [/ sourcecode]
内蔵WiFiインターフェースのMACアドレスがwlan0に対応し、USB WiFiがwlan1に対応することを確認してください。
4.ラズベリーパイを再起動します。 今すぐあなたのインターフェースは正しい名前で始まります。
ファイアウォール設定のリセット
もう1つの一般的な問題は、正しく設定されていないファイアウォールです。 ネットワーク構成によっては、ファイアウォールを正しく設定するまでに何度か試行する必要があります。 ファイアウォールの設定がめちゃくちゃになっている可能性があると思われる場合は、最初から次のコマンドを実行してください。
sudo iptables - フラッシュsudo iptables - テーブルnat - フラッシュsudo iptables - テーブルnat - sudo iptables - テーブルnat --delete-chain
これにより、 すべてのファイアウォール設定が削除されます。 これで、最初からファイアウォールの設定を始めることができます。 満足したら、コマンドsudo iptables-save | sudo tee /etc/iptables/rules.v4
実行しsudo iptables-save | sudo tee /etc/iptables/rules.v4
設定を永続的にするには、 sudo iptables-save | sudo tee /etc/iptables/rules.v4
をsudo iptables-save | sudo tee /etc/iptables/rules.v4
します。
Raspberry Piをルーターとコンテンツフィルターとして使用する
Raspberry Piを強力なルーターとコンテンツフィルタープロキシに変えることですべてです。 GitHubページで私たちのセットアップに使用した正確な設定ファイルを入手することができます。 それがあなたのためにどのようにうまくいくのか私達に知らせてください。 何かが期待通りに機能しない、あるいはステップが混乱しすぎると感じた場合は、下記のコメント欄で質問してください。