penguin's HP

おふとぴっくなぶろぐ。

Ubuntu (and other Linux) 用に LogMeIn Hamachi のGUIクライアントを書いた

seriolaLogMeIn Hamachiを使用して鳥取の友人とネットワークの共有をしています.
それぞれのクライアントの状態を確認するために毎回コマンドを打ち込んでいたのですが,
それが面倒くさくなったのでGUIクライアントを書いてみました.

ダウンロードはこちら
※リンク切れ修正+バグフィックスしました(2011-03-07)


<主な機能>
○SeriolaはHamachiのGUIクライアントです.Ubuntuと他のLinux上で動作すると思われます.
 それぞれのクライアントは1つのパネルに表示され,そのパネルを右クリックすることで各機能にアクセスできます.

○vinagre, gvncviewer, rdesktopを使用して各クライアントのデスクトップが共有できます.
 sshを用いてCUIでコントロールすることもできます.

○各クライアントの共有フォルダに簡単にアクセスできます.

○Hamachiのサービスが落ちたときに自動的にサービスを再起動することができます.

○複数のネットワークに属している同一クライアントを一つのネットワークからだけ表示することができます.

○実行ファイルと同じフォルダ内のpluginsディレクトリにシェルスクリプトを保存しておくことで,
 各シェルスクリプトに引数としてIPアドレスを与えて実行できます.
 (chmod等で実行可能にしておく必要があります)

○Hamachiのログに簡単にアクセスできます.表示にはgeditを用います.


<使用方法など>
ファイルを展開したら,まず'mkscript.sh'を実行してください.
これにより,実行用のシェルスクリプトが作成されます.プログラムの実行はこのスクリプトから行ってください.
アイコン用の画像ファイルも入っているので,ランチャを作成する場合等にご使用ください.
アンインストールはファイルを削除するだけでOKです.ファイル内以外には書き込みしていません.


<必要環境>
Javaの実行環境,sudo, gksudo, hamachi, ping, gnome-terminal, gedit, vinagre, gvncviewer, rdesktop, nautilus
(JREとhamachi,sudoがあれば最低限の動作確認はできると思われます)


<注意点など>
とりあえずJavaで書いたのでJavaの実行環境があれば動作すると思われます.
また,仕様だと思われますが,管理者権限で実行するとnautilusでsmb://...が開けないようなのですが,
内部で`sudo hamachi list`を呼んでいるので管理者権限が必要です.
それを解決するために,最初にsudoあるいはgksudoを用いてパスワードを入力し,
一般ユーザ権限にてプログラムを実行する必要があります.

壊れたパーティションの修復

自宅のファイルサーバにアクセスしようとしたところ、pingは通るがsamba経由でのアクセスができなくなっていました。
ssh接続も通らないので、サーバ(ノートパソコン)の画面を開いて直接見てみたところ、どうやらカーネルパニックになっている模様。
とりあえず強制終了して再起動を試みるが、目的のHDDのアクセスランプがずっと点灯している。

とりあえず目的のファイルにアクセスするため外付けHDDを取り外し、メインのパソコンにてマウントを試みる。

通常ならGNOMEが自動的にマウントしてくれ、ファイルブラウザを起動して内容を表示してくれるのですが、CPU使用率が高くなったままでいつまでたってもマウントしてくれません。
ファイルブラウザを開いてみると、HDD自体は認識している様子。(右ペインに表示されている)
右クリックしてマウントを指示すると、以下のようなメッセージウィンドウが。

DBus error org.gtk.Private.RemoteVolumeMonitor.Failed: An operation is already pending

ふうむ、何かおかしい。
とりあえずメッセージをそのままググってみるが、微妙な結果。cdromドライブに関するものが多い模様。

$ sudo mkdir /media/temp
$ sudo mount /dev/sdb1 /meia/tmp -o force

としてみると、エラーメッセージを吐く。

スーパーブロックが壊れているかもしれないらしい。

今度はスーパーブロックが破損している前提でググってみる。
HDD内のバックアップから復元しようとしたがCPU使用率が100%になり失敗。

スーパーブロックを再作成するコマンドで復旧した。
手順は以下。

$ sudo mke2fs -S /dev/sdb1

これで正常にマウントできるようになった。
目的のファイルにも無事アクセスすることができた。

参考:@IT:壊れたパーティションを修復するには

Hamachiをインストールしたパソコン、OSの再インストールの前に・・・

113c0155.pngHamachiを利用してVPNを構築できたはいいけど、最近新しいOSに入れ替えようと思ってて・・・なんてこともあると思いますが、ちょっとまって!

Hamachiでは、新しい環境で(つまり、OSを再インストールした後や一旦アンインストールした後に)ログインしようとすると、また新しくIPアドレスが与えられます。今までと同じIPアドレスが振られることはありません。
つまり、今まで使っていた環境には戻れなくなるということです。
自分が作ったネットワークがあれば、それを削除することもできなくなります。(そのネットワークを利用することは可能ですが)

そこで、OSを再インストールするまえに、現在のHamachiの環境設定ファイルをバックアップしておきます。
これがあれば、新しくhamachiをインストールしたときも元の環境をそのまま使えます。

○バックアップするフォルダの場所
<Windowsの場合>
C:\Documents and Settings\LocalService\Local Settings\Application Data\LogMeIn Hamachi
↑このフォルダをまるごとバックアップします

<Linuxの場合>
/var/lib/logmein-hamachi/
↑このフォルダをまるごとバックアップします

○バックアップしたファイルをもとに戻す
Windowsの場合はよく分かりませんが、Linuxの場合は以下の手順で環境を復元できます。
hamachiをインストールした直後に以下のコマンドを実行します。

$ sudo /etc/init.d/logmein-hamachi start

hamachiを起動したら、

$ sudo hamachi

で状態を確認してください。IPアドレスの欄などが空白になっていると思います。
この状態でログインしてしまうと新しいIPを振られてしまいますので気をつけてください。

さて、バックアップしたフォルダをもとに戻します。新しくファイルができていると思うので、一応削除してからの方がいいと思います。
ファイルをコピーする再は管理者権限が必要になるので、

$ sudo nautilus

で管理者権限でファイルブラウザを起動してください。
コピーが終わったらhamachiを再起動させます

$ sudo /etc/init.d/logmein-hamachi restart

これで、

$ sudo hamachi

で状態を確認したときに、クライアントIDが振られて入れば復元成功です。
IPアドレスは有限なネットワーク資源なので、無駄遣いしないようにしましょう。
(hamachiの方も、一定期間ログインしないと自動的にIPをリセットするということができるといいのですが・・・)

Hamachiを利用して出先から自宅へのVPN接続を確立!〜ファイル共有とかリモートデスクトップとか〜

203a19f4.png今僕は京都に住んでいるのですが、鳥取の友達からhamachiというソフトを勧められました。
hamachiって何?・・・ルータの設定などをしなくても簡単にVPN接続ができるようにするソフトウェアです。

VPN(Virtual Private Network)とは、混沌としたインターネット上に構築する、自分たちだけが利用できる仮想のLANのようなものですね。他者からはアクセスできないので、Skypeでの通話中を思い浮かべるとわかりやすいかもしれません。

通常、VPN環境を構築するにはルータの設定やらOSの設定やらで面倒くさいのですが、hamachiを使うと本当にインストールして接続するネットワークを選択するだけでVPN環境を構築できます。
(あんまり簡単なのでセキュリティの面で若干不安になるくらいです)

さて、今回はUbuntu10.04(Lucid Lynx)、MacOSX10.4(Tiger)、WindowsXP、WindowsVista、Windows7での相互接続を確認しました。
VPNに接続してしまえば、そのネットワークに接続しているコンピュータにアクセスできるようになります。
すると、共有フォルダにアクセスできたり、プリンタを共有できたり、ネットワークのパソコンでリモートデスクトップが利用できたりと、便利なことがたくさんあります。

Hamachiでは、ネットワークを作りログインすると、各パソコンにグローバルIPアドレス、ローカルIPアドレスと異なるIPアドレスが新しく与えられます。
この新しいIPアドレスを用いてVPN上のコンピュータを識別します。



Hamachiを利用できるのは、中央サーバが存在して、そこでIPアドレスの振り分けとオンライン/オフラインの確認を行っているからです。
パソコン同士が直接接続できる状態なら、直接パソコン同士がつながり、そうでなければ中央サーバを介して接続します。
直接接続を確立した場合は割と高速な通信ができますが、中央サーバを介する場合は通信速度が落ちます。これはどうしようもないのですが。。

さて、LinuxでHamachiを使う場合はコマンドラインからの利用となりますが、接続を確立するところまでなので、その後はいつも使っているファイルマネージャや、ターミナルサーバクライアントなどが利用できるようになります。

○hamachiパッケージのDL
Linux/Macを使っている場合はここから、Windowsの場合はここから、それぞれ適切なパッケージをDLします。

今回はUbuntuにインストールするので、32bit環境ならlogmein-hamachi_2.0.0.11-1_i386.debを、64bit環境ならlogmein-hamachi_2.0.0.11-1_amd64.debをDLします。
DLしたフォルダに移動してファイルをダブルクリックすればインストール画面になります。

インストールできたら、端末を開いて設定を行います。

○VPNの設定
<ネットワークを新しく作る場合>
$ sudo /etc/init.d/logmein-hamachi start
$ sudo hamachi login
$ sudo hamachi set-nick <自分のPCのニックネーム(表示用)>
$ sudo hamachi create <ネットワーク名>
$ sudo hamachi go-online <ネットワーク名>

<既にあるネットワークに接続する場合>
$ sudo /etc/init.d/logmein-hamachi start
$ sudo hamachi login
$ sudo hamachi set-nick <自分PCのニックネーム(表示用)>
$ sudo hamachi join <ネットワーク名>
$ sudo hamachi go-online <ネットワーク名>
パスワードの入力を要求されるので、入力すればVPNに接続できます。

オンラインになったら、

$ sudo hamachi list

でネットワーク上のパソコンの状態を確認できます。
*がついているパソコンがオンラインになっています。

○共有フォルダにアクセスする
<接続される側>
共有するフォルダを右クリックして、共有のオプションをクリック。
このフォルダを共有するにチェックを入れ、適宜オプションをチェックします。
自動的にアクセス権限を変更してくれるので、あとの作業はUbuntuにおまかせします。

<接続する側>
接続したいオンラインのパソコンIPアドレス(5.x.x.x)をメモして、

$ nautilus smb://5.x.x.x/

とすると、共有フォルダリストがファイルブラウザに表示されます。

○画面をリモート操作する
<接続される側>
Ubuntuのリモート操作にVNCを使うので、まずはそれをインストールします。
$ sudo apt-get install vnc4server

インストールしたら、システム>設定>リモート・デスクトップ を開きます。
チェックボックスすべてにチェックを入れます。(この辺はお好みで構いません。)
パスワードを設定して、閉じます。

<接続する側>
アプリケーション>インターネット>ターミナルサーバクライアントを用いて画面を操作します。

接続先がWindowsの場合、プロトコルはRDPまたはRDPv5を選択します。
コンピュータのところに接続先IPアドレス(5.x.x.x)を入れ、
接続先PCにログインするユーザー名とパスワードを入力したら、右下の接続ボタンを押下します。

接続先がLinuxの場合はまずVNCを導入します。
$ sudo apt-get install vncviewer

ターミナルサーバークライアントのプロトコルでVNCが選択できるようになるので、
VNCを選択してIPアドレスを入力すれば、そのまま接続ボタンを押下します。


一度VPNの設定をしてしまえば再起動しても自動的に接続されるので、いちいちコマンドを入力しなくてもよくなります。
多分こんな感じで大丈夫だと思いますが、安全性などは未検証(というか検証できない?)なので不安な場合は詳しく調べてからにした方が無難だと思います。
現在は京都と鳥取でVPNを確立しているのでリモート操作・ファイル共有ともにうまくできています。(プリンタの共有はまだしていません・・・というか遠すぎて使い道がない?)
これを利用すれば帰省しても京都のファイルがそのまま使える・・・?というので少しワクワクしています。

Ubuntu 10.04 on Macbook 5,1 (Late 2008 Aluminum) で アップデートしたらiSightが使えなくなったときの対策。

Ubuntu10.04(Lucid Lynx) でアップデート後にSkypeでビデオ通話しようとしたところ、
iSightが使えなくなっていました。最初のカーネルにすると使えるものの、
今度はnVidiaのドライバがうまく動いてくれない。ということで、
https://help.ubuntu.com/community/MactelSupportTeam/AppleiSight
↑ここを参照して無事動くようになりました。

isight-firmware-toolsというソフトを利用して、Macのドライバから抽出するようです。
(多分ndiswrapperとかbcm43xx-fwcutterの類のものだと思います。)

○Step1: 上のAppleUSBVideoSupportというファイルを用意する
/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
↑このファイル(AppleUSBVideoSupport)が必要になります。
※MacOSX 10.4(Tiger)と10.5(Leopard)の場合は問題ないようですが、
 10.6(Snow Leopard)のものはうまくいかないようです。
 10.5以前のマシンからとってくるか、あるいはGoogle先生に聞いてみるか・・・

さて、ファイルが準備できたら、とりあえずホームディレクトリ直下に置いときます。

○Step2: isight-firmware-toolsをインストールして先のファイルを指定
$ sudo apt-get install isight-firmware-tools

ダイアログが出てくるので、さっきのファイルを指定します。
例) /home/(ユーザー名)/AppleUSBVideoSupport
入力したら、TABキーで移動して、(多分Enterで)了解を選択します。

インストールが完了したら、一旦パソコンを終了して、もう一度起動しなおします。
※再起動ではダメらしい

<Step2のインストールで失敗した場合>
$ sudo apt-get --purge remove isight-firmware-tools
$ sudo apt-get install isight-firmware-tools
上の2行を実行してもう一度やり直してください。
・指定するファイルはあっているか
・ファイルはMacOSX10.5以前のものか


これで、うまくiSightが動くようになりました。
Profile

H2.7.16生
大学生になりました。

Archives
訪問者数
記事検索
Twitter
  • ライブドアブログ