Raspberry Pi でWiFiの設定をする
前回の記事でRaspberry PiにRaspbianを入れるところまでやったので、今回はWiFiでアクセスするところまでやります。
(photo credit: mista stagga lee via photopin cc)
無線子機が認識されているかの確認
$ sudo raspi-config # root partitionの拡張だけ $ sudo apt-get update $ sudo apt-get upgrade -y $ dmesg [ 7770.741286] usb 1-1.2: new high-speed USB device number 4 using dwc_otg [ 7770.857327] usb 1-1.2: New USB device found, idVendor=0411, idProduct=01a2 [ 7770.857361] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 7770.857377] usb 1-1.2: Product: 802.11 n WLAN [ 7770.857391] usb 1-1.2: Manufacturer: Ralink [ 7770.857404] usb 1-1.2: SerialNumber: 1.0 [ 7770.965567] cfg80211: Calling CRDA to update world regulatory domain [ 7771.151314] usb 1-1.2: reset high-speed USB device number 4 using dwc_otg [ 7771.260613] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3070, rev 0201 detected [ 7771.299159] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 detected [ 7771.331996] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' [ 7771.338409] usbcore: registered new interface driver rt2800usb [ 7771.502034] ieee80211 phy0: rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin' [ 7771.505254] ieee80211 phy0: rt2x00lib_request_firmware: Info - Firmware detected - version: 0.29 ifconfig wlan0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
WiFi接続の設定
ググると結構Raspberry PiのWiFi接続の情報は出てくるのですが、どれも単体ではうまくいかなかったので、若干の試行錯誤が必要でした。
前提の確認
- wpa_supplicantというWPAクライアントを使う
- Raspberry Pi (Raspbian) にはデフォルトでwpa_supplicantが入っている
CCMP
TKIP
- WEP, WPAの標準標準暗号化プロトコル
WPA2-PSK
- WPA/WPA2のパーソナルモード
設定ファイルの編集と反映
$ wpa_passphrase SSID PASS_PHRASE network={ ssid="SSID" #psk="PASS_PHRASE" psk=aeba1e8bc9ea7d811c3b069053c54538d262cf070268ec42f600bd8325dbf419 } # #pskの行は不要 # 生成した設定を下記のファイルに追記します $ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf network={ proto=WPA # プロトコル, WPAの場合 (WPA2の場合は RSN) key_mgmt=WPA-PSK # ルーターの設定によります pairwise=CCMP # AES (unicast: one-to-one の通信時の暗号化方式) group=CCMP # AES (multicast, broadcat: one-to-manyの暗号化方式) ssid="SSID" psk=aeba1e8bc9ea7d811c3b069053c54538d262cf070268ec42f600bd8325dbf419 } $ chmod 0600 /etc/network/interfaces # pre-shared key (PSK) 流出防止 $ sudo vi /etc/network/interfaces auto wlan0 # 起動時にinterfaceをupする allow-hotplug wlan0 # カーネルがnetwork interfaceを認識した時にup iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf # wpa-roamだったのをwpa-confにしました。違いはよくわかってないです...汗 $ sudo /etc/init.d/networking restart $ ifconfig wlan0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:192.168.11.15 Bcast:192.168.11.255 Mask:255.255.255.0
基本的には、これで設定完了です。
Troubleshooting
Raspberry Piにsshが通らない
Raspberry Pi側でipアドレスが取得できているのに、Raspberry Pi <---> Macbook Air
間でpingが通らない、sshもできないで困りました。こちらの記事によると、BUFFALOのルーターを使っていて、ファームウェアが古い場合、この現象が起きているようだったので、v1.8.2 => v1.8.6
にアップデートしたところ解決しました。
時間が経つとWiFiの接続が切れる?
WiFiの接続が切れた場合に再接続しないことがあるようですが、この辺(wireless - How to automatically reconnect WiFi? - Raspberry Pi Stack Exchange)を参考にすると良さそうですね。
WHR-G301N での設定
自宅のWiFiルーターが、WHR-G301N
なのですが、SSID1が、WPA/WPA2-Mixedだったため、上記の設定ではダメでした。SSID2 (WPA-PSK-AES)を使うことで、上記の設定で解決しました。
WPA/WPA2-Mixedだと WPA-TKIPとWPA2-AESしかダメなんだろうか...。
参考文献
- 無線LAN - WPA2(Wi-Fi Protected Access 2)
- WPA2-PSKとは 【 WPA-PSK 】 【 Wi-Fi Protected Access 2 Pre-Shared Key 】 - 意味/解説/説明/定義 : IT用語辞典
- Network - なんなんなん行く?
- 無線LANのステルスAPにLinux(wpa_supplicant)から接続する - Dマイナー志向
- RaspberryPi - Raspberry Pi を無線 LAN 経由で SSH 接続できるようにする - Qiita
- http://www.lsi.upc.edu/lclsi/Manuales/wireless/files/wpa_supplicant.conf
- IPA 独立行政法人 情報処理推進機構:一般家庭における無線LANのセキュリティに関する注意
- Is WPA2/AES more secure than WPA/AES? - Wireless Security | DSLReports Forums
- WiFi/HowToUse - Debian Wiki
- networking - What's the difference between `wpa-roam` and `wpa-conf` in the /etc/network/interfaces file? - Raspberry Pi Stack Exchange