ホーム » 「WiFi」タグがついた投稿
タグアーカイブ: WiFi
WiFiスキャンをさせてみた
自宅内のネットワークに繋がらない時があって悩んだら、外で使っていたモバイルルータがつけっぱなしで、自宅内ネットワークのサービスに接続できないのが原因だったりする。パケットも無駄に消費するので、自宅内でモバイルルータが動いていたら警告させるようにしたい。
wifi scan
メインサーバは有線だけなので、有線LAN接続で WiFi が空いている Raspberry-Pi で監視させてみた。
$ sudo iw dev wlan0 scan | grep "SSID: ルータのSSID"
最初は homebridge の homebridge-cmdswitch2 の state_cmd に仕込んでみたけど、モバイルルータが動いていたら警告してほしい。Siri のオートメーション経由で警告することもできるかもしれないけど、スマホに頼る形になるなぁ。
nagios で警告させたいけど、raspberry-pi に nagios を入れるのは資源のムダに思える。ということで、Raspberry-Pi には nagios の監視をリモートで呼び出す nagios-nrpe-server を 入れて、上記 iw コマンドを動かす check スクリプトを書いてみた。
check_iwscan
nagios-nrpe-server から呼出す際に、Raspberry-Pi で動かすのもあるし、OS 負荷が軽くなるように Lua で書いてみた。
#!/usr/bin/lua -- 見つけるべきSSID local check_list = {} check_list[ "tsaitoh.net" ] = "ok" check_list[ "tsaitoh.net_e5785" ] = "warning" check_list[ "tsaitoh.net_hwd14" ] = "critical" -- 見つけたSSID毎の数 local count = {} count[ "ok" ] = 0 count[ "warning" ] = 0 count[ "critical" ] = 0 -- スキャン結果を処理 local handle = io.popen( "/usr/bin/sudo /sbin/iw dev wlan0 scan" , "r" ) if handle then for line in handle:lines() do -- SSID を抽出 ssid = string.match( line , "^%s*SSID: (.+)$" ) if ssid then -- SSID のカウント local lv = check_list[ssid] if lv then count[lv] = count[lv] + 1 end -- print( ssid ) ; end end handle:close() end -- カウント結果に応じたexit値を決める local status = 0 local st_mess = "Ok" if count["critical"] > 0 then status = 2 st_mess = "Critical" elseif count[ "warning" ] > 0 then status = 1 st_mess = "Warning" end -- 結果の表示 print( string.format( "IWSCAN %s - ok:%d/warn:%d/critical:%d" , st_mess , count["ok"] , count["warning"] , count["critical"] ) ) os.exit( status )
メッシュネットの導入を検討
先日から、子供の部屋にWiFiが使えるように1Fに設置していたアクセスポイントが調子が悪いようで撤去した。
でも、同じ1F居間のTVやらRaspberry-Piやらがネットワークにつながらなくなり、どうも1FまでのEthernetか、その先のPLC(電力線経由ネットワーク)が壊れたようで、その先のWiFi-AP,TV,RPiが相倒れとなった様子。
かといって、PLCは元々通信速度もあんまり出ないし、壊れたとしても再購入も疑問。
WiFi環境の見直し
WiFi-APで自宅内どこでもWiFiが使えるようにしていたけど、再接続の性能も悪いし、ルータの更新を検討した。今までにも、WEX-733D とかを試したけど、接続がよく切れるし使用を断念していた。そこで、専用にメッシュネットWiFiルータとして売られている製品を検討してみた。
Buffalo で最新のものは、WTR-M2133HP/E2S だけど、値段も高い割に Amazon のレビューではうまく動いていない報告が目立つ。そこで値段も手ごろで、Amazon レビューでもトラブルの報告の少ない WRM-D2133HP/E1S を選択。
予想される問題
問題点としては WRM-D2133HP は、ルータのLANポートが3ポートに減る。現在のルータには、Linuxサーバ,メインWindows機, VPNルータ, 8ポートHUBと繋がっているので、ポート不足になるはず。ひとまずはVPNルータの空きポートを使うかな…。
たぶん壊れた1Fにつながるネットワークは、なんとか復活させたい。今の所、メッシュネットでつながるようになるなら、WEX-733Dを復活させようと検討中。ただし、中継機能を使うとネットが切れやすくなるような症状が予想されるので、無線LANアダプターとして使い、中継器のWiFi親機機能を無効化したほうがいいだろうな。
iphoneの検知難しい
大学でアパート住まいの子供が、帰っているのか確認するために、LINE beacon を置いて検知を試したけど、bluetooth を切って既読スルーなヤツなので、ほとんど検知することができない。
そこで、アパートでは無線LANルータを使ってるし Raspberry-Pi で、arpalert を使えば簡単に検知できるだろうと、実験中。でも iPhone はセキュリティ対策なのか、 arp の返答は必要最小限なので同じサブネットとはいえ、そのままでは通信の必要の無い raspberry-pi には、ARP 情報が送られてこない。また ping には返答しないようで、単純に ping で確認も困難。ということで単純な arpalert では検知が難しいなぁ。
定時処理で、”arping -c 1 -I wlan0 IPHONEのIPアドレス” を実行させて、強制的に ARP を送ってもらうか…
stretchで起動しづらい
自宅で色々と動いている Raspberry-Pi 。OS更新はまめにやっているけど、外気温測定に使っているのが Jessie のままだったのに気づく。stretch に上げたけど、どうも起動に失敗する。更新に失敗したかと思ったけど、キーボードをつなぐために USB WiFi を抜いて起動すると、普通に動いている。
今までも、多少 boot が不安定なのはあったけど、stretch になって起動シーケンスが最適化されたのか、WiFi 有効化のタイミングが早まり、ブート時の電力不足が発生していると思われる。
ひとまず、改造面倒だし USB WiFi を抜いて、boot がそれなりに進んでから USB を指して対応。
WiFi 2.4Gのチャンネル変更
最近、子供からWiFiがよく切れるとのクレーム。調べてみたら、お隣さんのWiFiのチャンネルと被っているみたい。
2.4G [Hz] / 11n,11g,11b
何度かスキャンをかけると、2.4GHz帯のチャンネル選択は自動にしておいた状態で、自宅の1F用,2F用が3ch,11chを使っていて、しかもお隣さんも同じものを使ってる。倍速モードの拡張チャンネルも5chとか使われていて、これもかぶってる。
そこで、3ch,5ch,11chを避けるために固定チャンネルの設定を探し、お隣さんに近い WiFi-AP を 13ch(拡張9ch)、自室 WiFi-AP を 7ch(拡張11ch) にしてみた。
WiFi 場所 | メインch | 拡張ch |
---|---|---|
お隣近接側AP | 13ch | 9ch |
自室AP | 7ch | 11ch |
5G [Hz] / 11ac,11n,11a
5GHz の方は、電波が遮蔽物越しでは飛ばないようで、あんまりお隣さんが見えない。ということで、そのまま自動選択にしておこう。