Raspberry Pi をTorルータにするメモ
「onion pi」や「SafePlug」など海外ではお手軽にTorを使うことのできるTorルータが販売されているようですが日本では、送料や到着までの時間など購入のハードルが高いので自作をしてみました。そのときのメモです。
今回は「RPi – Raspberry Pi で Tor ルーター ( Onion Pi )を構築する方法」をかなり参考にさせていただきました。netbuffaloさんありがとうございます。
Raspberry Pi初心者!という方には同じく、netbuffaloさんの「RPi – Raspberry Pi ファースト・インプレッション + 押さえておきたい初期設定」を参考にされるといいと思います。
ネットワーク環境は下記の通りです。
自宅ネットワーク 192.168.0.0/24
Torルータネットワーク 10.0.0.0/24
まずはupdateとupgradeを済ませておきます。
sudo apt-get update
sudo apt-get upgrade
次にRaspberry Piの無線LANインターフェイスにIPアドレスとネットマスクの設定
sudo ifconfig wlan0 10.0.0.1 netmask 255.255.255.0 up
ここで設定したアドレスがクライアントとして接続したコンピュータのゲートウェイとなります。
/etc/network/interfacesを編集。
sudo vi /etc/network/interfaces
下記のようにアドレスを設定
iface wlan0 inet static
address 10.0.0.1
netmask 255.255.0.0
この際に先に記述されている箇所を下記のようにコメントアウトしておきます。
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
【DHCPのインストール】
接続してきたクライアントにIPアドレスを貸し出す為にDHCPサーバをインストールして、自動起動を停止させます。
sudo apt-get install isc-dhcp-server
sudo update-rc.d isc-dhcp-server disable
DHCPでIPアドレスを貸し出す側のインターフェイスの指定するために下記ファイルを編集。
sudo vi /etc/default/isc-dhcp-server
インターフェイスにwlanを指定するため下記記述へと編集。
INTERFACES=”wlan0″
次に設定ファイルを編集します。
sudo vi /etc/dhcp/dhcpd.conf
設定ファイル内に下記の記述を追加します。
ここは自身の環境に合わせて設定値を変更してください。
ping-check true;
subnet 10.0.0.0 netmask 255.255.255.0 {
option routers 10.0.0.1;
option subnet-mask 255.255.255.0;
option domain-name “local”;
option domain-name-servers 8.8.8.8,8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
range 10.0.0.2 10.0.0.254;
}
「option routers」は、無線LANインターフェイス(wlan0)のIPアドレスを設定。
「option subnet-mask」は、同じくサブネットマスクを設定。
「options domain-name」は、自身の好きなドメイン名を設定。
「option domain-name-servers」は、使用するDNSのアドレス。
ここではGoogle DNSを設定しています。
「default-lease-time」は、標準のIPアドレスの割り当て時間。クライアントがDHCPREQUESTを出さない場合はこの貸し出し時間となります。
「max-lease-time」は、最大のIPアドレスの割り当て時間。クライアントがDHCPREQUESTを出した場合でもこの時間を超えることはできません。
「range」は、クライアントにIPアドレスを貸し出す際の範囲。
以上、準備ができたらDHCPサーバを起動します。
sudo /etc/init.d/isc-dhcp-server start
【hostapdのインストール】
次に、無線LANインターフェイスをアクセスポイント化するためにhostapdをインストールして、自動起動を無効化します。
sudo apt-get install hostapd
sudo update-rc.d hostapd disable
次に設定ファイルの作成です。
sudo vi /etc/hostapd/hostapd.conf
下記、記述を追加します。
interface=wlan0
ssid=好きなSSIDを指定
hw_mode=g
channel=3
wpa=2
wpa_passphrase=接続の際のパスフレーズを指定
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
WN-G300UA(Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter)では、hostapdを動作させることができないので「Realtek Semiconductor」社のサイトから最新のドライバをダウンロードしインストールします。ファイル名は「RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911」です。
(WLI-UC-GNMではapt-getで入るhostapdで問題なく動作させることができました。)
ダウンロードしたファイルを展開し、make、既存の物との置き換えをします。
unzip RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip
cd RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/
cd wpa_supplicant_hostapd/
tar zxvf wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz
cd wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/
cd hostapd/
make
sudo cp ./hostapd /usr/sbin/
sudo cp ./hostapd_cli /usr/sbin/
これで無線LANインターフェイスがアクセスポイントとして動作するようになります。
sudo hostapd /etc/hostapd/hostapd.conf
上記コマンドを実行した後に「hostapd.conf」のSSIDで設定したものがWiFiネットワークを検索したときに表示されれば問題なく動作しています。
(上記コマンドではフォアグラウンドで動作するので同じターミナルで作業を続ける場合はバックグラウンドで動作させてください。もしくは別のターミナルで作業を続けてください。)
【Torのインストール】
次にTorのインストールして、自動起動を停止します。
sudo apt-get install tor
sudo update-rc.d tor disable
インストールが完了したら、設定ファイルを編集します。
sudo vi /etc/tor/torrc
設定ファイル内に下記の記述を追加します。
ここは自身の環境に合わせて設定値を変更してください。
「TransListenAddress」と「DNSListenAddress」をwlan0のアドレスに設定してください。「TransPort」は任意のものでも問題ありません。
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9090
TransListenAddress 10.0.0.1
DNSPort 53
DNSListenAddress 10.0.0.1
次にTorのログファイルを作成します。
sudo touch /var/log/tor/notices.log
sudo chown debian-tor /var/log/tor/notices.log
sudo chmod 644 /var/log/tor/notices.log
上記設定ができたら設定を反映させるためTorサービスを再起動します。
sudo /etc/init.d/tor restart
【iptablesの設定】
次にiptabelsを使って無線LANインターフェイスで受信したDNS通信をwlan0のUDP 53番ポートへ、TCP通信をwlan0のTCP 9090へリダイレクトするように設定します。
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-ports 9090
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state –state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
これでRaspberry Pi を Torルータにすること自体は完了です。
試しに接続をしてみてTor経由の通信が行なわれているかを「確認くん」などで確認してみるといいでしょう。
最後の仕上げとして各種の自動起動設定などを行ないます。
【自動起動などの設定】
iptablesの設定を起動時に読み込むようにするため行なった設定をファイルに出力します。
sudo sh -c “iptables-save > /etc/iptables.tor.ap”
hostapdの起動スクリプトを編集します。
sudo vi /etc/init.d/hostapd
設定を行なった設定ファイルのパスを「DAEMON_CONF」に追加します。
DAEMON_CONF=/etc/hostapd/hostapd.conf
最後に「rc.local」を編集します。
sudo vi /etc/rc.local
下記内容を追加します。
service isc-dhcp-server start
service hostapd start
service tor start
iptables-restore < /etc/iptables.tor.ap
これで再起動をしてもRaspberry piがTorルータとして動作するはずです。