前回のブログで、WiFi USB アダプタとして利用した BUFFALO WLI-UC-GNM がとにかく熱い。Raspberry Pi も熱くなって、直接つなげたまま長時間通電するのはちょっとこわい。100均でUSB延長ケーブルを買ってきてつなげれば熱が本体に及ぶことはないのだろうけれど、スマートじゃない。
そこで発熱の少ない PLANEX GW-USNano2 に変更してみました。あきばお~の店頭では679円だったのですが、通販だとちょっとお高いようですね。と言っても1000円前後で買えます。
手順はほぼ同じですが、apt-getでインストールできるhostapdが、PLANEX GW-USNano2 に対応していないので、ソース一式を github から持ってきてコンパイルする必要があります。
PLANEX GW-USNano2 用手順(俺様用)
・Raspberri Pi のダウンロードページから、Raspbian "wheezy"をダウンロードします。
執筆時点の最新版は 2013-07-26-wheezy-raspbian.zip
・2013-07-26-wheezy-raspbian.zipを解凍します。
2013-07-26-wheezy-raspbian.imgが解凍されます。
・手持ちの Windows PC で Win32DiskImager.exe を用い、2013-07-26-wheezy-raspbian.img をSDカードに書き込みます。
※うちの環境では最新版は動かず、v0.7が正常動作しました。
・Raspberry Pi にSDカードを挿入しケーブルを接続します。
まず、以下を挿入または接続します。
2013-07-26-wheezy-raspbian.imgを書き込んだSDカード
HDMIケーブル
LANケーブル
USB用WiFiアダプタ
USBキーボード
最後にmicroUSBを接続し、電源を入れます。
・しばらくして、テレビの画面に以下のような表示が現れれば、SDカードへのイメージ書込みは成功です。
・まず最初に、使用しているSDカードの全領域を確保するために、1を選択します。しばらくして、下記の表示が現れれば成功です。
・言語設定を行うため、1を選択します。
・画面をスクロールし、下記三つの言語を選択し OK を押します。
en_GB.UTF-8
ja_JP.EUC-JP
ja_JP.UTF-8
・デフォルトの言語は、ja_JP.UTF-8を選択し、OK を押します。
・Geographic area から Asia を選択し、Time zone として、Tokyo を選択します。
・新しいホスト名を設定します。下図では onionpi としています。
・グラフィックに割り当てるメモリの設定を行うため、3を設定します。
・トップ画面で Finish を選択し、再起動を促されるので、再起動します。
・IPアドレスを確認します。
再起動が終わり、ログインプロンプトがでたとき、その上に、IPアドレスが表示されています。
[ ok ] Starting system message bus: dbus. [ ok ] starting NTP server: ntpd. [ ok ] Starting OpenBSD Secure Shell server: sshd. My IP address is 192.168.xxx.xxx Debian GNU/Linux 7 onionpi tty1 onionpi login: _ |
・ログインします。
ここからはテレビの画面は使いません。別のPCで作業を行います。
テレビの画面に表示されたIPアドレスへPCからTeraTerm等でSSHで接続します。通常のパスワード認証です。
ID : pi
Password : raspberry
・rootパスワードを作成します。
pi@onionpi ~ $ sudo passwd root 新しいUNIXパスワードを入力してください: 新しいUNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました |
・rootになります。
pi@onionpi ~ $ su - パスワード: |
・ユーザー onion を作成し、パスワードを設定します。
root@onionpi:~# useradd -m -s /bin/bash onion root@onionpi:~# passwd onion 新しいUNIXパスワードを入力してください: 新しいUNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました |
・rootログイン禁止、パスワード認証禁止、チャレンジレスポンス認証を許可します。
root@onionpi:~# cp -ip /etc/ssh/sshd_config /etc/ssh/sshd_config.org root@onionpi:~# cat /etc/ssh/sshd_config.org | sed -e 's/PermitRootLogin yes/PermitRootLogin no/' | sed -e 's/#PasswordAuthentication yes/PasswordAuthentication no/' | sed -e 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' > /etc/ssh/sshd_config root@onionpi:~# diff /etc/ssh/sshd_config /etc/ssh/sshd_config.org 27c27 < PermitRootLogin no --- > PermitRootLogin yes 48c48 < ChallengeResponseAuthentication yes --- > ChallengeResponseAuthentication no 51c51 < PasswordAuthentication no --- > #PasswordAuthentication yes |
・sshdを再起動します。
root@onionpi:~# service ssh restart [ ok ] Restarting OpenBSD Secure Shell server: sshd. |
・キーボード設定を変更します。
root@onionpi:~# cp -ip /etc/default/keyboard /etc/default/keyboard.org root@onionpi:~# vi /etc/default/keyboard |
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page. XKBMODEL="jp106" |
・ ll ( ls -l ) を利用可能にします。
root@onionpi:~# cd root@onionpi:~# vi .bashrc |
下記行先頭の # を外す # alias ll='ls $LS_OPTIONS -l' |
root@onionpi:~# vi /home/onion/.bashrc |
下記行先頭の # を外す #alias ll='ls -l' |
・仮想端末の一部を無効化します。
root@onionpi:~# cp -ip /etc/inittab /etc/inittab.org root@onionpi:~# vi /etc/inittab |
※下記記述行をコメントアウト 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 |
root@onionpi:~# diff /etc/inittab /etc/inittab.org 55,59c55,59 < #2:23:respawn:/sbin/getty 38400 tty2 < #3:23:respawn:/sbin/getty 38400 tty3 < #4:23:respawn:/sbin/getty 38400 tty4 < #5:23:respawn:/sbin/getty 38400 tty5 < #6:23:respawn:/sbin/getty 38400 tty6 --- > 2:23:respawn:/sbin/getty 38400 tty2 > 3:23:respawn:/sbin/getty 38400 tty3 > 4:23:respawn:/sbin/getty 38400 tty4 > 5:23:respawn:/sbin/getty 38400 tty5 > 6:23:respawn:/sbin/getty 38400 tty6 |
・パフォーマンス(メモリ)調整
root@onionpi:~# cp -ip /etc/sysctl.conf /etc/sysctl.conf.org root@onionpi:~# vi /etc/sysctl.conf |
28行目を有効にします。 net.ipv4.ip_forward=1 最下行に追記 # Performance tuning vm.swappiness = 0 vm.dirty_expire_centisecs = 48000 vm.dirty_writeback_centisecs = 24000 |
root@onionpi:~# diff /etc/sysctl.conf /etc/sysctl.conf.org 28c28 < net.ipv4.ip_forward=1 --- > #net.ipv4.ip_forward=1 65,68d64 < # Performance tuning < vm.swappiness = 0 < vm.dirty_expire_centisecs = 48000 < vm.dirty_writeback_centisecs = 24000 |
・fstab変更 /tmp等を tmpfsへ
root@onionpi:~# cp -ip /etc/fstab /etc/fstab.org root@onionpi:~# vi /etc/fstab |
下記を追記 tmpfs /tmp tmpfs defaults,size=16m 0 0 tmpfs /var/tmp tmpfs defaults,size=8m 0 0 |
root@onionpi:~# diff /etc/fstab /etc/fstab.org 5,6d4 < tmpfs /tmp tmpfs defaults,size=16m 0 0 < tmpfs /var/tmp tmpfs defaults,size=8m 0 0 |
・ファームウェアバージョン確認
root@onionpi:~# /opt/vc/bin/vcgencmd version Jun 17 2013 20:43:10 Copyright (c) 2012 Broadcom version d380dde43fe729f043befb5cf775f99e54586cde (clean) (release) |
・ファームウェアバージョンアップ
root@onionpi:~# rpi-update ・・・(しばらく待つ)・・・ *** Running ldconfig *** Storing current firmware revision *** Syncing changes to disk *** If no errors appeared, your firmware was successfully setup *** A reboot is needed to activate the new firmware |
・ntpdドリフトファイルを/tmpへ配置します。
root@onionpi:~# cp -ip /etc/ntp.conf /etc/ntp.conf.org root@onionpi:~# cat /etc/ntp.conf.org | sed -e 's/\/var\/lib\/ntp\/ntp.drift/\/tmp\/ntp.drift/' > /etc/ntp.conf root@onionpi:~# diff /etc/ntp.conf /etc/ntp.conf.org 3c3 < driftfile /tmp/ntp.drift --- > driftfile /var/lib/ntp/ntp.drift |
・再起動します。
root@onionpi:~# reboot |
・再起動後、新しいユーザーでログインします。
チャレンジレスポンス認証になっていることに注意
ID : onion
Password :
・rootになります。
onion@onionpi ~ $ su - パスワード: |
・ファームウェアのバージョンが上がっているか確認
root@onionpi:~# /opt/vc/bin/vcgencmd version Aug 20 2013 00:35:49 Copyright (c) 2012 Broadcom version 18e3e93a3ae0765ca25e4fe511f59f14396afcaa (clean) (release) |
・アカウント名 pi をロックします。
root@onionpi:~# passwd -l pi passwd: パスワード期限切れ情報を変更しました |
・パッケージ管理システムの最新パッケージリストをダウンロードします。
root@onionpi:~# apt-get update ・・・(しばらく待つ)・・・ パッケージリストを読み込んでいます... 完了 |
・アップデート可能なパッケージをアップデートします。
root@onionpi:~# apt-get upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージはアップグレードされます: gnupg gpgv libgcrypt11 linux-libc-dev アップグレード: 4 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 3,192 kB のアーカイブを取得する必要があります。 この操作後に追加で 5,120 B のディスク容量が消費されます。 続行しますか [Y/n]? Y ・・・(しばらく待つ)・・・ (データベースを読み込んでいます ... 現在 62264 個のファイルとディレクトリがインストールされています。) linux-libc-dev:armhf 3.2.41-2+rpi1 を (.../linux-libc-dev_3.2.46-1+rpi1_armhf.deb で) 置換するための準備をしています ... linux-libc-dev:armhf を展開し、置換しています... libgcrypt11:armhf (1.5.0-5+deb7u1) を設定しています ... linux-libc-dev:armhf (3.2.46-1+rpi1) を設定しています ... |
・ DHCPサーバーをインストールします。
root@onionpi:~# apt-get install isc-dhcp-server パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 提案パッケージ: isc-dhcp-server-ldap 以下のパッケージが新たにインストールされます: isc-dhcp-server アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 887 kB のアーカイブを取得する必要があります。 この操作後に追加で 1,875 kB のディスク容量が消費されます。 ・・・(しばらく待つ)・・・ isc-dhcp-server (4.2.2.dfsg.1-5+deb70u6) を設定しています ... Generating /etc/default/isc-dhcp-server... [FAIL] Starting ISC DHCP server: dhcpd[....] check syslog for diagnostics. ... failed! failed! invoke-rc.d: initscript isc-dhcp-server, action "start" failed. |
・ hostapdをインストールします
※apt-getでインストールされるものではPLANEX GW-USNano2に対応していません。
root@onionpi:~# wget https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz --2013-08-20 19:16:30-- https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz github.com (github.com) をDNSに問いあわせています... 204.232.175.90 github.com (github.com)|204.232.175.90|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 Found 場所: https://codeload.github.com/jenssegers/RTL8188-hostapd/tar.gz/v1.1 [続く] --2013-08-20 19:16:37-- https://codeload.github.com/jenssegers/RTL8188-hostapd/tar.gz/v1.1 codeload.github.com (codeload.github.com) をDNSに問いあわせています... 192.30.252.146 codeload.github.com (codeload.github.com)|192.30.252.146|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 特定できません [application/x-gzip] `v1.1.tar.gz' に保存中 [ <=> ] 1,939,585 630K/s 時間 3.0s 2013-08-20 19:16:48 (630 KB/s) - `v1.1.tar.gz' へ保存終了 [1939585] root@onionpi:~/RTL8188-hostapd-1.1/hostapd# make install |
・ WiFi向けのDHCP設定を行います。
root@onionpi:~# cp -ip /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.org root@onionpi:~# vi /etc/dhcp/dhcpd.conf |
13,14行目をコメントアウトします。 #option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org; 21行目を有効にします。 authoritative; 最下行に追記します。 subnet 192.168.42.0 netmask 255.255.255.0 { range 192.168.42.10 192.168.42.50; option broadcast-address 192.168.42.255; option routers 192.168.42.1; default-lease-time 600; max-lease-time 7200; option domain-name "local"; option domain-name-servers 8.8.8.8, 8.8.4.4; } |
root@onionpi:~# diff /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.org 13,14c13,14 < #option domain-name "example.org"; < #option domain-name-servers ns1.example.org, ns2.example.org; --- > option domain-name "example.org"; > option domain-name-servers ns1.example.org, ns2.example.org; 21c21 < authoritative; --- > #authoritative; 108,116d107 < subnet 192.168.42.0 netmask 255.255.255.0 { < range 192.168.42.10 192.168.42.50; < option broadcast-address 192.168.42.255; < option routers 192.168.42.1; < default-lease-time 600; < max-lease-time 7200; < option domain-name "local"; < option domain-name-servers 8.8.8.8, 8.8.4.4; < } root@onionpi:~# cp -ip /etc/default/isc-dhcp-server /etc/default/isc-dhcp-server.org root@onionpi:~# vi /etc/default/isc-dhcp-server |
21行目を下記にします。 INTERFACES="wlan0" |
root@onionpi:~# diff /etc/default/isc-dhcp-server /etc/default/isc-dhcp-server.org 21c21 < INTERFACES="wlan0" --- > INTERFACES="" |
・ネットワークインターフェースの設定を行います。
root@onionpi:~# cp -ip /etc/network/interfaces /etc/network/interfaces.org root@onionpi:~# vi /etc/network/interfaces |
auto lo
iface lo inet loopback allow-hotplug wlan0 iface wlan0 inet static up iptables-restore < /etc/iptables.ipv4.nat |
・wlan0の動作確認をします。
root@onionpi:~# ifconfig wlan0 192.168.42.1 root@onionpi:~# ifconfig wlan0 wlan0 Link encap:イーサネット ハードウェアアドレス 10:6f:3f:xx:xx:xx inetアドレス:192.168.42.1 ブロードキャスト:192.168.42.255 マスク:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:0 (0.0 B) TXバイト:0 (0.0 B) |
・WiFiルーターとしての設定を行います。
※ PLANEX GW-USNano2 を基に設定しています。
ssidやwpa_passphraseはお好きな文字列を指定してください。
決められない場合は、SSIDはMACアドレスをもとに、
パスキーはランダムに生成した64桁の16進数を設定するのもよいでしょう。
※SSIDなどを決められない場合の参考 root@onionpi:~# echo ssid=`ifconfig wlan0 | grep 'wlan0' | awk '{print$5}' | tr -d : | tr "[:lower:]" "[:upper:]"` ssid=123456789ABC root@onionpi:~# echo wpa_psk=`openssl rand -hex 32` wpa_psk=1234567890abcdef0123456789abcdef0123456789abcdef0123456789abcdef |
root@onionpi:~# cp -ip /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.org root@onionpi:~# vi /etc/hostapd/hostapd.conf |
interface=wlan0 driver=rtl871xdrv ssid=【任意のSSID】 country_code=JP ieee80211d=1 hw_mode=g channel=1 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 ieee80211n=1 wpa=2 ## wpa_passphrase または wpa_psk のいずれかを使用 #wpa_passphrase=【8~63文字の英数記号の場合】 #wpa_psk=【64桁の16進数の場合】 ## wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP wmm_enabled=1 # Bandwidth 20MHz #ht_capab=[SHORT-GI-20][SMPS-STATIC][MAX-AMSDU-7935] # Bandwidth 40MHz #ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][SMPS-STATIC][MAX-AMSDU-7935][DSSS_CCK-40] |
・iptable の設定を行います。
root@onionpi:~# vi /tmp/iptables.sh |
iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53 iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040 iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT |
root@onionpi:~# sh /tmp/iptables.sh & root@onionpi:~# iptables -t nat -S -P PREROUTING ACCEPT -P INPUT ACCEPT -P OUTPUT ACCEPT -P POSTROUTING ACCEPT -A PREROUTING -i wlan0 -p udp -m udp --dport 53 -j REDIRECT --to-ports 53 -A PREROUTING -i wlan0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040 -A POSTROUTING -o eth0 -j MASQUERADE root@onionpi:~# iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i wlan0 -o eth0 -j ACCEPT root@onionpi:~# iptables-save > /etc/iptables.ipv4.nat root@onionpi:~# ll /etc/iptables.ipv4.nat -rw-r--r-- 1 root root 727 8月 20 19:56 /etc/iptables.ipv4.nat root@onionpi:~# cat /etc/iptables.ipv4.nat # Generated by iptables-save v1.4.14 on Tue Aug 20 19:56:52 2013 *nat :PREROUTING ACCEPT [4:256] :INPUT ACCEPT [4:256] :OUTPUT ACCEPT [1:76] :POSTROUTING ACCEPT [0:0] -A PREROUTING -i wlan0 -p udp -m udp --dport 53 -j REDIRECT --to-ports 53 -A PREROUTING -i wlan0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040 -A POSTROUTING -o eth0 -j MASQUERADE COMMIT # Completed on Tue Aug 20 19:56:52 2013 # Generated by iptables-save v1.4.14 on Tue Aug 20 19:56:52 2013 *filter :INPUT ACCEPT [66:3980] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [95:13468] -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i wlan0 -o eth0 -j ACCEPT COMMIT # Completed on Tue Aug 20 19:56:52 2013 |
・WiFiルーター起動
root@onionpi:~# service hostapd start [ ok ] Starting advanced IEEE 802.11 management: hostapd. root@onionpi:~# service isc-dhcp-server start [ ok ] Starting ISC DHCP server: dhcpd. root@onionpi:~# service hostapd status [ ok ] hostapd is running. root@onionpi:~# service isc-dhcp-server status Status of ISC DHCP server: dhcpd is running. root@onionpi:~# update-rc.d hostapd defaults update-rc.d: using dependency based boot sequencing root@onionpi:~# update-rc.d hostapd enable update-rc.d: using dependency based boot sequencing root@onionpi:~# update-rc.d isc-dhcp-server enable update-rc.d: using dependency based boot sequencing |
・不要ファイル削除
root@onionpi:~# rm /tmp/iptables.sh root@onionpi:~# ll /tmp/iptables.sh ls: /tmp/iptables.sh にアクセスできません: そのようなファイルやディレクトリはありません |
・Torインストール
root@onionpi:~# apt-get install tor パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の特別パッケージがインストールされます: tor-geoipdb torsocks 提案パッケージ: mixmaster xul-ext-torbutton socat tor-arm polipo privoxy apparmor-utils 以下のパッケージが新たにインストールされます: tor tor-geoipdb torsocks アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。 2,694 kB のアーカイブを取得する必要があります。 この操作後に追加で 7,386 kB のディスク容量が消費されます。 続行しますか [Y/n]? Y ・・・(しばらく待つ)・・・ tor (0.2.3.25-1) を設定しています ... [ ok ] Starting tor daemon...done. torsocks (1.2-3) を設定しています ... tor-geoipdb (0.2.3.25-1) を設定しています ... root@onionpi:~# cp -ip /etc/tor/torrc /etc/tor/torrc.org |
ファイル先頭に下記を追加 Log notice file /var/log/tor/notices.log VirtualAddrNetwork 10.192.0.0/10 AutomapHostsSuffixes .onion,.exit AutomapHostsOnResolve 1 TransPort 9040 TransListenAddress 192.168.42.1 DNSPort 53 DNSListenAddress 192.168.42.1 |
root@onionpi:~# diff /etc/tor/torrc /etc/tor/torrc.org 1,8d0 < Log notice file /var/log/tor/notices.log < VirtualAddrNetwork 10.192.0.0/10 < AutomapHostsSuffixes .onion,.exit < AutomapHostsOnResolve 1 < TransPort 9040 < TransListenAddress 192.168.42.1 < DNSPort 53 < DNSListenAddress 192.168.42.1 |
・Tor ログファイル設定
root@onionpi:~# touch /var/log/tor/notices.log root@onionpi:~# chown debian-tor /var/log/tor/notices.log root@onionpi:~# chmod 644 /var/log/tor/notices.log root@onionpi:~# ls -l /var/log/tor 合計 4 -rw-r--r-- 1 debian-tor adm 2342 8月 20 20:09 log -rw-r--r-- 1 debian-tor adm 0 8月 20 20:11 notices.log |
・Tor起動
root@onionpi:~# service tor restart [ ok ] Stopping tor daemon...done. [ ok ] Starting tor daemon...done. root@onionpi:~# service tor status [ ok ] tor is running. root@onionpi:~# update-rc.d tor enable update-rc.d: using dependency based boot sequencing |
・Raspberry Pi 本体からキーボードを外す
・システム再起動
root@onionpi:~# reboot |
・確認
自分のIPアドレスを確認。http://www.ipchicken.com/
設定したSSID、KEYでPCやスマホ等からWiFiでつながるか?
WiFi接続後、もう一度IPアドレスを確認し先ほどとは異なっている事。
多くのTorの出口ノードのホスト名はtorの文字があるので参考にするとよい。
参考:Onion Pi