2014年7月15日火曜日

Raspberry PiのWiFi設定-DHCPから固定IPアドレスまで最速版

有線のLAN環境がないところでRaspberry PiのWiFiを設定する方法。いろいろ混乱があるようなので、2014年6月20日版Raspbianで最短(当社調べw)の設定手順を最短で書く。

Raspbianが起動している状態で、login: pi, Password: raspberryのデフォルトアカウントでログインしているところからはじめる。

$ sudo bash
# chmod 660 /etc/wpa_suoplicant/wpa_supplicant.comf
# wpa_passphrase SSID KEY >> $* ← SSIDもKEY(パスワード)も、特にダブルクォートなどで囲むことなく、そのまま書く。ハッシュしたほうに、それがKEYの文字として含まれしまい認証エラーになることがあるるようだ。
# vi $* ← 編集する。

内容は、以下のとおり。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="SSID" ←コマンドで指定したSSIDが入っている。
    key_mgmt=WPA-PSK
    proto=WPA2
    pairwise=TKIP CCMP
    group=TKIP CCMP ←ここまでの4行追記
    #psk="4332221111"←コマンドで入力したまま
    psk=9a7cdfea2bbbda47edacc95b2ae7a1c..... ←長いハッシュされた鍵が生成されている  
}
複数のWiFi接続先があれば、上のwpa_passphraseコマンドでのハッシュを含むnetworkエントリ生成から、4行追記を繰り返す。

続いて、/etc/network/interfacesファイルの編集。Raspbianの設定のままではWPA2のWiFiスポットに接続しないので、それをまず直す。
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp ←なぜか"manual"になっているが、素直にdhcpするように直す
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf ←wpa-roamはwpa-confにしておく
iface default inet dhcp
この状態で、
$ sudo ifdown wlan0
$ sudo ifup wlan0
するとDHCPでのアドレス取得がいつまでたっても終わらないので、迷わず上記はやらずにsudo reboot。

WPA2のSSIDと共有鍵さえ間違っていなければ接続できるはず。逆に、いくらやっても接続できないなら、記述を見なおすとか、wpa_passphraseを再度実行するのもよいかもしれない。また、WiFiドングルが2.4GHzまで対応なのか5GHz対応なのかで違ってくるので、2.4GHzまでの安いものを使うなら、WiFiスポットが2.4GHzでの接続に対応するよう設定しておく。記述は正しいと考えれれるのにつながらないならWiFiルータの再起動で解決することもある。

ここで、/etc/resolv.confの自動生成をするパッケージresolvconfを入れる。
$ sudo apt-get install resolvconf
$ sudo service resolvconf start
WiFiでDHCPにより接続できているはずなので、apt-getなども問題なくうまくいくはず。だめなら設定を見なおすとかエラーメッセージをよくみて考えるなどして解決する。ときには、WiFiルータ側を再起動する必要があるかもしれない。特に混雑しているAPは、新たに一台追加する余裕がないときがあるので、ルータ再起動でいちはやく接続を勝ち取るのは有効な戦略。

最後に、固定IPの設定に変更する。/etc/network/interfacesをそのように書きなおす。
auto lo
iface lo inet loopback
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static ←固定IP設定を宣言して、以下パラメータを入れる。
address 192.168.1.xxx ←使う予定の固定IPアドレスを書く
netmask 255.255.255.0 ←接続するネットワークの設定に合わせる
gateway 192.168.1.1 ←default routeを決めるので、ネットワークの設定に合わせる
dns-nameservers 192.168.1.1 ←/etc/resolv.confの設定にかかわる。ここではWiFiルータを指しているがいつまでも安全とはいえないので、ひとまず信頼できるDNSを書いておくのは悪くない(が、8.8.8.8は愚の骨頂だと思う)。
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
「address」から「dns-nameservers」までの追記が正しければ、以下の手順でうまくいく。
$ sudo ifdown wlan0
$ sudo ifup wlan0
このときに、「can't read /etc/network/interfaces」などと出たら、そのファイルの記述が誤っていないか確認すべき。

あとは再起動しようがなにしようがWiFiで固定IPの設定が維持されるはず。