Onion-PiをRaspberry Piにセットアップ(失敗)

Hack a Dayで紹介されていたAdafruitsの記事に従ってOnion-Piをセットアップしてみようと思い試してみました。その際の備忘録です。結論から言うとTorにたどり着く前に失敗です。

ハードウェアは Raspberry Pi モデルBの256MB版とバッファロー WLI-UC-GNMの組み合わせです。RasPiの方は512MB版も持っているので256MB版はそろそろ何か専用機にしてしまおうかな・・・と思っていたところにOnion-Piの記事が出ていたので、試してみようと思った次第です。(別に怪しいことをするわけじゃないんですが・・・・どんな挙動をするのか見てみたかったんです^^;)

WLI-UC-GNMはRT3070チップ搭載の安価な11n対応のUSB無線LANアダプタです。今回は、改めてSDカードを作るところからスタートです。

※赤文字なのは失敗の原因だからです。

1.Raspbian Wheezyをダウンロード

http://www.raspberrypi.org/downloads からRaspbian Wheezyをダウンロードし、

$ sha1sum 2013-05-25-wheezy-raspbian.zip
131f2810b1871a032dd6d1482dfba10964b43bd2  2013-05-25-wheezy-raspbian.zip

として正しくダウンロードできていることを確認する

2.ダウンロードしたWheezyを展開し、4GB以上のSDカードに書き込む

$ unzip 2013-05-25-wheezy-raspbian.zip
$ sudo dd if=2013-05-25-wheezy-raspbian.img of=/dev/sde bs=1M
$ sync

3.SDカードを取り出し、Raspberry Piに装着して起動する

今回はHDMI経由でモニタに接続して起動した。
起動すると、Raspi-Configが立ち上がるので、以下の作業を実施。

  • ファイルシステムの拡張(Expand Filesystem)
  • パスワードの変更(Change User Password)
    パスワードは実験用のものを付与した
  • オーバースキャンの許可(Advanced-Option → Overscan)
  • SSHログインの許可(Advanced-Option → SSH)
  • タイムゾーンの変更(Internationalisation Options → Change Timezone)
    Asia → Tokyo に設定
    ※タイムゾーンの設定をすると後でhostapdなどで挙動が怪しい感じがする

設定後、再起動する。以降はHDMIで出力される起動時画面のIPアドレスを参考に、SSHでログインして作業する。

4.Raspberry-Piを無線LANのアクセスポイントとして設定

Adafruitのこの記述を参考に実施

(1) hostapdとisc-dhcp-serverをインストールする。

$ sudo apt-get install hostapd isc-dhcp-server

/etc/dhcp/dhcpd.conf を編集する。

$ sudo nano /etc/dhcp/dhcpd.conf

(2) DHCPサーバの設定を行う

以下の行をコメントアウトする(下記は修正前)

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

下記の行の3行目のauthoritative; のコメントアウトを外す(下記は修正前)

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#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;
}

次に、/etc/default/isc-dhcp-server を編集する

$ sudo nano /etc/default/isc-dhcp-server

対象とする interface を指定するため、「INTERFACES=””」を探して、「INTERFACES=”wlan0″」に修正する。

(3) wlan0のIPアドレスを設定する

$ sudo ifdown wlan0
$ sudo nano /etc/network/interfaces

で以下の内容を /etc/network/interfaces に対して修正する。

  • 「auto wlan0」で始まる行をコメントアウトする
  • 以下の行を「allow hotplug wlan0」の後に書き足す
    iface wlan0 inet static
     address 192.168.42.1
     netmask 255.255.255.0
  • そこから後ろの行はコメントアウトする

修正後のファイルはこんな感じ

auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet static
 address 192.168.42.1
 netmask 255.255.255.0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp

(4) とりあえず wlan0 を起動する

$ sudo ifconfig wlan0 192.168.42.1

(5) アクセスポイントとしての設定を行う

$ sudo nano /etc/hostapd/hostapd.conf

として新規のファイル作成を行う。内容は、

interface=wlan0
driver=rtl871xdrv
ssid=Pi_AP
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Raspberry
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

2行目の driver の行が気になる・・・・が、とりあえずこのまま進んでみます。

次に、/etc/default/hostapd に設定ファイルの在り処を記述する。
/etc/default/hostapd を編集し、「DAEMON_CONF=””」と言う箇所を「DAEMON_CONF=”/etc/hostapd/hostapd.conf”」に修正する。

(6) IPパケット転送の設定を行う

$ sudo nano /etc/sysctl.conf

で /etc/sysctl.conf を開き、最後に以下の記述を追加する。

net.ipv4.ip_forward=1

これで起動時にIP転送が有効となる。

(7) ネットワーク転送の設定

以下のコマンドを実行する。

$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ 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

結果を以下の方法で確認する。

$ sudo iptables -t nat -S
$ sudo iptables -S

上記設定を起動時に行うため、設定を保存する。

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

起動時に反映させるため、/etc/network/intefaces の最後に以下の記述を追加する

up iptables-restore < /etc/iptables.ipv4.nat

(8) hostapdをアップデートする

以下の手順で hostapd をアップデートする

$ wget http://www.adafruit.com/downloads/adafruit_hostapd.zip 
$ unzip adafruit_hostapd.zip 
$ sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.ORIG 
$ sudo mv hostapd /usr/sbin
$ sudo chmod 755 /usr/sbin/hostapd

(9) 起動テスト

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

うーん、やっぱりドライバが違うとのこと。いろいろあたってみて、わずかに「rt2x00で動いた」と言う情報をみかけるので「rt2800usb」「rt2x00usb」「rt2800」「rt2x00」「nl80211(これはAtheros用のようだ)」などいろいろ試してみたけどダメ。

探しているうちに見つかったのが、参考の3番目(AP-mode Howto From Rt2x00Wiki)の冒頭の「This is a short guide to setting up AP-mode on rt2x00 chips. Note that this will not work with Ralink’s USB chips because we don’t know how to get status messages (ACK/FAIL) for sent packets.」という記述。

・・・・USB版のRalinkチップのアダプタはダメって書いてある・・・orz

というわけでOnion-Piどころかhostapdの時点で諦めました。またの機会にということで。

参考

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)