最近の無線LANの設定に付いてはあまりにもわからない事が多すぎて調べた結果、 あまりにも理不尽なためこのメモを書く事にした。 (おかげで散財してしまい、悔しいので憂さ晴らしに)
2000年頃に購入したAirMacベースステーション
(グラファイト)では無線LANの暗号化はWEPという方式をとっていた。
ところがこのWEP(Wired Equivalent Privacy)
という仕組みに脆弱性が見つかり(簡単に言うとパスワードが第三者に確認されて
しまう問題と書いてましたが、パスワードが解読されるのは一次的な問題で
本質的には、通信内容が盗聴されてしまう危険でした)、
WPA(Wi-Fi Protected Access)という方式が2002年に作られた。(暗号化のキーを
定期的に変更してキーの推測を困難にしました。)WPA
という方式は当初暗号形式にTKIP(WEPと同じRC4アルゴリズム)を使っていたが、よ
り安全性の高いAES方式も提供されるようになった。WEPではSSIDを隠したり、
MACアドレスでの制限をかけても無駄で、WPAを使うのが安全であると言われている。
ただし何にしてもSSIDはMACアドレスや何らかの情報が推測できる文字列は使用し
ない方が良いようだ。
無線LANは近所にいればデータが流れている事は、ちょっと特殊なソフトなどを使 えばすぐ分かってしまいます。この時にネットワークを暗号化していない場合や、 WEPを使っているけどでパスワードが破られてしまっている場合には、通信内容を 傍受され悪用されたり、勝手にネットワークを使用され、不正アクセスなどを行う などの問題が発生する可能性があります。
AirMacカードにはAirMacとAirMac Extremeという二つの種類がある。AirMac Extreme については802.11nがサポートされている物とそうでない物がある。上記の暗号 化についてのサポート状況は下記の通りである。
カード種類 | OSバージョン | 暗号方式 |
AirMac | 10.2以前 | WEP |
AirMac | 10.3.3以降+AirMac 4.2 | WEP,WPA |
AirMac Extreme | 10.3.3以降+AirMac 4.2 | WEP,WPA,WPA2 |
|
| |
Mac OS X 10.2でのAirMacの接続設定 |
Mac OS X 10.3.9+AirMac 4.2でのAirMacの接続設定 |
AirMac ExtremeについてはWPAとWPA2という方式をサポートしているの だが、これが少しばかり複雑である。暗号化のみをサポートしたパーソ ナル(家庭用)と暗号化と認証をサポートしたエンタープライズ(会社用) の二つがある。パーソナルタイプの中では一般的にはWPAというのはTKIP を使い、WPA2はAESを使うと いう解釈もあるが、2種類かける2種類の4パターンが存在するようだ。 このメモではエンタープライズについては一切触れていない。
機種 | 設定 | Auth[] | Cipher[] |
MZK-W04N | WPA2 Mixed | 2,130,0,0 | 2(TKIP), 4(AES), 130(TKIP2), 132(AES2) |
WN-G54/R3 | WPA/WPA2 - PSK(AES) | 2,130,0,0 | 4(AES), 132(AES2),0,0 |
WN-G54/R3 | WPA2 - PSK(AES) | 130,0,0,0 | 132(AES2),0,0,0 |
WN-G54/R3 | WPA - PSK(TKIP) | 2,0,0,0 | 2(TKIP),0,0,0 |
WN-G54/RにAirMacカードでWPAで接続するにはAESではだめでTKIPを選択してい る必要がある。
PCIのMZK-W04Nというベースステーションを購入して試してみたところ 下記のような設定だとWPA(TKIP)とWPA2(AES)のクライアントが混在で きた。
2008/01/19追記:
MZK-W04Nのファームウエアーをバージョンアップ(1.11)
にしたためかMixedにしてもMacOS X 10.3のAirMacのWPA/TKIPで接続でき
なくなってしまった。airportコマンドの-Aで接続するとError (88001006)
と出てくる。もはや調べる気力がないので放置。oz_
2009/01/01追記:
環境が変わったためか、MZK-W04N(1.18)のMixedでMacOS X 10.4.11のAirMac
で接続できている。
IO DATAのWN-G54というベースステーションでは[WEP/WEP2]という選択 があるのだが、暗号化形式がAESのみになってしまいMZK-W04Nのように AESとTKIPのクライアントの混在は不可能なようだ。 Macで接続時に暗号化形式は選択できるが、接続後に現在の接続方式を 確認するにはターミナルで下記のコマンドを実行する事で可能である。
% cd /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/ % ./airport -I
近隣にあるベースステーションの無線LANのチャンネルを調べるアプリケー
ション
「コウモリのアンテナ」
を作ってみました。上のairportコマンドを定期的に実行して表示するだけ
のプログラムです。
2009/09/26追記:airportコマンドでスキャンのXMLの出力形式がMac OS X 10.5から
変わってしまっていて、「コウモリのアンテナ」がまったく動作していない事に気
がつきました。近いうちに修正します。0.2で修正済みです。
「コウモリのアンテナ」にdefault routeまでのpingの結果を出したいと思って
調べたのだが、コマンドベースでは以下の方法でゲートウエーが調べられる。10.3の
場合はshowコマンドの前にの前にopenを実行する必要がある。
sh-3.2$ scutil > show State:/Network/Global/IPv4{ Router : 10.0.1.1 PrimaryInterface : en0 PrimaryService : xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx } > quit
プログラムから取得する場合は下記のようにします。
// System Config test SCDynamicStoreRef dynRef=SCDynamicStoreCreate(kCFAllocatorSystemDefault, (CFStringRef)@"bat", NULL, NULL); NSDictionary *ipv4Entry=(NSDictionary*)SCDynamicStoreCopyValue(dynRef, (CFStringRef)@"State:/Network/Global/IPv4"); NSLog(@"Router = %@", [ipv4Entry objectForKey:@"Router"]);
socketベースでデフォルトルートを調べるコードが
ここにあったが
10.3ではそのままではコンパイルが通らなかったので、あまり深く調べていない。
現在接続してるSSIDを拾う方法は以下。
sh-3.2$ scutil > show State:/Network/Interface/en0/AirPort
余談だが、iPhoneの2.x,3.xではSCDynamicStoreCreateなどがサポートされておらず 上記の値を拾いだすには、プライベートフレームワーク(2.x:Apple80211, 3.x:MobileWiFi)に入っているファンクション(Apple80211Openなど)を呼ぶ必要が ある。
このメモを書くために調べていて見つけたのだが KisMACという無線LANのアクセスポイントを見つけるアプリケーショ ンがある。このソフトはWEPのクラックツールとしても使えるようだが、 良い子の皆さんはそのような事はしないでください。(ドイツの法律に抵触 ため開発拠点をスイスに移したという曰く付きのアプリケーションです。)
Mac OS X 10.3のAirMacの設定に「デフォルトで次に参加する」とある が、AirMac(Extremeでない)カードでベースステーションがWPA(TKIP) の場合、接続に失敗するようだ。ただ自動に設定するとうまくいく? AirMac ExtremeカードでWPA(AES)の場合は「デフォルトで次に参加する」 が問題なく使えている。ただ自動だど他人のベースステーションに誤接続 して通信内容を見られてしまう危険はないのだろうか。。。
AirMacカードしか入らない機種でWPA2を使うにはいくつか方法がある。
一つはPCIのUSBの無線LANモジュールを使う方法だ。国内のメーカー
では唯一PCIがMac OS XのドライバをサポートしたUSBの無線モジュー
ルを販売している。何種類かあるようだが一つを購入して試してみた
がたしかにAESでつながっているようなのだが、時々切れてしまい安
定しなかった。Macの機種によってはスリープ復帰時にカーネルのパ
ニックに見舞われる事もあった。PCIのページではMacではWEPしか使
えないとあるので、WPA(ASE)が使えているのはサービスで、不安定な
のはやもう得ないのかもしれない。
もう一つはバッファローのイー
サーネットコンバータ(WLI3-TX1-G54)を使う方法だ。こちらはMac OS
でも使えるとあるのだがマニュアルが不親切で設定に手間取ったが、
一度設定できればかなり安定して使えるようだ。(バッファローはAES
とあるがWPAと表記している)このイーサーネットコンバータはAirMac
カードよりもパフォーマンスが良い。iBook Dual USBからAirMac Express
へのiTunesの再生がAirMacカードではかなり途切れることがあったが、
このイーサーネットコンバータでは全くない。もう一つのイーサーネット
コンバータの利点はWOLが使える事だ。
かなり今更なんだがステータスバーのWIFIのインジケータをオプションを押しながら クリックすると、ステータスが表示されるようだ。OSバージョンのいつからサポート されたのかは不明だが10.6では表示される。(2015/01/31)
最近のMac OS XにはWireless Diagnosticsというものがあるようだが雪豹にはない。 ただし以下のようにコマンドを実行するとkernel.logに詳しいデバッグログがでる ようだ。
sudo /usr/libexec/airportd debug +AllUserland +AllDriver +AllVendor
下記のようなルータについての原因が考えられます。
1,3が多いと思います。1はAirMacやMZK-W04Nのアダプタのコンデンサーを取り替えま した。HardOffで入手したCG-WLR300Nも コンデンサーが膨らんでいたので、おそらく調子が悪くなっていたと思われます。 2は経験したことがありませんが、ひろくんのページに レギュレータの不良の記事が ありました。 3はMZK-W04Nで間違えてRouter/APのスイッチを変更してしまっておかしな動作に なったことが何度かありました。アダプタをつけたときに誤って変更しちゃうことが あって、スイッチの場所がよくないです。またあまり変えるものでもないので、ノブが 出っ張っている必要もないと思います。Webインターフェースでスイッチの状態が簡単に 確認できないのもいけてないです。5はIP/DHCP/DNSなどの要因があります。 WN-G54/R3でAppleのDNSが引けなくなってファームのアップデートがありました。 これはApple側のDNSレコードがWN-G54/R3の予期しない構造に設定されたのが原因だった のだと思います。下にも書いていますが、突然すべてのDNSが引けなくなったことも ありました。ルータのDNSはIPS側のDNSに問い合わせを行う訳ですが、ISP側のDNSが 仕様変更されててルータと相性が悪くなったとかもあるかもしれません。 6はあまり考えられませんが、ルーターに脆弱性が報告された場合など は注意が必要です。FreeBSDやMac OS XではifconfigでIPアドレスがあるか。nslookup などで名前の解決ができるか。pingやtracerouteでどこまで到達できているかなどを 調べて原因追及することができます。 7はたまたま気がついたのですが、寒い時期には起動しなくなるルーターがありました。 電源入れて起動していない状態で、しばらく通電してもう一度、電源を入れなおすと 立ち上がったりします。 自宅が5度ぐらいになったときに問題が起きたような気がします。暖かくなったら 再現しなくなりました。逆に暑いときに問題を起こすルーターもあるかもしれません。