【Wireless】通信が出来ない

【現象】
無線LAN がつながらない

※「つながらない」ので、つながるように対応するわけだが、対応とともに現象も変わっていく
①起動時デバイスが認識しない
②つながったとしても断続的に通信が消れる
③ifup wlan0 にて起動させる時、アドレスを自動取得できない

【環境】
OS: CentOS 5.1 → 5.3
APL: wpa_supplicant v0.4.8 → 0.5.10
無線LANルータ: WHR-G54S firm:Ver.1.40 → 1.43
無線LAN子機: WLI-U2-KG54L(USB)
暗号化方式: AES(CCMP)

【接続手順】
1.ルータの暗号化方式を “AES” に設定する
2.ドライバ(zd1211rw、ndiswrapper) に合わせてインターフェース設定
3.設定ファイル “/etc/sysconfig/wpa_supplicant” “/etc/wpa_supplicant/wpa_supplicant.conf” を編集
4.wpa_supplicantサービス を起動

※2~3の手順は wpa_supplicant 参照

【対応】

1.「接続手順」に基づいて設定後、リブートすると無線LAN子機を認識しない

 ①コマンドにてデバイスの状態を確認

 > lsusb
 無線LAN子機の出力結果は無し

 > dmesg | grep usb
 usb 2-1: device descriptor read/64, error -110
 usb 2-1: new full speed USB device using uhci_hcd and address 4
 usb 2-1: device not accepting address 4, error -110
 usb 2-1: new full speed USB device using uhci_hcd and address 5
 usb 2-1: device not accepting address 5, error -110

 →デバイスを抜き差しにて復帰する

 ②コマンドにてデバイスの状態を確認(正常時)

 > lsusb
 Bus 002 Device 006: ID 0411:00da MelCo., Inc.

 ※CentOS 5.3 の場合はデバイス名も表示される  ↓
 Bus 002 Device 006: ID 0411:00da MelCo., Inc. WLI-U2-KG54L

 > dmesg | grep usb
 usb 2-1.1: new full speed USB device using uhci_hcd and address 6
 usb 2-1.1: configuration #1 chosen from 1 choice
 usb 2-1.1: reset full speed USB device using uhci_hcd and address 6

2.無線LANクライアントから無線LANルータに ping にて疎通確認するが、断続的に結果が NG となる

 ①”ifdown wlan0;ifup wlan0″ にてインターフェースのダウンアップ
 →状態変わらず

 ②”service network restart” にてネットワークサービスの再起動
 →状態変わらず

 ③”service wpa_supplicant restart” にて wpa_supplicantサービスの再起動
 及び、インターフェースの再起動
 →状態変わらず

 ※インターフェースの起動中、wpa_supplicantの停止/再起動等行うとフリーズする場合がある

 ④ドライバのアンインストール/再インストール
 手順は “wpa_supplicant” を参考にする
 →状態変わらず

 ⑤CentOS 5.1 → 5.3 へアップグレードを実行する
 それに伴い wpa_supplicant のバージョンも v0.4.8 → 0.5.10 と変更となる
 →ping も途切れなくなり、正常に通信できるようになる

 /etc/sysconfig/wpa_supplicant の内容

 <v0.4.8>
 # wlan0 and wifi0
 # INTERFACES=”-iwlan0 -iwifi0″
 INTERFACES=”-iwlan0″
 # ndiswrapper and prism
 # DRIVERS=”-Dndiswrapper -Dprism”
 DRIVERS=”-Dwext”

 <v0.5.10>
 # Use the flag “-i” before each of your interfaces, like so:
 # INTERFACES=”-i eth1 -i wlan0″
 INTERFACES=”-i wlan0″

 # Use the flag “-D” before each driver, like so:
 #DRIVERS=”-D ndiswrapper”
 DRIVERS=”-D wext”

 # Other arguments
 # -u Enable the D-Bus interface (required for use with NetworkManager)
 # -f Log to /var/log/wpa_supplicant.log
 OTHER_ARGS=”-u -f /var/log/wpa_supplicant.log”

 ※wpa_supplicant を v0.4.8 → 0.5.10 にアップグレードすると設定ファイルの内容も変更になる
 ndiswrapper をドライバとして使用する場合は v0.4.8 の時は DRIVERS=”-Dndiswrapper で
 設定して問題はなかったが0.5.10 の時は DRIVERS=”-D ndiswrapper” にすると /var/log/wpa_supplicant で
 ”Device wlan0 kernel driver name: ndiswrapper.” というエラーがでる
 DRIVERS=”-D wext” に記述を変えればエラーはでない

3.再起動後、インターフェースがアドレスを自動取得できない

 ①tail -f /var/log/wpa_supplicant にてログを確認
 →認証が成功しても DISCONNECTEDログ が多いので切断しているよう

 WPA: Key negotiation completed with 00:16:01:90:e7:ab [PTK=CCMP GTK=CCMP]
 CTRL-EVENT-CONNECTED – Connection to 00:16:01:90:e7:ab completed (auth) [id=0 id_str=]
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 Trying to associate with 00:16:01:90:e7:ab (SSID=’20451EB71EB14D7D116A0DDF4FF5E493′
 freq=2412 MHz)
 Associated with 00:16:01:90:e7:ab
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 CTRL-EVENT-DISCONNECTED – Disconnect event – remove keys
 以下、繰り返し

 ②wpa_cli → level 0 にて wpa_supplicant の詳細ログを確認

 →上記と同様のログ

 ③tail -f /var/log/messages にてログを確認

 Nov 1 00:42:19 localhost kernel: ADDRCONF(NETDEV_UP): wlan0: link is not ready
 Nov 1 00:42:21 localhost kernel: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
 Nov 1 00:42:22 localhost dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
 Nov 1 00:42:28 localhost dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
 Nov 1 00:42:35 localhost dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
 Nov 1 00:42:42 localhost dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 20
 Nov 1 00:43:03 localhost dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
 Nov 1 00:43:11 localhost dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
 Nov 1 00:43:15 localhost dhclient: No DHCPOFFERS received

 →dhcp割当元(この場合は無線LANルータ) からの DHCPOFFERS が無い事がわかる

 ※インターフェースの起動中、wpa_supplicantの停止/再起動等行うとフリーズする場合がある

 ⑤wireshark にて通信状態を確認する
 →無線LANルータ からの DHCPOFFERS が無い以外に原因は見当たらない

 ⑥無線LANルータ が正常に起動しているか確認
 別の PC から無線LANルータ への疎通確認及び、アドレスを割り当てられるか確認
 →疎通確認、アドレス取得問題なくできた

 ⑦無線LANルータ のログを確認

 →割り当て出来ないクライアントからの Requestログ がない

 ⑧無線LANルータ のファームウエアを 1.40 → 1.43 にアップデートする

 →正常に通信できるようになる
 正常にアドレス取得出来た後に 無線LANルータ のログを確認したところ
 2008/01/03 21:25:25 DHCPS sending ACK to xx.xx.xx.xx
 2008/01/03 21:25:25 DHCPS sending OFFER of xx.xx.xx.xx
 上記の 無線LANルータからの通信ログはあるが
 無線クライアントの Requestログ は無かった

 
【結論】

Linux用の無線LANドライバは意外とまだ新しいものもあり、動作不安定のものもあるかも(?)
無線通信が出来ない場合は、すべてのデバイスのファームウエアをアップデートするのがいいかもしれない

タイトルとURLをコピーしました