Raspberry Pi を使用して匿名で閲覧する方法

10/07 2015
トール
匿名性を保つには Tor 以上のものが必要です。Tor プロジェクトの Web サイトにあるドキュメントを必ずお読みください。

Big Brother によるオンライン追跡を防ぐためにTorを使用していますか? 使用するのは非常に簡単ですが、すべてのインターネット対応デバイスでTorを設定するのは非常に面倒な場合があります。

Raspberry Pi を匿名ワイヤレス アクセス ポイントとして使用すると、多くの手間を省くことができます。Pi は IP アドレスを割り当て、それに接続されているデバイスは Torネットワーク経由でインターネットにアクセスできるようになります。

このプロジェクトを立ち上げて実行するには、次のものが必要です。

アクセスポイントPi

Pi をセットアップしたら、SSH 経由でリモート マシンから Pi を構成できます。チュートリアルの残りの部分では、Pi の IP アドレスが192.168.2.100であると仮定します。Pi と同じルーターに接続されている端末を起動し、次のように入力します。

ssh [email protected]

それに接続するために。Pi で自分自身を認証した後、iwconfigを使用して、ワイヤレス アダプターがデバイスによって認識されていることを確認します。次に、パッケージリストを更新します

sudo apt-get アップデート

次に、アクセス ポイントとして機能するソフトウェアをインストールします。

sudo apt-get install hostapd isc-dhcp-server

インストールされたら、セットアップを行います。まず、DHCP を制御し、接続されているすべてのデバイスに IP アドレスを自動的に割り当てる/etc/dhcp/dhcpd.confファイルを編集します。nanoテキスト エディタで開きます。

sudo nano /etc/dhcp/dhcpd.conf

次の 2 行の前に#を追加してコメントアウトし、次のようにします。

#オプション ドメイン名 "example.org";
#オプション ドメイン名サーバー ns1.example.org、ns2.example.org;

同じファイル内で下にスクロールし、authoritative という単語のコメントを解除します。先頭の#を削除します。

次に、ファイルの最後まで下にスクロールして、次の行を追加します。

サブネット 192.168.12.0 ネットマスク 255.255.255.0 {
範囲 192.168.12.5 192.168.12.50;
オプション ブロードキャストアドレス 192.168.12.255;
オプションルーター 192.168.12.1;
デフォルトのリース時間 600;
最大リース時間 7200;
オプション ドメイン名 "ローカル";
オプション ドメイン名サーバー 8.8.8.8、8.8.4.4;
}

これらの行では、Pi アクセス ポイントの IP アドレス ( 192.168.12.1 )、接続されたデバイスに配布する IP アドレスの範囲 ( 192.168.12.5から192.168.12.50 )、およびドメイン ネーム サーバー ( 8.8.8.8および8.8.4.4 )。これらの値は好みに応じて変更できます。完了したら、ファイルを保存します (Ctrl+X)。

静的IPの設定

次に、/etc/default/isc-dhcp-server を編集して、新しい DHCP サーバーがリッスンするインターフェイスを指定します。ファイルを開き、 INTERFACES=""という行まで下にスクロールします。引用符の間にwlan0を挿入してINTERFACES="wlan0"となるようにし、ファイルを保存します。

次に、ワイヤレス アダプター (wlan0) をセットアップし、静的 IP アドレスを割り当てます。まず、コマンドsudo ifdown wlan0を使用してワイヤレス アダプタを非アクティブ化し、 /etc/network/interfacesファイルを開きます。ファイル内で#を追加して、 wlan0 に関連付けられたすべての既存のエントリをコメント アウトします。たとえば、次のようになります。

# iface wlan0 inet マニュアル
# wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
# iface デフォルト inet dhcp

次に、 allow-hotplug wlan0という行の下に次の行を追加して、新しいアクセス ポイントの静的 IP アドレスを設定します。

iface wlan0 inet 静的
アドレス 192.168.12.1
ネットマスク 255.255.255.0

ファイルを保存し、次のコマンドでインターフェイスをアクティブにします。

sudo ifconfig wlan0 192.168.12.1

自分の意見を主張する

ワイヤレス アクセス ポイントを定義したので、次はそれを構成します。次の内容を含む/etc/hostapd/hostapd.confという名前の新しいファイルを作成します。

Interface=wlan0
ssid=TorSpot
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=
1ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=$Your_Passphrase$
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

TorSpot というパスワードで保護されたネットワークを設定しました。ssid=文字列で指定することで、アクセス ポイントに別の名前を指定できます。また、wpa_passphrase=文字列を変更してカスタム パスワードを指定します。Pi のアクセス ポイントに対して自分自身を認証するには、このパスワードを入力する必要があります。

次に、 /etc/default/hostapdファイル内でこの設定ファイルを指定することで、この設定ファイルの場所を Pi に指示します。ファイルを開き、 #DAEMON_CONF=""というコメントアウトされた行を見つけてコメントを解除し、 DAEMON_CONF="/etc/hostapd/hostapd.conf"になるように編集します。

NAT設定

次に、複数のクライアントが Pi のアクセス ポイントに接続し、すべてのトラフィックを単一のイーサネット IP 経由でルーティングできるように NAT を設定する必要があります。/etc/sysctl.confファイルを編集し、最後に次の行を追加します。

net.ipv4.ip_forward=1

ファイルを保存して入力します

sudo sh -c "エコー 1 > /proc/sys/net/ipv4/ip_forward"

転送を有効にします。次に、インターネットに接続されているイーサネット ポート (eth0) と、ネットワーク内のデバイスに公開されている Wi-Fi アクセス ポイント (wlan0) を接続するルーティング ルールを指定する必要があります。

sudo iptables -t nat -A POSTROUTING -o eth0 -j マスカレード
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j受け入れる

デフォルトでは、これらのルールは Pi を再起動するとフラッシュされます。それらを永続的にするには、最初に次を実行します。

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

次に、/etc/network/interfacesファイルを編集し、最後までスクロールして追加します。

アップ iptables-restore < /etc/iptables.ipv4.nat

これにより、ブート時にデバイスがアクティブ化されるときにルールがロードされます。

これで、Pi アクセス ポイントの設定はすべて完了しました。テストするには、次のようにして DHCP サーバーを再起動します。

sudo サービス isc-dhcp-server restart

次のコマンドを使用して、構成でアクセス ポイントを手動で有効にします。

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

「不明なドライバー」エラーが発生した場合は、「独自の hostapd」に関するセクションをお読みください。すべてがうまくいけば、ワイヤレス アクセス ポイント (TorSpot) が利用可能な Wi-Fi ホットスポットのリストに表示されます。

別のコンピューターまたはスマートフォンから接続し、hostapd.conf ファイルで指定したパスワードを使用して認証できます。接続すると、インターネットを正常に閲覧できるようになります。

新しいアクセス ポイントをテストしたら、Pi が起動するとすぐに有効になるように設定を固定しましょう。次のコマンドを使用して、hostapd サービスと DHCP サービスを開始します。

sudo サービス hostapd 開始
sudo サービス isc-dhcp-server 開始

次に、次のように init スクリプトを更新します。

sudo update-rc.d hostapd を有効にする
sudo update-rc.d isc-dhcp-server Enable

次のコマンドを使用して Raspberry Pi を再起動します。

sudo シャットダウン -r 今すぐ

Raspberry Pi が再びバックアップされると、新しいアクセス ポイントに接続して通常どおり閲覧できるようになります。

iptable ルール

トリフィアクセス

これで、Raspberry Pi がワイヤレス ホットスポットとして完全に機能するようになりました。ただし、データはまだ匿名化されていません。そこで、 Tor をミックスに加えてみましょう。SSH で Pi に戻り、次のようにTorをインストールします。

sudo apt-get インストールツール

インストールされたら、Tor の設定ファイル/etc/tor/torrcを編集し、先頭に次の行を追加します。

ログ通知ファイル /var/log/tor/notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.12.1
DNSPort 53
DNSListenAddress 192.168.12.1

これらの設定は、アクセス ポイントの IP アドレスをTorに通知し、そこを流れるトラフィックを匿名化するように依頼します。

次に、Wi-Fi アダプター (wlan0) 経由の接続がTor経由でルーティングされるようにルーティング テーブルを変更します。まず、次のコマンドを使用して、既存のリダイレクトと NAT ルールをフラッシュします。

sudo iptables -F
sudo iptables -t nat -F

Pi に SSH 接続できるようにしたいので、次のように SSH のポート 22 の例外を追加します。

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22

次に 2 つのルールを追加します。1 つ目は DNS ルックアップのパススルー ルールで、2 つ目はすべての TCP トラフィックをTorのポート 9040 に送信します。

sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to -ポート9040

以前と同様、これらのルールは次のセッションには引き継がれません。再起動時にそれらをロードするには、以前と同様に次のようにそれらを NAT 保存ファイルに保存するだけです。

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

前のセクションでは、インターフェイスがアクティブ化されたときにこのファイルの内容をロードするように/etc/network/interfacesファイルを構成しました。

これで、Tor サービスを有効にできるようになりました。

sudoサービスの開始

関連するブート スクリプトを次のように更新します。

sudo update-rc.dtor を有効にする

それでおしまい。ここで Pi を再起動します。再びバックアップすると、以前と同様に Pi ホットスポットである TorSpot に接続できるようになります。ただし、以前とは異なり、すべてのトラフィックは匿名のTorネットワーク経由でルーティングされます。

TorSpot に接続されているデバイスからhttps://torproject.orgにアクセスして、これが発生していることを確認できます。このページには、ISP の IP アドレスではない IP アドレスもリストされます。TorSpot に接続されている別のデバイスからこのページにアクセスすると、別のアドレスが表示されます。おめでとうございます。すべてのデバイスで匿名で Web を閲覧できるようになりました。

接続されたデバイス

簡単なヒント

  • Pi にリモート接続しているときにロケール エラーが発生した場合は、/etc/ssh/ssh_configを編集してSendEnv LANG LC_*行をコメントアウトして、ロケールを転送しないようにしてください。
  • tail -f /var/log/syslogコマンドを使用して、すべてのシステム メッセージを監視します。これは、Pi ホットスポットに接続できない場合に便利です。
  • このチュートリアルでは Google の DNS サービスを使用しましたが、OpenDNS や ISP の DNS サーバーなどの別のサービスを/etc/dhcp/dhcpd.confファイルで指定することで使用できます。