レオンハルトジャパン公式BLOG

技術的な情報を公開するスペースです。

宇宙一わかりにくいラズパイ入門(仮称)②

宇宙一わかりにくいラズパイ入門(仮称)①の続きです。
宇宙一わかりにくいラズパイ入門(仮称)②では、無線LAN設定をしてインターネット接続までやってしまうよ!

宇宙一わかりにくいラズパイ入門(仮称)の趣旨

Raspberry Pi2 Model B に Raspbian(Jessie)をインストールして「IoT×Blockchain までやってしまうよ!」な企画を開始しました。はっきり言って「超絶わかりにくい」ので良質な書籍やブログを読むことをオススメします。皆様の貴重なお時間をムダにするのは本懐ではありません。興味がある方だけ読んでみてください(にっこり)

無線LANアダプター(WLI-UC-GNM2)の確認

CUIで進めますね。GUIの方は[Ctrl] + [Alt] + [F1]~[F5] を押しましょう。CUIになります。

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.1.17-v7+ #838 SMP Tue Feb 9 13:15:09 GMT 2016 armv7l GNU/Linux # OS情報  

pi@raspberrypi:~ $ lsb_release -d
Description:    Raspbian GNU/Linux 8.0 (jessie) # OSは Rasbian-Jessie

pi@raspberrypi:~ $ lsusb
Bus 001 Device 005: ID 0411:01ee BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070] # WLI-UC-GNM2 を確認
Bus 001 Device 007: ID 06cb:0009 Synaptics, Inc. Composite TouchPad and TrackPoint
Bus 001 Device 006: ID 04b3:3019 IBM Corp.
Bus 001 Device 004: ID 04b3:3016 IBM Corp. UltraNav Keyboard Hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

無線LAN関係のファイルを確認

2つのファイルです。

  • /etc/network/interfaces
  • /etc/wpa_supplicant/wpa_supplicant.conf

interfaces デフォルト値と設定変更

大切なことはオリジナルファイルをコピー(cp)してから設定変更すること。そして確認作業(diff)をすることです。面倒かもしれないけど、これは君たちの将来のためのアドバイスです!

pi@raspberrypi:~ $ sudo cp -p /etc/network/interfaces /etc/network/interfaces.old
pi@raspberrypi:~ $ sudo nano /etc/network/interfaces

auto lo
iface lo inet loopback

iface eth0 inet manual # 有線LAN設定部分

allow-hotplug wlan0 # 無線LAN(wlan0)の設定部分
iface wlan0 inet manual # manual を dhcp に変更
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1 # 無線LAN(wlan1)の設定部分
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

[Ctrl] + [o] で上書き、[Ctrl] + [x] で終了
pi@raspberrypi:~ $ diff /etc/network/interfaces /etc/network/interfaces.old

< iface wlan0 inet dhcp (変更後)
---
> iface wlan0 inet manual(変更前)

wpa_supplicant.conf デフォルト値と設定変更

ここはとても大切。しっかりやりましょう。皆さんのルータが WPA2-PSK(AES)の場合を想定しています。SSID をステルスモードにしていてもOK。

pi@raspberrypi:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

pi@raspberrypi:~ $ sudo cp -p /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.old
pi@raspberrypi:~ $ sudo su - # 管理者権限(root)に昇格

無線LAN接続時の Key を16進数にしてわからないようにしてあげましょう。これには wpa_passphrase コマンドを使います。[SSID]と[Key]は皆さんのルータが知っています。なお、コマンド途中で >> なるものがありますが、これは指定ファイルが存在し、そのファイルの末尾に上書きする便利機能(リダイレクト)です。

root@raspberrypi:~# wpa_passphrase [SSID] [Key] >> /etc/wpa_supplicant/wpa_supplicant.conf
root@raspberrypi:~# cat /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="foobaz"
        #psk="foobazbar"
        psk=xxxxxxxxxxxxxxxxxx
}
root@raspberrypi:~# nano /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="foobaz" # SSID
        scan_ssid=1 # ステルスモードの場合は1、でない場合は0(1のままでOK)
        key_mgmt=WPA-PSK # 暗号化方式
        proto=WPA2 # セキュリティ強度(WPA2=RSN)
        pairwise=CCMP # CCMPはAES、TKIPはRC4
        group=CCMP
        priority=1 # 優先度を上げるとより早く照合(あとで重要!)
        #psk="foobazbar" # Key(平文)は消しておきましょう
        psk=xxxxxxxxxxxxxxxxxx # Key(16進数)
}

[Ctrl] + [o] で上書き、[Ctrl] + [x] で終了
root@raspberrypi:~# diff /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.old

<       scan_ssid=1
<       key_mgmt=WPA-PSK
<       proto=WPA2
<       pairwise=CCMP
<       group=CCMP
<       priority=1
---
>       #psk="foobazbar" # 削除済み

インターフェース(wlan0)の再起動と動作確認

root@raspberrypi:~# ifdown wlan0 && ifup wlan0 # &&は「かつ」の意味
root@raspberrypi:~# ifconfig
wlan0     Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0

root@raspberrypi:~# iwconfig
wlan0     IEEE 802.11bgn  ESSID:"foobaz" # しっかりWi-Fiインターフェイスあり。

root@raspberrypi:~# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

root@raspberrypi:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=29.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=54 time=30.0 ms

root@raspberrypi:~# exit # 管理者権限(root)から降格
logout
pi@raspberrypi:~ $

DNSの設定

これをしないとインターネットに繋がらないのと等しいのでやってしまうよ。
注意点は /etc/resolv.conf ではなく、/etc/resolvconf.conf です。

pi@raspberrypi:~ $ sudo cp -p /etc/resolvconf.conf /etc/resolvconf.conf.old
pi@raspberrypi:~ $ sudo nano /etc/resolvconf.conf

# If you run a local name server, you should uncomment the below line and
# configure your subscribers configuration files below.
#name_servers=127.0.0.1

name_servers=8.8.8.8 # Google先生のDNSを追加

[Ctrl] + [o] で上書き、[Ctrl] + [x] で終了

root@raspberrypi:~ $ diff /etc/resolvconf.conf /etc/resolvconf.conf.old

< name_servers=8.8.8.8

ラズパイ再起動と確認

pi@raspberrypi:~ $ sudo reboot
pi@raspberrypi:~ $ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 8.8.8.8

pi@raspberrypi:~ $ sudo ping www.google.com
PING www.google.com (216.58.197.132) 56(84) bytes of data.
64 bytes from nrt12s01-in-f4.1e100.net (216.58.197.132): icmp_seq=1 ttl=53 time=30.0 ms
64 bytes from nrt12s01-in-f4.1e100.net (216.58.197.132): icmp_seq=2 ttl=53 time=107 ms

パワーマネジメント機能を切る

Raspberry Pi で無線LANの反応が悪い原因は、無線LANアダプターのパワーマネジメント機能がONになっているためなので、一応やっておきましょう。

pi@raspberrypi:~ $ sudo iwconfig wlan0 power off
pi@raspberrypi:~ $ iwconfig

Power Management:off # offになっていることを確認

(それでも続く)

Amazon Web Services、“Powered by Amazon Web Services”ロゴ、及び本ブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
※ SORACOM、その他のSORACOMサービスは、株式会社ソラコム登録商標または商標です。