今日は溜った日記ネタ大放出。(笑)
[Apple Computer] Suntac U-Cable type A2cdma2000 1x な携帯電話に接続してデータ通信をするためのケーブルU-Cable type A2 (AS144L2)というものを大金はたいて購入したのはイイんですが、これが Windows, MacOS 8.5〜9.2 にしか対応していないみたいでして…。んでいろいろと調べてみたんです。ひとまず Linux が動作しているコンピュータに接続してcat /proc/bus/usb/decices を実行してみたところ、以下のような結果になりました。
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 5 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=05db ProdID=0011 Rev= 1.20 S: Manufacturer=Sun Corporation SCC div. S: Product=SUNTAC U-Cable x C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none) E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=83(I) Atr=03(Int.) MxPS= 8 Ivl=4ms
と、デバイスクラスなどが完全にベンダー独自な仕様になっているみたいなのです。ということで、各種メーリングリストなどを調べてみたところ、以下のような情報が収集できた。
んー、こうなったら サン電子さんからドライバのソース見せてもらうとかしないとダメなのかなぁ。
Mozilla Project から Mozilla-1.1b がリリースされた模様。早速ダウンロードしてみようとしたら、Source が置いていない。仕方ないから MacOS X 版を使ってみた。んー、なんか違いが分らないなぁ。(笑)
先日の日曜日、秋葉原に行ってブラブラしていたところ、若松通商で IBM Netfinity 用のものと思われるキーボードが 1,000円で売っていたので、一つ購入した
Web ページをバリアフリー化するためのネタを2つほど。
富士通の ウェブ・アクセシビリティ指針に基づいた検査を行うツール。私のページを検査してみたところ、HTML element に LANG attribute がないと警告を出したのですが、そのページは XHTML 1.1 で書かれており、XHTML 1.1 では HTML element に LANG attribute が定義されていないため、このエラーは無視しました。あと、TABLE に CAPTION がないといったまっとうな警告もありました。
指定された画像ファイルや Web ページを、 Color Blind (色盲) な人にはどのように見えるのか変換して表示してくれるサイト。ちなみに僕のページは... ほとんど白黒なので問題なさそうです。
今回の地震でなんとなく思ったのですが。
小さな地震は平日、大きな地震は休日。 新潟も福岡も今回の東京も。
今回の震度とかで思ったのですが、思っている以上に東京って地震に強いのかも。
最大震度が東京都足立区。 これで足立区の家賃相場が下がるとかないのかなぁ。
災害発生直後にすぐに使えた携帯電話は Vodafone 3G、契約したままだったのですぐに実家に連絡できました。 海外で使えて国内でつかない、平時は使いにくくて非常時に使い物になる。 いや、前回のUS出張の時にはローミング認証がクソぐらいに通らなかったところを見ると、あの電話は災害専用?
うちのアパートの契約のときに地震特約の保険に入ったのですが、ものが落ちたとかずれたとかで被災していないか必死になって探しました。 落ちたものが本棚にバランス絶妙においてあった書類とか封筒とかで、それの損失額を計算するコストのほうが損失額を上回っていそうだったので、計算するのをやめました。
バイク買おうかと思って、高円寺のバイク屋さんまで自転車でいってきたのですが。 「ヤマハの SEROW 250 なんかいかが?」ってことだったので試乗とかしてきました。 というかバイクを一般公道で乗るの初めてなのですが。(笑) あれなら軽くて取り回し楽で、それなりにパワーもあるからいい感じなのですが。 お値段が乗り出しで約47万円ってことだそうで、ノートパソコン2台分って考えてチト踏みとどまりました。 これが20万円ですとかいわれたら即金で買ってしまうところでしたが。 中古屋だったら即金で買っていた可能性大で危険な香りが。
っていうか、軽めな足 (品川区ナンバーでなく品川ナンバーがつく程度の発動機つき乗り物) が欲しいのですが。 普通自動車だと駐車場問題があるのでちょいとダメですが。
ちょいと軽めの管理ツールを作ることとなったので、 Ruby on Rails の を使ってみることに。 レコードのCRUD (Create:作成, Read:読込み→表示, Update:更新, Delete:削除) とごに controller, view やページ遷移を設計したり書かなければならないのが、勝手にできあがっている。 DBのカラムが変わったときとかに、それまでだと controller, view ともにいじらなければならなかったのが、ちょいと配列にカラム名追加すればよかったりする。
便利なフレームワークであることは確かなのだが、フレームワークって使い方覚えるのに一苦労ですよね。 なんとか1日2日でだいぶ使い方覚えられました。 1日2日で覚えられるぐらいによくできているといえば、そうなのですが。
以前PPTP を使った VPN の構築なんて言うことをやっていたのだが、PPTP ってそのままではパケット暗号化されていないので、暗号化もできる を導入してみることにした。 かなり手こずった。
後で調べていたら、 なるものがあった。 英語だが、こっちのほうが参考になるかも。
今回使ったのは、OpenVPNのサーバを Ubuntu 9.04 で、クライアントは Windows XP という具合。 しかもOpenVPNのサーバがNATルータの内側にいるという、これまた困った状況ではありますが。
ソフトウェアのインストールですが、Ubuntu では apt-get で openvpn のパッケージをインストールします。 また今回は Ethernetブリッジを用いるため bridge-utils も一緒にインストールしています。
sudo apt-get update sudo apt-get install openvpn bridge-utils
Windows側には openvpn-gui をインストールしました。からダウンロードしてインストールできます。
OpenVPN でサポートされているトンネリングの方法では、IPルーティングによるトンネルと、Ethernetのトンネリングがある。 IPルーティングの場合は、VPNサーバの中で経路情報などを持ってトンネルに向かってパケットを投げたりするようだ。 Ethernet トンネルの場合は、接続している Ethernet とのトンネルを開けるようだ。 今回は Ethernet トンネルを使ってみた。
OpenVPN では OpenSSL などで作成した非対称鍵による認証を行っている。 クライアントとサーバでは別々の非対称鍵を設定し、それらの認証 (Certification) が同じ鍵によって行われており、認証に利用した鍵が一致する場合、接続を許可するという具合になっている。 PPTPだとPPPと同じように ID + パスワードの認証なのだが、OpenVPN では鍵認証になる。 また ssh と違うところとしては、ssh では接続してくる非対称鍵の公開鍵を接続先サーバに登録し、それに対する秘密鍵で接続してきたクライアントを認証するようになっている。 OpenVPNでは、自分のところで認証のとれた公開鍵を認証するという具合になっている。
非対称鍵の作成はディレクトリ /usr/share/doc/openvpn/examples/easy-rsa/2.0 の中にあるスクリプトを用いて実行する。 まずは esay-rsa に渡す変数を、vars というファイルに記述する。 vars の中では、これらの部分を変更しておく。
export KEY_COUNTRY="JP" export KEY_PROVINCE="Tokyo" export KEY_CITY="Setagaya" export KEY_ORG="masaru.org" export KEY_EMAIL="info@masaru.org"
あとは下記の手順で CA (認証局)、サーバ、クライアントの鍵を作成する。
sudo -s source vars ./clean-all ./build-dh ./build-ca
# サーバの鍵を作成 : 鍵の名前は "server" ./build-key server
# クライアントの鍵を作成 : 鍵の名前は "client1" # クライアントの数だけ、鍵の名前を変更しながら作成。 ./build-key client1
上記の操作で、ディレクトリ /usr/share/doc/openvpn/examples/easy-rsa/2.0/keysの中に鍵ファイルが作成されます。 鍵ファイルは、サーバ・クライアントに必要なものを配置します。
サーバには、下記のファイルをディレクトリ /etc/openvpn/keys にコピーしました。
ca.crt dh1024.pem server.crt server.csr server.key
クライアント (Windows)側には、これらのファイルをコピーしておきます。
ca.crt client1.crt client3.key
サーバ側の設定は、openvpn そのものの設定と、Ethernet のブリッジ設定が必要になります。
openvpn の設定は /etc/openvpn/server.conf が設定ファイルとなります。 およそこのような内容を書きました。
# 今回は TCP を使ってみました。 たぶんUDPでも動きます。 proto tcp-server
# デバイスのインターフェースは tap0 を使っています dev tap0
# 鍵ファイル類の設定 ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key # This file should be kept secret dh /etc/openvpn/keys/dh1024.pem
# サーバブリッジの設定 # 192.168.3.16 はサーバのIPアドレス # 192.168.3.209 から 192.168.3.225 の範囲でIPアドレスを割り振り、 # ネットマスクは /24 ( 255.255.255.0 ) server-bridge 192.168.3.16 255.255.255.0 192.168.3.209 192.168.3.225
# 経路の設定 # 192.168.3.0/24 をクライアントに追加する。 route 192.168.3.0 255.255.255.0
# TLS-Server にする tls-server
# 圧縮を有効にする comp-lzo
次に Ethernet ブリッジの設定を行います。 EthernetブリッジはOS起動時から使いたいので、/etc/network/interfacesの設定ファイルに下記のように記述しました。
auto br0
# br0 : bridge のインターフェースにIPアドレスを割り当てる
iface br0 inet static
address 192.168.3.16
gateway 192.168.3.1
netmask 255.255.255.0
# bridge に eth0 と tap0 を追加する
bridge_ports eth0 tap0
iface eth0 inet manual
iface tap0 inet manual
今回の設定を行うと、いままでeth0でホスト外とIPの通信を行っていたかと思いますが、仮想デバイスのbr0からIP通信をおこなうようになります。また、br0を使うには bridge-utils が必要になります。 /usr/sbin/brctlがあるかどうか確認しておいてください。 ない状態で設定すると、サーバにIPv4アドレスが設定できず、SSHとか全部とまります。
ネットワークの設定が終わったら、ネットワークの再設定と openvpn の起動をしてください。
sudo /etc/init.d/network restart sudo /etc/init.d/openvpn restart
まずはサーバ側で作成した鍵のファイルを C:\Program Files\OpenVPN\config に配置しました。 あとは設定ファイルの編集です。 設定ファイルは C:\Program Files\OpenVPN\config\client.ovpn というファイルになります。 これをテキストエディタで編集します。 設定は、OpenVPN GUI のプログラムが、スタートバーのアイコンの中にありますので、そいつを右クリックして「Edit Config」をクリックしても開けます。 内容は下記の通り。
# クライアントモード client
# デバイスのモード : tap dev tap
# デバイス名 : tap0 # ネットワーク接続内にあるTAPのインターフェース名と同じ名前を指定してください。 dev-node tap0
# 利用するプロトコル。 今回はTCPを使っています。 proto tcp
# OpenVPN サーバのホスト名かIPアドレスとポート # Dynamic DNS を使っている場合は、そのホスト名を設定すると便利。 remote hogehoge.hogehoge.jp 1194
# 鍵ファイルの設定:コピーしたものをフルパスで指定 # Windows のパス区切り文字「\」は「\\」と2つ書くこと。 ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" cert "C:\\Program\ Files\\OpenVPN\\config\\client1.crt" key "C:\\Program\ Files\\OpenVPN\\config\\client1.key"
ネットワークインターフェース名ですが、Windowsのネットワーク接続内にあるインターフェース名を指定します。 そのままだと「ローカル接続 1」とか担っているかと思うのですが、ファイル内容のエンコードとかの事情で日本語が使われていると面倒なので、英数字で tap0 としました。
今回の構築では、OpenVPNサーバをホームゲートウェイ(ルータ)の内側に配置しています。 内側に配置しているため、ルータのポートマッピングの設定が必要になります。 OpenVPNのサーバへTCPとUDPのポート1194への接続を転送するようにしています。
写真の例は、うちにあるNECアクセステクニカさんのルータの設定画面で、IPアドレス 192.168.3.16 が OpenVPN サーバのIPアドレスになります。
現状だとサーバ側の openvpn のリスタート ( sudo /etc/init.d/openvpn restart ) を実行すると、インターフェース tap0 がブリッジから外れて、tap0をifconfig で見ると down となってしまう。 どっかに何かしらのスクリプトを設定しないとダメなのかな。 とりあえず現状では openvpn の restart をかましたときに、下記のコマンドをたたいています。
sudo ifconfig tap0 up sudo brctl br0 tap0
あとは、WindowsのOpenVPN GUI から Connect とか実行してみてください。 以上です。 よいネットワーク環境を!
・ takepin [最近、新規案件はすべてCakePHPで実装するようになりました。 フレームワークは一度覚えると確かに楽。もう戻れない..]
・ まさる [CakePHP、使ったことないっすん。 Rails の scaffold がいまいちだったのですが、active_s..]
・ takepin [えぇぇ? CRUD で不要なアクションも残ったままでリリース? scaffold で確認したらちゃんと必要な分だけ..]
・ まさる [active_scaffold では、こんな方法で必要なアクションだけにできるのです。 ・リスト表示のところでは、C..]
・ takepin [ふむ。だから active なのね。]
・ まさる [おかげで、「公道で原付含めてバイク乗ったことないけど大型二輪持っています」という二輪童貞は今日で卒業してしまいました..]
・ KAZ [男なら黙ってZZ-R1100ですな(ぉ]
・ まさる [カワサキは川崎病が・・・(笑)]