2012年6月1日

UbuntuでFIT-PC2iの無線LANを有効にするには?

去年の1月から使っているFIT-PC2i。

前から気になっていた超小型省電力PCを試してみた
前から気になっていた超小型省電力PCを試してみた - その2 リベンジ編
超省電力な上に有線LANポート2つと無線LANが付いている面白いマシンだ。
8GBのUSBメモリに入れたUbuntu 10.04 Serverで順調に稼働している。

ただ、Ubuntu 10.04 Serverをインストールした直後の状態だと無線LANを認識してくれなかった。そのため今まで2つの有線LANポートを使って運用して来たのだけれど、やっぱりそろそろ無線LANも有効にして3つのLANをつなぐFirewallとして動作させてみる事にした。

無線LANを有効にする為の手順は次の通り。
  1. 無線LANチップのLinux用ドライバーをダウンロード。
  2. ドライバーのソースをコンパイル&インストール。
  3. wpa_supplicantの設定を追加。
  4. /etc/network/interfaceファイルに無線LANインターフェースの設定を追加。
  5. ネットワークサービスを再起動する。

1. 無線LANチップのLinux用ドライバーをダウンロード。


メーカのサイトからLinux用ドライバーをダウンロード。
http://www.ralinktech.com/en/04_support/support.php?sn=501
FIT-PC2iのハードウェア仕様を確認すると無線LANのチップは「RaLink RT3070」との事だったので、それに対応したものを選ぶ。


2. ドライバーのソースをコンパイル&インストール。


ダウンロードしたファイルを解凍して README_STA_usb というファイルを読むと、「Makefileを編集しろ」それから「 os/linux/config.mk」も編集しろ、と書いてある。
Build for being controlled by NetworkManager or wpa_supplicant wext functions
Please set 'HAS_WPA_SUPPLICANT=y' and
'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y'.
とりあえず wpa_supplicant の wext を使うと行けそうなので、上の通りに編集しておく。


3. wpa_supplicantの設定を追加。


/etc に wpa_supplicant.conf というファイルを作って無線LANアクセスポイントへの接続方法を指定すれば良いらしい。
WPA2を使ったセキュリティ設定のやり方がなかなか見つからず、この設定で一番ハマってしまった。

結局このページにたどり着いて同じ様にしたらなんとかつながった。
nlog(n): Linux で無線 LAN の成功と挫折: WPA Supplicant の導入
/etc/wpa_supplicant.confの内容:
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
network={
        ssid="MYSSID"
        scan_ssid=1
        proto=WPA2
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}
psk=xxxxx….xxxxの部分は、先にwpa_passphraseコマンドを使って暗号化しておく。


4. /etc/network/interfaceファイルに無線LANインターフェースの設定を追加。


これはいつも有線LANでやっている静的アドレス指定とほぼ同じ。最後の2行が増える点だけが異なる。
auto ra0
iface ra0 inet static
  address 192.168.1.10
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255

  wpa-driver wext
  wpa-conf /etc/wpa_supplicant.conf


5. ネットワークサービスを再起動する。


/etc/init.d/networking restart


これで無線LANが動いた!

さてここから次はFirewallとして使う為の iptables との格闘が始ったのだけれども、それはまた別の話だ。

ネットワークは本当に面白い。







.

2012年5月26日

WebSocketについて押さえておきたいもう一つの視点


下の記事を読んで「やっぱりMeteorはすごいな~!」と思った。
体感!JavaScriptで超速アプリケーション開発 -Meteor完全解説:第1回 Meteorをはじめよう|gihyo.jp
と同時に、最近よく目にする様になった WebSocket について気になりだした。

そこで色々検索して解説記事や入門記事を読んでみた。

http://warmcat.com/_wp/2010/11/01/libwebsockets-html5-websocket-server-library-in-c/


多くの記事はAjax, Cometなどの延長・改良版としてのWebSocketという視点で書かれていたのだけれども、その中で少し視点の異なる次の3つの記事が目に留まった。

Tender Surrender: WebSocketのバイナリメッセージを試したら、ウェブの未来が垣間見えた
『今後インターネットでスピードを追求していく上で、WebSocketはなくてはならない存在になるでしょう。リアルタイムなサービスを作る必要がなくても使われるテクノロジーになります。理由は大きく2つ。WebSocketの持つオーバーヘッドの削減と、データの圧縮という特徴です。』
『僕はインターネット上でWebSocketを使って流れるデータが、将来的に全部バイナリーになる可能性すらあるのではないかと思っています。』
『少し大げさに言うと、これはウェブにおけるパラダイムシフトになり得ます。ウェブで使われるプロトコルがHTTPからWebSocketに乗る何かしらのプロトコルに置き換わる可能性は、全くないとは言い切れないのではないでしょうか。』

telnet over WebSocketを作ってみた&その意味
『WebSocketが新しいバージョンとなりbinary frameが扱えるようになったことで、今までTCPで実現されていたすべてのプロトコルとお話しできるようになります。今まで悩まされていたNAT, Firewallなどを超えて、様々なサーバと繋いでみるのも楽しいかもしれません。』

こてさきAjax:WebSocketから、これからのWebを予想してみる
『結論から先に言うと、「WebSocketはWeb上に、個々のVPNを作る技術である」と僕は思っています』
『こうなってくると、Webは、単にWebページ(コンテンツ)にアクセスするための仕組みとは言えなくなります。むしろ、Webが基本のプラットフォームとなり、そこの上に個別のポリシーのネットワークが形成される。そして、ユーザーは、それらのネットワーク上を自由に行き来するという世界観で捉えるほうが妥当であると僕には感じられます。』

これら3つの記事を読むと、WebSocketとは単なる「より良いAjax」ではなく、インターネットの世界にもっと大きなパラダイムシフトをもたらす可能性を持ったものだと言う事が言えそうだ。

これは少ないオーバーヘッドでバイナリデータを扱える様になった事によるところが大きい。これによって今現在はTCP/UDPのポート番号で区別されている通信を全てTCPの80番と443番ポートで(FirewallやNATを越えて)流す事が可能になる。(WebSocketを使ったVNCクライアントはその良い例だろう。) これが普及すればアプリケーションの区別はもっぱらWebSocket内のサブプロトコルによって行われる様になるかも知れない。

つまり こてさきAjax さんが予想されている様にネットワークのレイヤが一つ上がった形でアプリケーションが動くという事になる。

それがもっと具体的にどういう意味を持つのかはまだはっきりとイメージ出来ないけれど、何だか楽しいことになりそうな気はしている。









.

2012年5月5日

Sprintの携帯とGoogle Voiceが統合されてどうなったか

去年の5月頃から、Sprintの携帯の電話番号がGoogle Voiceでそのまま使える様になった。GoogleとSprintが提携したので、Sprint側のバックエンドがGoolge Voiceに直結された様なイメージだ。これは非常に便利な機能で重宝している。
ASCII.jp:Google Voiceと米Sprint端末の統合が可能に
GoogleとSprintがGoogle Voice導入で提携、Sprint版Nexus S販売も - ITpro

全ての発着信履歴、テキストメッセージやボイスメールにWebからアクセス出来る。
テキストメッセージやボイスメールを自動的に自分のEメールに転送する事も出来る。 

ブラウザから自分の電話番号を使って発信する事も出来る。
PCで通話する事も携帯で通話する事も可能。

特に、テキストメッセージを受け取った時にすぐにEメールに転送されて来るので、携帯を使わずそのままPCから返信出来てしまうのが気に入っている。


端末から電話をかける時は、Google Voiceを経由するのか従来通りSprintの電話網を通すのかを選択出来る。(もちろん前もって設定で決める事も出来る。)
通常はSprintを使って、国際電話の時だけGoogle Voiceを使うという設定も可能だ。(Google Voiceを通すと日本まで1分2セントで通話出来る。)

この機能のおかげでSprintの高い国際通話料金を払う必要が無くなった。

と、いい事づくめだったのだけれども、2日ほど前から問題が発生してしまった。


突然、端末から国際電話の発信が出来なくなってしまったのだ。
検索してみると5月2日から多くの人がこの問題で困っているらしい。

When trying to place a call via google voice i get: "this is not a valid number" 
Sprint Community: International calls - this is an invalid number, problem for Sprint users since 5/2/2012 - update?

国際電話の番号をダイヤルすると「This is not a valid number」という録音メッセージが返って来るだけだ。Google VoiceのWebサイトで発信履歴を見ると、記録されている電話番号が先頭の7文字までで切れている。

どうやらSprintとGoogleの間の連携が上手く行かなくなってしまっている様な感じだ。

それにしても、問題発生から2日も経っているので、きっと困っている人も多いだろうと思う。

携帯とGoogle Voiceが統合されて便利になったのは良いのだけれど、こういう問題は本当に困る。Googleがこれからもっと社会インフラ化して来るとしたら、もっと重大な問題が起こりそうな気がしてならない。









.