1月
04
2012
0

LionでRVM

基本的には以前のエントリと同じなので,違うとこだけメモ.

  • Xcodeのgccがllvmベースになった
    LionにアップグレードしたのでXcodeも4.2.1にしたところ,なんとXcode 4からデフォルトコンパイラがGCCからLLVMに変わってた・・・。フロントエンドはClangとllvm-gccが選べるらしいが,一部のgemがLLVMに対応していない?ようで,railsのビルド時にエラー.以前のXcodeの環境が退避されていたので,そっちのgccを使って回避!!以前のXcodeがない場合は,portsとかhomebrew-altとからいろいろ手はあるハズ.
  • LionのEditline Libraryは日本語が通る
    Snow Leopardまではデフォルトのlibeditで日本語が通らなかったので,GNU readlineを用意する必要があったけど,Lionでは通るので特に不要に.GNU readlineがイイって人はbrewとかから入れればOK.

ということで,手順は次の通り.

  1. 以前のRVMをアンインストール
    % rvm implode
    
  2. RVMをインストール
    % bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
    
  3. RVMの読み込み
    RVMはシェル関数として読み込まれます.
    次の一行を.zshrc(bashなら.bashrc)に追加しましょう.
    RVM用のPATHが追加されるので,PATHの設定が全部終わっているところに入れること.

     [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
    
  4. 動作確認
    シェルを再起動するなりして設定ファイルを読み込み直したら,次のコマンドを実行してみましょう.

    % rvm -v
    rvm 1.10.1-pre by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.beginrescueend.com/]
    

    と表示されれば大丈夫でしょう.

  5. 1.9.2-p290と1.8.7-p357のインストール
    とりあえず,1.9.2と1.8.7を入れてみましょう.
    CCに以前のXcodeのgccを指定してやります.

    % CC=/Developer-3.2.1/usr/bin/gcc rvm install 1.9.2
    % CC=/Developer-3.2.1/usr/bin/gcc rvm install 1.8.7
    
  6. デフォルで使うRubyを指定します
    デフォルトは1.9.2にしておきましょう

    % rvm use --default 1.9.2
    
Written by p0n in: PC | タグ: ,
1月
09
2011
0

RVM移行

最後にエントリ書いてから1年近く放置プレイが続いてますが,皆さんいかがお過ごしでしょうかw

ひさびさに環境を整理したのでメモしておきます.

これまで1.8.7はSnow Leopardデフォルトのp174,1.9系はMacPorts,JRubyは手動インストール,と使い分けてきましたが,昨年末にRuby 1.8.7-p330がリリースされたし,まとめてRVMに移行することにしました.

ちなみに,rvmでRubyをビルドするにはXcode Tools Version 3.2.1 (1613) 以上が必要になるので,入ってない場合は入れときましょう
他にも,

  • If you intend on installing MacRuby you must install LLVM first.
  • If you intend on installing JRuby you must install the JDK.
  • If you intend on installing IronRuby you must install Mono (version 2.6 or greater is recommended).

だそうですので,必要に応じて適宜入れましょう.

  1. Readlineのインストール
    MacではReadlineではなくEditlineが使われているらしく,デフォルトのままだとirbで日本語が使えません.
    入ってない場合は,portでReadlineを入れておきましょう

    % sudo port install readline
    
  2. RVMのインストール
    公式サイトに書かれている通り,オススメのGitHubからDLしてきます.
    RVMはユーザのホームディレクトリ直下に作成される.rvmという名前のディレクトリにインストールされます.
    インストール用のスクリプトが用意されているので実行するだけ.

    % bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-latest )
    

    こんなスクリプト信用ならんwって人は,下記コマンドを手動でどうぞ

    % mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone --depth 1 git://github.com/wayneeseguin/rvm.git && cd rvm && ./install
    
  3. RVMの読み込み
    RVMはシェル関数として読み込まれます.
    次の一行を.zshrc(bashなら.bashrc)に追加しましょう.
    RVM用のPATHが追加されるので,PATHの設定が全部終わっているところに入れること.

     [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
    
  4. 動作確認
    シェルを再起動するなりして設定ファイルを読み込み直したら,次のコマンドを実行してみましょう.

    % rvm -v
    rvm 1.2.0 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]
    

    と表示されれば大丈夫でしょう.

  5. 1.8.7-p330のインストール
    % rvm list known
    ・・・
    [ruby-]1.8.7[-p330]
    ・・・
    

    とかやるとインストールできるものの一覧が表示されますが,とりあえず,1.8.7-p330を入れます.
    ここでReadlineのパスを指定してやります.

    % rvm install 1.8.7 -C --with-readline-dir=/opt/local
    
  6. 1.9.2-p136のインストール
    続いて,1.9.2も入れます.

    % rvm list known
    ・・・
    [ruby-]1.9.2[-p136]
    ・・・
    

    によるとp136が入るようです.

    % rvm install 1.9.2 -C --with-readline-dir=/opt/local
    
  7. RVMの設定
    インストールしたバージョンを確認してみます.

    % rvm list
    rvm rubies
    
       ruby-1.8.7-p330 [ x86_64 ]
       ruby-1.9.2-p136 [ x86_64 ]
    

    デフォルトは1.9.2にしておきましょう.

    % rvm use --default 1.9.2
    Using /Users/h2/.rvm/gems/ruby-1.9.2-p136
    

    ちなみにシステムデフォルトのRubyを使いたい時は

    % rvm use system
    Now using system ruby.
    

    でOKです.

  8. gemの移行
    RVMはgemのインポート・エクスポートをサポートしているので,これまで1.8.7-p174で使っていたgemを移行できます.
    移行といっても同じ物を入れ直すだけですが・・・

    % rvm use system ; rvm gemset export system.gems ; rvm 1.8.7 ; rvm gemset import system
    % rm system.gems
    

他にもRVMにはGemSetという便利な機能があるのですが,長くなってきたのでまた次回

Written by p0n in: PC | タグ: ,
3月
05
2010
0

VMware Fusionの仮想マシンをVMware Infrastructureに移動する方法

ひさしぶりに書くネタがこんなバッドノウハウかと思うと鬱になりそうです

事の発端は,ただのインストール
30分もあれば終わるはずでした

いつもどおりVMware Infrastructureにログインして,Debian testingのNighty BuildのISOイメージをマウント
あとは待つだけ・・・

ところが???インストーラはちゃんと起動するのに,cdromドライブのドライバがないと怒られて進めない
数ヶ月前のNighty Buildでは問題なかったのに・・・

いろいろやってみたもののよく分からないので,なんとなく思いついた

  1. VMware Fusionで仮想マシンを作ってエクスポート
  2. VMware Infrastructureでインポート

という流れでやることに

1のFusionで仮想マシンを作るのは書くことがないので省略します

Fusionの仮想マシンをInfrastructureで使うには,仮想マシンの形式を変換してやる必要があります

変換にはOVF Toolを使います
OVF ToolはWindows 32bit版,Linux 32bit版/64bit版しかないので,今回はFusion内のWindowsでやることにしました

OVF Toolは C:\Program Files\VMware\VMware OVF Tool にインストールされます

ここからは同じエラーに悩む人のために?試行錯誤の記録を残しておきますが,お急ぎの人は最後の結論だけお読み下さい

Infrastructureのメニューを見るとOVF形式でのインポートに対応しているようなので,OVFに変換してみます

仮想マシンにISOイメージなどを接続したままだと

> C:\Program Files\VMware\VMware OVF Tool\ovftool.exe VMXファイル OVFファイルの保存名
Error:
 - Connected device 'cdrom1'.

と怒られます

> C:\Program Files\VMware\VMware OVF Tool\ovftool.exe VMXファイル OVFファイルの保存名
Opening VMX source: VMXファイル
OVF version:   1.0
Name:          testing
Download Size:     Unknown
Deployment Sizes:
  Flat disks:      8.00 GB
  Sparse disks:   Unknown
Networks:
  Name:        nat
  Description: The nat network
Virtual Hardware:
  Family:       vmx-07
  Disk Types:   SCSI-lsilogic
Completed successfully

のように表示されれば成功です

OVFが出来たので,Infrastructureにインポートします
ところが,「OVF記述子の解析中にエラーが発生しました。 Unable to parse XML element ‘Envelope’.」
というエラーで進めません
どうやらOVFのバージョンが違うようです

VMware Communitiesのこちらの書き込みによると,Infrastructureの場合はVI形式に変換して,直接デプロイしてやる必要があるようです
新バージョンのvSphere 4ならOVF1.0やOVA形式にも対応しているようです

直接デプロイするということは,Infrastructureに直接つなげるWindowsマシンが必要ですが,使えそうなWindowsがFusionにしかいませんでした

ところがこのWindowsはホストオンリーなネットワークに繋がっていて,ホストのMacとしか通信できないようにしていました
なので一時的にブリッジに変更してやろうとしたのですが・・・つながらない

普段NATかホストオンリーしか使わないので気づいてなかったのですが,どうも vmnet-bridge が動いてないっぽい

調べてみると「/Library/Application\ Support/VMware\ Fusion/boot.sh」というスクリプトを編集するとか「–restart」で再起動するとか書いてるサイトがたくさんありましたが,どうもFusion 2の話の模様

vmnet-bridge というバイナリがあるので,これでブリッジをつくれるのだと思うのですが,1時間ほど粘ったものの使い方がわからずあきらめました(本質じゃないしね)

仕方ないので別の実機のWindowsマシンを急遽用意しました

OVF Toolを入れて,VMX形式の仮想マシンを変換します
データストアやネットワークインタフェースが複数ある場合はオプションで指定してやる必要があります

> C:\Program Files\VMware\VMware OVF Tool\ovftool.exe VMXファイル -ds=データストア -nw=ネットワークインタフェース vmxファイル vi://ユーザ名@ESXサーバの名前orアドレス
Opening VMX source: VMXファイル
Please enter login information for target vi://ESXサーバの名前orアドレス/
Username: ユーザ名
Password: パスワード
Opening VI target: vi://ユーザ名@ESXサーバの名前orアドレス
Warning:
 - The operating system has been mapped to 'Other Linux (32-bit)' from '' (id: 95).
Error:
 - Line 25: Unsupported hardware family 'vmx-07'.

今度はハードウェアファミリ「vmx-07」はサポートしてないと怒られます
たしかに,OVFへの変換結果をみると「Virtual Hardware」の「Family」が「vmx-07」になっています

なので無理矢理「vmx-04」に書き換えてやります
エディタでVMXファイルを開いて,「virtualhw.version」というエントリの値を「4」に書き換えます

これでうまくいくハズです

> C:\Program Files\VMware\VMware OVF Tool\ovftool.exe VMXファイル -ds=データストア -nw=ネットワークインタフェース vmxファイル vi://ユーザ名@ESXサーバの名前orアドレス
Opening VMX source: VMXファイル
Please enter login information for target vi://ESXサーバの名前orアドレス/
Username: ユーザ名
Password: パスワード
Opening VI target: vi://ユーザ名@ESXサーバの名前orアドレス
Target: vi://ESXサーバの名前orアドレス/
Disk Transfer Completed
Completed successfully

成功するとInfrastructureのインベントリに仮想マシンが追加されています

以上関係ないところで苦労しましたが,結論としては

  1. vmxファイルを編集
    virtualhw.version = "7"
    →virtualhw.version = "4"
    
  2. vmxをviに変換
    > C:\Program Files\VMware\VMware OVF Tool\ovftool.exe -ds=データストア -nw=ネットワークインタフェース vmxファイル vi://ユーザ名@ESXサーバの名前orアドレス
    

でOKです

Fusion3のブリッジについてはまた後日

あ〜つかれた

#リファレンスには載ってませんでしたが,OVF形式からもVI形式に変換&デプロイできました

Written by p0n in: PC | タグ: ,
2月
10
2010
0

GmailでWordPressをバックアップ

こんなクソブログですが基本的に自分の二次記憶として書いているので,なくなると困ったことになります

一応サーバのバックアップはしっかりしていますが,もっと安心できるところに置きたいと思っていたところ良さそうなプラグインを見つけました

WordPress Database Backupを使うと定期的にメールでDBのバックアップを添付して送ることが出来ます

天下のGoogleのサーバならディザスタリカバリもバッチリでしょう

インストールは展開するだけです

$ wget http://ilfilosofo.com/downloads/plugins/wp-db-backup.tar.gz
$ tar zxvf wp-db-backup.tar.gz -C public_html/wp-content/plugins/

あとは,「ダッシュボード」→「プラグイン」と移動してWordPress Database Backupの「使用する」をクリック

プラグインの設定は「ダッシュボード」→「ツール」→「バックアップ」から行えます

最初アクセスすると.「バックアップディレクトリが見つからず、作成もできませんでした。」といわれるので指定された名前のディレクトリを作成します

$ mkdir -m 777 wp-content/backup-21428

リロードして,送付先のメアドを入れてオシマイ

あとは,画像とか動画のバックアップをどうしようかなぁ
Flickrとかにアップして貼るのが一番ラクなのかも

Written by p0n in: PC | タグ:
2月
04
2010
3

OpenVPN導入2@Ubuntu 9.10

前回からのつづきです

証明書や秘密鍵などの生成が終わったので,サーバの設定に入ります

設定ファイルの雛形があるので,コピーして使います
なぜかサーバ用だけ固められているので,展開しましょう

% sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
% sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
% sudo gunzip /etc/openvpn/server.conf.gz

構成はL2トンネル+ブリッジにします

サーバの設定ファイルは以下の通り(IPとかは環境に応じて修正して下さい)

    主な変更箇所は

  • 接続時,自宅ネットワークのDNSサーバを参照
  • TLS-AUTHを使用
  • 暗号化アルゴリズムに256bitのAESを使用
  • リンクMTUを1472に設定
  • MTUはいずれ最適化しようと思いますが,ドキュメントに

    However, for many cases, using a value of 1472 will maximize performance for TUN devices over IPv4.

    と書いてあったので,とりあえず1472を指定(実はうちIPv6)
    フラグメントしてようが,とりあえず繋がってるのでよしとしますw
    もうすぐIPv6とおさらばするので

    port 1194
    proto udp
    dev tap0
    ca CAの証明書
    cert サーバの証明書
    key サーバの秘密鍵
    dh DHパラメータ
    ifconfig-pool-persist ipp.txt
    server-bridge 192.168.86.10 255.255.255.0 192.168.86.101 192.168.86.125
    push "dhcp-option DNS 192.168.86.10"
    keepalive 10 120
    tls-auth 共通鍵 0
    cipher AES-256-CBC
    comp-lzo
    persist-key
    persist-tun
    log-append  /var/log/openvpn.log
    verb 4
    link-mtu 1472
    

クライアントの設定ファイルもサーバに合わせて変更しましょう

    client
    dev tap
    proto udp
    remote VPNサーバの名前orアドレス 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca CAの証明書
    cert クライアントの証明書
    key クライアントの秘密鍵
    ns-cert-type server
    tls-auth 共通鍵 1
    cipher AES-256-CBC
    comp-lzo
    verb 4
    link-mtu 1472
    

次にブリッジの設定です
ブリッジ操作用のコマンドを使うのでインストールしましょう

% sudo apt-get install bridge-utils

ブリッジの作成と削除を行うスクリプトの雛形があるので,コピーして使います

% sudo cp /usr/share/doc/openvpn/examples/sample-scripts/bridge-st* /etc/openvpn/

まず,ブリッジの作成を行うbridge-startスクリプトです
ブリッジにデフォゲを設定するように変更しました

#!/bin/bash                                                                                     

#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.86.10"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.86.255"
eth_gateway="192.168.86.1"

for t in $tap; do
    openvpn --mktun --dev $t
done

brctl addbr $br
brctl addif $br $eth

for t in $tap; do
    brctl addif $br $t
done

for t in $tap; do
    ifconfig $t 0.0.0.0 promisc up
done

ifconfig $eth 0.0.0.0 promisc up

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
route add default gw $eth_gateway $br

つづいて,ブリッジの削除を行うbridge-stopスクリプトです
ブリッジの削除後,eth0をもとの設定に戻すように変更しました

#!/bin/bash                                                                                     

####################################
# Tear Down Ethernet bridge on Linux
####################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged together
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.86.10"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.86.255"
eth_gateway="192.168.86.1"

ifconfig $br down
brctl delbr $br 

for t in $tap; do
    openvpn --rmtun --dev $t
done

ifconfig $eth $eth_ip netmask $eth_netmask broadcast $eth_broadcast
route add default gw $eth_gateway $eth

ブリッジの作成・削除とOpenVPNサーバの起動・終了のタイミングは次の順で行います

  1. ブリッジの作成
  2. OpenVPNサーバの起動
  3. OpenVPNサーバの終了
  4. ブリッジの削除

OpenVPNの起動前にbridge-startを実行して,終了後にbridge-stopを行うようにします
64-67行目と81-84行目を追加しました

% sudo vim /etc/init.d/openvpn
 34 start_vpn () {
 ・・・
 60     # Check to see if it's already started...
 61     if test -e /var/run/openvpn.$NAME.pid ; then
 62       log_failure_msg "Already running (PID file exists)"
 63     else
 64       # Add bridge
 65       if [ -f /etc/openvpn/bridge-start ]; then
 66         /etc/openvpn/bridge-start
 67       fi
 68
 69       $DAEMON $OPTARGS --writepid /var/run/openvpn.$NAME.pid \
 70       $DAEMONARG $STATUSARG --cd $CONFIG_DIR \
 71       --config $CONFIG_DIR/$NAME.conf $script_security < /dev/null || STATUS=1
 72     fi
 73     log_end_msg $STATUS
 74 }
 75 stop_vpn () {
 76   kill `cat $PIDFILE` || true
 77   rm -f $PIDFILE
 78   rm -f /var/run/openvpn.$NAME.status 2> /dev/null
 79   log_end_msg 0
 80
 81   # Remove bridge
 82   if [ -f /etc/openvpn/bridge-stop ]; then
 83     /etc/openvpn/bridge-stop
 84   fi
 85 }

これで,OpenVPNサーバを起動すると

% ifconfig
br0       ・・・
eth0      ・・・
lo        ・・・
tap0      ・・・

% route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
192.168.86.0    *               255.255.255.0   U     0      0        0 br0
default         192.168.86.1    0.0.0.0         UG    0      0        0 br0

のように,tap0とbr0が作られて,ゲートウェイが設定されるようになります

OpenVPNサーバを終了すると

% ifconfig
eth0      ・・・
lo        ・・・

% route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
192.168.86.0    *               255.255.255.0   U     0      0        0 eth0
default         192.168.86.1    0.0.0.0         UG    0      0        0 eth0

のように,tap0とbr0は削除され,もとの設定に戻ります

細かいところですが,このままだとOpenVPNサーバの起動中にnetworkingを再起動すると,ルーティングテーブルがバグります
テーブルを見れば分かるように,192.168.86.0についてはbr0が先に,デフォゲはbr0のメトリックの方が小さいので問題なく動きますが・・・
ちょっと気持ち悪い

% route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
192.168.86.0    *               255.255.255.0   U     0      0        0 br0
192.168.86.0    *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
default         192.168.86.1    0.0.0.0         UG    0      0        0 br0
default         192.168.86.1    0.0.0.0         UG    100    0        0 eth0

なので,networkingを再起動するときにOpenVPNサーバが動作していれば,OpenVPNサーバも一緒に再起動するようにしました
76-80行目と92-95行目を追加しました
本来ならnetworkingをstopする時にも,OpenVPNサーバを終了させるべきかも知れませんが,networkingをstopすることはまずないのでズボラしました

% sudo vim /etc/init.d/networking
 75 force-reload|restart)
 76 >... # Stop openvpn if running
 77 >...if [ -e /var/run/openvpn.server.pid ]; then
 78 >...>...OPENVPN="TRUE"
 79 >...>.../etc/init.d/openvpn stop
 80 >...fi
 81
 82 >...process_options
 83
 84 >...log_action_begin_msg "Reconfiguring network interfaces"
 85 >...ifdown -a --exclude=lo || true
 86 >...if ifup -a --exclude=lo; then
 87 >...    log_action_end_msg $?
 88 >...else
 89 >...    log_action_end_msg $?
 90 >...fi
 91
 92 >...# Restart openvpn
 93 >...if [ "$OPENVPN" = "TRUE" ]; then
 94 >...>.../etc/init.d/openvpn start
 95 >...fi
 96 >...;;

OpenVPNサーバが起動している場合,bridge-startでeth0のアドレスが変更されて経路情報も消えているので,85行目の「ifdown -a –exclude=lo」で

RTNETLINK answers: No such process
SIOCDELRT: No such process

といわれますが,特に問題はありません

以上で,OpenVPNの設定はオシマイです

Written by p0n in: PC | タグ:
2月
03
2010
0

OpenVPN導入1@Ubuntu 9.10

出先や実家から自宅のネットワークにアクセスするためにVPNを導入しています

PPTPは論外として,自宅鯖移行のついでにiPhone/iPod TouchがサポートしているL2TP over IPsecも考えたのですが,プロトコルの仕様が少し曖昧なせいかプラットフォームによっては安定しないそうなので(実際安定しなかった),OpenVPNにしました

以下,作業ログです

インストール

% sudo aptitude install openvpn

サーバとクライアントの確認に証明書を使いますが,貧乏なのでオレオレ証明書です

OpenVPNには認証局や証明書を作成するためのeasy-rsaという便利なスクリプトがついています

% cd /usr/share/doc/openvpn/examples/easy-rsa/2.0

まず,オレオレ認証局 (CA) を作ります
sourceコマンドを使用する箇所があるので,rootでシェルを起動しましょう

% sudo -s

varsを適宜書き換えます
KEY_SIZEは2048bit以上にすることを強くオススメします
オレオレなので他は何でもOKです

# vi vars
export KEY_SIZE=2048
export KEY_COUNTRY="国"
export KEY_PROVINCE="州"
export KEY_CITY="都市"
export KEY_ORG="組織"
export KEY_EMAIL="メアド"

作業に必要な環境変数を設定して,スクリプトを実行します

# . ./vars
# ./clean-all
# ./build-ca

いくつか質問されるので答えましょう
基本Enter連打でOKです

続いて,サーバの秘密鍵と証明書を作ります

# ./build-key-server サーバ名

いくつか質問されるので答えましょう
基本Enter連打でOKですが,チャレンジパスワードを聞かれます

さらに,クライアントの秘密鍵と証明書を作ります

一般的には,クライアントが自分で鍵と証明書要求CSRを作って,認証局が署名して返します
具体的には,クライアントがbuild-reqやbuild-req-passスクリプト(パスフレーズで保護された証明書を作成)で生成したCSRに,CAがsign-reqスクリプトで署名します

今回は自分以外に使用者がいないので,認証局上で直接クライアントの鍵を作ってしまいます

# ./build-key クライアント名

いくつか質問されるので答えましょう
基本Enter連打でOKですが,チャレンジパスワードを聞かれます

最後に,DiffieHellmanパラメータを生成します

# ./build-dh

秘密鍵とDHパラメータは管理者以外が読めないようにしておきましょう

# chmod 600 keys/*.key
# chmod 600 keys/dh2048.pem

直接生成したファイルを参照しても構いませんが,「/etc/openvpn」以下に必要なファイルを置きましょう
自分はkeysというディレクトリを作成して,その中にまとめてあります

# mkdir /etc/openvpn/keys
# cp keys/CA証明書 /etc/openvpn/keys/
# cp keys/サーバ証明書 /etc/openvpn/keys/
# cp keys/サーバ秘密鍵 /etc/openvpn/keys/
# cp keys/DHパラメータ /etc/openvpn/keys/

クライアントにCAの証明書と秘密鍵を渡します
秘密鍵の受け渡しは安全な方法で

TLS-AUTHの共通鍵も生成しておきます
念のためアクセス権が600になっているか確認しましょう

# openvpn --genkey --secret /etc/openvpn/keys/ta.key

次回につづく

Written by p0n in: PC | タグ:
2月
02
2010
0

ATOK X3 for LinuxをUbuntu 9.10 (Karmic Koala) x86_64版にインストール

ようやくKarmicに移行できたので,ATOKも入れ直してみました

以前書いた「ATOK X3 for LinuxをUbuntu 9.04 (Jaunty Jackalope) x86_64版にインストール」というエントリとほとんど同じです

  1. Xから全員ログアウト
  2. 「Ctrl+Alt+F2」でコンソールに切り替え
  3. CDをマウント
  4. 環境変数LANGを設定
    % export LANG=C
    
  5. 空のファイル「/etc/gtk-2.0/gtk.immodules」を作成
    % sudo touch /etc/gtk-2.0/gtk.immodules
    
  6. CDドライブに移動して,スクリプトを実行
    % cd /media/cdrom
    % sudo bash ./setupatok_tar.sh
    
  7. 質問が3つ表示されるので順に「yes」,「/usr/bin/gtk-query-immodules-2.0」,「/etc/gtk-2.0/gtk.immodules」と答える
  8. IA-32ライブラリをインストール
    % sudo apt-get install ia32-libs
    
  9. IIMFのライブラリをインストール
    % cd bin/tarball/IIIMF
    % tar zxvf iiimf-client-lib-trunk_r3104-js1.i386.tar.gz -C (どこか適当な場所)
    % tar zxvf iiimf-protocol-lib-trunk_r3104-js1.i386.tar.g -C (どこか適当な場所)
    % sudo mv (どこか適当な場所)/usr/lib/* /usr/lib32/
    
  10. アップデート
    1. ATOK X3 for Linux アップデートモジュール(wgetの場合はコチラ
    2. 解凍
      % tar zxvf atokx3up2.tar.gz
      
    3. ATOKのアップデート
      % cd atokx3up2/bin/ATOK
      % sudo tar zxvf atokxup-20.0-3.0.0.i386.tar.gz -C /
      
    4. IIMFのアップデート
      % cd ../IIMF
      % sudo tar zxvf iiimf-server-trunk_r3104-js3.i386.tar.gz --exclude=’./usr/lib’ -C /
      % sudo tar zxvf iiimf-server-trunk_r3104-js3.i386.tar.gz ./usr/lib
      % sudo mv usr/lib/* /usr/lib32/
      
    5. GTKのアップデート
      % sudo tar zxvf iiimf-gtk-64-trunk_r3104-js3.x86_64.tar.gz -C /
      % sudo tar zxvf iiimf-gtk-trunk_r3104-js3.i386.tar.gz --exclude=’./usr/lib’ -C /
      % sudo tar zxvf iiimf-gtk-trunk_r3104-js3.i386.tar.gz ./usr/lib
      % sudo mv usr/lib/gtk-2.0/immodules /usr/lib32/gtk-2.0/
      
    6. ATOK X3 for Linux Ubuntu 9.04(GTK+ 2.16) 対応モジュール(wgetの場合はコチラ
    7. モジュールのインストール
      % sudo tar zxvf atokx3gtk216.tar.gz -C /
      
  11. CDをアンマウント
  12. 好みに応じてIIIMFステータス非表示ツールを設定
    1. 公式サイトからIIIMFステータス非表示ツールをDL(wgetの場合はコチラ
    2. 「/opt/atokx3/bin/」に展開し,パーミッションをroot:root (755)にする
    3. 「/etc/X11/xinit/xinput.d/iiimf」の末尾に「/opt/atokx3/bin/iiimf_status_hide」を追加
  13. 起動設定
    % sudo bash /opt/atokx3/sample/setting_debian4.sh
    
  14. 「Ctrl+Alt+F7」でXに切り替え
  15. 再ログイン
Written by p0n in: PC | タグ: ,
2月
01
2010
0

PT2設定 予約録画

epgrec

日経Linuxの記事用に開発された録画予約システムのepgrecを使用します

Ajaxを使ったUIで,市販のHDDレコーダのように番組表を見ながら予約できます

epgrecは公式サイトからDLできますが,日経Linux2010年2月号に収録されてるバージョンは受信可能電波の自動スキャン機能が使えます

  1. epgdump
      epgrecではEPGデータの取得にepgdumpが必要です
      2SNのアップ板からDLできます

      % tar zxvf epgdumpr2-utf8.tar.gz
      % cd epgdumpr2/
      % make
      % sudo cp epgdump /usr/local/bin
      

      録画したtsファイルがあれば,epgdumpをテストしてみましょう
      出力ファイルに「-」を指定すると標準出力に出力されます

      地デジの32chを録画した場合

      % epgdump 0032ontvjapan.com test.ts -
      

      BSの場合

      % epgdump /BS test.ts -
      
  2. epgrec
      epgrecのインストールはWordPressとかとほぼ同じで簡単です

      データをMySQLに格納するので,epgrec用のデータベースとユーザを作ります

      mysql> create database epgrec;
      Query OK, 1 row affected (0.00 sec)
      mysql> grant all privileges on epgrec.* to h2@localhost identified by 'パスワード';
      mysql> flush privileges;
      

      ソースを任意の場所に展開します
      自分は「/var/www/epgrec」に展開しました

      % sudo tar zxvfp epgrec-nk201002sp.tar.gz -C /var/www/
      

      epgrecはEPGの定期更新や予約録画にcronとatを使うので,「/etc/at.deny」から「www-data」を削除しておきましょう

      録画データの保存先は別パーティションの「/home」以下にしたいので,リンクを張っておきました

      % sudp mkdir /home/tv
      % sudo chown h2:h2 /home/tv
      % chmod 777 /home/tv
      % cd /var/www/epgrec/
      % ln -s /home/tv tv
      

      あとは,ブラウザでepgrecにアクセスして,指示に従って設定するだけです

      設定が終わると,EPG更新用の設定をcronの設定ディレクトリにコピーして,cronを再起動するように指示されます

      % sudo cp /var/www/epgrec/cron.d/getepg /etc/cron.d/
      % sudo service cron restart
      

epgrecは便利ですが,そのまま外部に公開するのは危険です
認証もないし,MySQLのパスワードも丸見えです

Written by p0n in: PC | タグ: ,
1月
31
2010
3

PT2設定 とりあえず録画まで

昨年末,なんとなくノリで買ってしまったPT2をようやくセットアップしました

一番苦労したのはUbuntu 9.10 (Karmic) x64のインストールですw

Karmicはこれまでデスクトップ,ノート,VMと5台を越える環境でインストールを試みてきたのですが,まともに起動したことがありませんでした

今回も例に漏れず,セットアップ直後からちょっとおかしかったんですが,なんとか無事に起動にこぎ着けました

なのに・・・アップデートするとudevのバグで起動不可能

ググったらLive CDを使った修復法が見つかりましたが,Live CDにはmdモジュールがないので,RAID必須な自分はAlternateしか持ってない(ブランクメディアもない)

方法としては,procとかをマウントして,chrootしてapt-get dist-upgardeするモノだったので,インストーラを途中で止めてやってみたんですが,今度はファイルシステムを認識しなくなりました・・・><

この時点で5時間以上経過・・・
追求するのは面倒なので9.04 (Jaunty) を入れて,アップグレードすることに

結論としてはこれが一番まちがいなく,ラクでした

無事OSが入ったところで,ようやくPT2の設定を開始

ちょうど今月の日経Linuxの特集2が「PT2で地デジ録画システムを作る」だったので,基本は付録DVDに収録されていたものを使いましたが,記事用に改良されたepgrec以外は全てネットでDLできます

  1. B-CAS用カードリーダー
      使用したカードリーダはGemalto PC Twinです
      USBのCCID (Chip/Smart Card Interface Devices) クラス対応なので簡単です

      % sudo apt-get install libccid libpcsclite-dev pcsc-tools
      

      lsusbでカードリーダが認識されているのを確認したら,B-CASをさしてカードが認識されてるか調べましょう

      % pcsc_scan
      PC/SC device scanner
      V 1.4.15 (c) 2001-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>
      Compiled with PC/SC lite version: 1.4.102
      Scanning present readers...
      0: Gemplus GemPC Twin 00 00
      
      Fri Jan 29 07:47:08 2010
       Reader 0: Gemplus GemPC Twin 00 00
        Card state: Card inserted,
      ・・・
           Japanese Chijou Digital B-CAS Card (pay TV)
      
  2. ビルド用環境の準備
      いろいろビルドするので,要りそうなものを入れておきましょう
      カーネルモジュールをビルドするのでヘッダも要ります

      % sudo apt-get install build-essential autoconf automake linux-headers-`uname -r`
      
  3. ARIB STD-B25解除用プログラム
      付録DVDのものを使用しましたが,まるも製作所でもDL出来ます

      % tar zxvf arib25-0.2.4.tar.gz
      % cd arib25-0.2.4/src
      % make
      % sudo make install
      
  4. ドライバと録画ツール
      付録DVDより新しいものがあったので,リポジトリからDLしました
      まずはドライバ

      % tar jxvf tip.tar.bz2
      % cd pt1-ee357d8f987f/driver/
      % make
      % sudo make install
      

      つづいて録画ツール
      記事用に改良されたepgrecを使うにはパッチを当てる必要がありますが,パッチは付録DVDに収録されているバージョン用です
      パッチを見ると分かりますが,ソースファイルを1つ追加して,Makefileに追加したファイル用のエントリを追加しているだけなので,適当に修正しました
      雑誌の付録なので,これ以上詳しく書くのは止めておきます

      % cd ../recpt1/
      % ./autogen.sh
      % ./configure --enable-b25
      % make
      % sudo make install
      

ここまで終わったら,再起動します

再起動後,dmesgを確認しましょう

% dmesg | grep pt1
[    9.879815] pt1-pci.c: r14:0c752a0a1e55 2010-01-25
[   11.487094] pt1_thread run

デバイスファイルも出来ているはずです

% ls- al /dev/*pt1*
crw-rw-rw- 1 root video 251, 0 2010-01-30 01:49 /dev/pt1video0
crw-rw-rw- 1 root video 251, 1 2010-01-30 01:49 /dev/pt1video1
crw-rw-rw- 1 root video 251, 2 2010-01-30 01:49 /dev/pt1video2
crw-rw-rw- 1 root video 251, 3 2010-01-30 01:49 /dev/pt1video3

いよいよ録画です
マスプロのページなどで自分の住んでいる地域の物理チャネルを確認しましょう

とりあえずTVQ (26ch) を30秒録画してみます

% recpt1 --strip --b25 26 30 test.ts

録画したtsファイルはVLCなどで見ることができます

録画だけでなくストリーミングも出来ます
録画時間を「-」にすると無制限録画になります
ポートを指定しない場合はUDP1234が使用されます
/dev/null に捨てずに同時に録画することもできます

% recpt1 --udp --addr 視聴するPCのアドレス --port ポート番号 --strip --b25 26 - /dev/null

自分はMacのVLCで見ていますが,MacのVLCにはバグがあるようです
URLを「udp://録画PC:1234/」としても,メディアリソースロケータの欄を見ると先頭に「http://」が挿入されて「http://udp://録画PC:1234/」にアクセスしようとするので,「http://」を削除する必要があります
ただなぜかこれだけでは再生されず,さらに続けて「udp://」にアクセスすると再生が開始されます

チャンネル変更もできます

% recpt1ctl --pid recpt1のプロセス番号 --channel チャンネル番号

たまたまやっていた24をとってみました
URLが「udp://」になっているのが分かると思います
recpt1

地デジはインターレスなので「インターレス解除」を「破棄」にしましょう

PT2は優秀ですね〜
Atom330+IONのPCですが,Xを起動して,録画+別の番組をストリーミングしても,CPU使用率は1〜2%です

とりあえず今回はここまで

Written by p0n in: PC | タグ: ,
12月
21
2009
0

Mac OS XのIPv6には要注意

詳しいことは全てこちらのサイトに書いてますが,多くの人が知らずに使っているのはよくないと思うのでリブログします

実際,自分はIPv6をオフにはしていましたが,この問題を知りませんでした

Mac OS Xが自動で割り当てるIPv6アドレスはMACアドレスから生成されていて,IPv6アドレスからMACアドレスを容易に割り出せます

つまり,通常のインターネットを介した通信で相手に伝わるはずのないMACアドレスが,通信路上のホストや相手に丸見えです

スグに直接の脅威になるわけではありませんが,機器固有のMACアドレスは簡単に収集できますし,IPアドレスと対応づけた情報が流通すれば,個人のトラッキングも可能になってきます

昔からIPv6のプライバシー問題はいろいろ議論されてきましたが,クラウド(最近バズワード化してますが・・・)とかホットスポットとかが普及していくと,MACアドレスやIPアドレスも容易に収集できてしまうので,そのうちトラッキングに使用されても不思議ではありませんね

ということで,現時点ではほとんど使われていないIPv6をオフにするのが一番ですが,v6を使う人は,一時的なアドレスを使用するように

# sysctl -w net.inet6.ip6.use_tempaddr=1

しておきましょう

Windowsでは一時アドレスの使用がデフォルトらしいので,なぜMacはそうじゃないのか不思議です

Written by p0n in: PC | タグ:

TheBuckmaker WordPress Themes Webhosting, MP3, AAC & Co