アナログ
RSS  

UltraVNCを使う2008/12/21 00:35

UltraVNC
リモートコントロールするWindows PCにはいつもUltraVNC(リモートアシスタントとリモートデスクトップを足したようなもの)を使ってます。
理由は、OSが2kかXP HEなのでリモートデスクトップがないのと、外からアクセスするときUltraVNCはプラグインで簡単に暗号化できて、なおかつ、電話回線からでもなんとか操作ができる(まるで紙芝居でしたが)から。

今回、本家から1.0.5をダウンロードしてインストールしたのですが、Vista対応のためなのでしょうか?何故か「winvnc」が2つ起動して、17MBほど持っていかれます。
XPで使うのに意味もなくメモリを消費されてはたまらないので、以前つかってた1.0.2(6MB程度)に戻すことにしました。

ただ、1.0.2を使う場合、vncviewer.exeに脆弱性がある点を注意しないといけません。

もっともlisten モードで使わなければいいだけですけど、脆弱性があると分かってるソフトを使うのも気分のいいものではないので、私は1.0.5のvncviewer.exeを使ってます。サーバとビューアは同じバージョンを使うのが原則ですが、そんなクリティカルな用途じゃないので気にしてないです。(1.0.5のvncviewer.exeですが、本家のインストーラでビューアのみインストールできるようになってます)

実際にインストールする1.0.2ですが、本家のバージョンは日本語キー対応してないため、UltraVNC 日本語版 | NANASI's Home PageのUltraVNC 1.0.2 日本語版 Release 2を使っています。
インストーラまで日本語化されていますので、戸惑うことはないと思います。せいぜい、サービスに登録するにチェックを入れるくらいでしょうか。
インストールが終わったら、パスワードを設定して、スタートメニューからタスクトレイアイコンを起動します。

タスクトレイアイコンを右クリック「プロパティ」を選択するとダイアログが表示されます。そこで「ビデオフックドライバ」にチェックが入っているのを確認しましょう。それと念のため「ビデオフックドライバのチェック」ボタンを押して正常動作しているか確認しときましょう。

うまく動作してなければ、本家のUltraVNC 1.0.2 Video Driver Setupをダウンロードして、ドライバを上書きインストールすれば大丈夫と思います。

とここまでが、ググれば普通に出てくる話だと思います。この先の話もググれば見つかる話ですけど(笑)。
(アサブロは1記事1画像なので、マニュアルのように画像をたくさん貼るのは、それはもう大変なのですよ。だから普通にあるものは端折るんですw)
参考
UltraVNCでコンピュータをリモート制御する(サーバ編) - @IT
UltraVNCでコンピュータをリモート制御する(クライアント編) - @IT

1.0.5のvncviewer.exeで日本語版1.0.2に接続する

UltraVNC 1.0.5.4 (SECURITY UPDATE)(09/02/05:脆弱性対策版がリリースされています)
最新のvncviewerのみのダウンロードが可能です。(この場合は適当なフォルダに解凍して起動します)
UltraVnc 1.0.5.6 Viewer(実際にはダウンロードページの最新版を選びましょう)


vncviewer.exeを起動したらVNC Serverの入力項目にホスト名を入れて「Options...」をクリック
接続ダイアログ1

「Japanese keyboard」にチェックを入れて「OK」をクリック
上の画面に戻ったら「Save connection settings as default」にチェックします。
接続オプション

「Connect」を押すとパスワードを求められますので、サーバにセットしたパスワードを入力すると接続できます。

これでサーバの画面が表示されメモ帳などを起動すれば、「Alt」+「漢字」で日本語入力できる(当たり前ですがサーバ側のWindowsに日本語環境があればの話です)と思います。

自宅のLAN内同士のPCならセキュリティとか難しい話はないでしょうから、「Ctrl」+「Alt」+「F5」で設定を保存しておくと、次回からそのファイルで起動すれば、パスワードとか無しですぐ接続されます(.vncがvncviewer.exeに関連付けされてる必要があります)。

通信を暗号化する

私が使ってるプラグインはMSRC4 DSM Plugin for Ultra VNCです。
MSRC4Plugin122.zipをダウンロード、解凍して「MSRC4Plugin_NoReg.dsm」をサーバ及び、ビューアがインストールされているフォルダの両方にコピーします。

初めて使う場合、暗号キーファイルがありませんので、キーファイルを作る必要があります。
ビューアを起動して「MSRC4Plugin_NoReg.dsm」を選んで「Use DSMPlugin」をチェック、「Config」ボタンをクリックします。
接続ダイアログ2

「KEY FILE NOT FOUND.」と表示されます(KEY FILE FOUNDだと以前誰かがキーファイルを作っているということになりますので、確認する必要があります)ので、「rc4.key」という名前にし「Gen Key」ボタンをクリックしてキーファイルを作ります。
暗号プラグイン

キーファイルはビューアのインストールフォルダに作られています。サーバにも同じキーファイルが必要ですので、サーバのインストールフォルダにコピーします。

次にサーバが暗号プラグインを使うように設定します。サーバのタスクトレイアイコンを右クリック「管理プロパティ」を選択して「DSMプラグイン」で「MSRC4Plugin_NoReg.dsm」を選んで「使用」にチェックしたら「OK」をクリックします。
サーバ管理プロパティ


これで、次回接続時には通信が暗号化されます。実際に接続して見ましょう。
vncviewer.exeを起動して、接続するサーバ名を入力します。
次にオプションで「Japanese keyboard」がチェックされているか確認します。
次に「MSRC4Plugin_NoReg.dsm」が選ばれてるのを確認して「Use DSMPlugin」をチェック「Connect」ボタンをクリックしたら、後は同じです。

接続ダイアログ2

家のLAN内では必要ないことですが、外から接続する場合はプラグインで暗号化するかSSHでポートフォワードするのが無難です(プラグインの場合、ポートも変更した方がいいです)。

以上やる気のない説明でしたが、ここに書いた内容を元にググれば、もっといい説明が見つかるでしょうから、とっかかり程度でいいでしょうということでw


-追記-
UltraVNCを使っていると、既に接続しているクライアントで、うっかりもう一度接続しようとすると、UltraVNCサーバが落ちてしまいます。
近くのコンピュータならそこまで行ってサービスを再起動すればいいけど、遠く離れた場所となるとそうはいきません。そんな場合に備えて、サービスがエラーになったときの振る舞いを設定しておくのが吉です。

「コントロールパネル」→「管理ツール」→「サービス」で目的のサービス(UltraVNC)のプロパティを開いて「回復」のタグを選びます。

サービスのプロパティ
「最初のエラー」「次のエラー」は「サービスを再起動する」でいいでしょう。問題は「その後のエラー」で、プログラムのバグで終了した場合に原因が取り除かれていないと、再起動と異常終了のループになる恐れがあります。

その危険を避けるなら「なにもしない」にするのがいいでしょう。重要なDBや処理が動いてるサーバとかも「なにもしない」にするのが無難です。この手の設定は危険性を理解した上で、自己責任でやってください。私は知らんよw
(その後のエラーでなにもしないとするなら、エラーカウントのリセットを1日後にしておくといいかも)

この方法は意外と知らない人がいるようで、UltraVNCが落ちた時のために別のVNCをインストールしてVNCを2つ起動する人とか、びっくり話をたまに聞くので書いてみたです。


追記2
vncviewerでScroll-Lockをonにすると「ALT+TAB」や「ALT+SPACE」が直接入力できるようになります。
リモートメンテする方にはありがたい機能ではないかと。

-追記3-
日本語化工房-KUP - UltraVNCで1.0.5.6の日本語パッチが提供されています。

ところで私のようにvncviewer.exeだけダウンロードして使ってるようなひねくれものはどうするかというと
  1. パッチ(ultravnc1056_jp1.zip)をダウンロードして解凍します
  2. 解凍した中から「vnclang.dll」を「vncviewer.exe」と同じフォルダへコピーします
これだけです。
使い慣れたら日本語化する必要もありませんけどね(むしろ項目解説を検索するときは英語のままで探さないと見つからなかったりしますので)。
UltraVNCviewer日本語化


-追記4-
Windows 7でVNC接続情報の関連付け

W32Timeで時刻合わせ2008/12/16 23:45

昨日はXP Home Editionのあまりのモッサリぶりに投げ出してしまったのですが、よく考えればサーバとして使いたい訳で、XPと2kどちらがサーバとして勝手がいいか確認のため、XPで復旧を続けることにしました。

LOOX S80Cがやっていた一番大事な仕事はNTPサーバです。Windows 2000のwindows time サービスはSNTPだったので、代わりにAdjustPCを使ってました。

でも、XPのwindows time サービスはNTPでサーバとして動作しますので、これを使ってみたいと前々から思ってました。(本当はルータのRT58iがNTPをやってくれたらいいのですが、1時間で約1秒も狂うので仕方なくS80Cにやらせてます。ちなみにうちのS80Cは80分で100ms程度遅れます)

と言うわけで、今日はW32Timeメモです。

先ずはWindows FWの穴あけ。例外のポートの追加で、UDP、Port123をNTPとして許可する。(これを忘れてて、繋がらないと小一時間途方にくれたorz)

次にregeditで
HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥W32Time¥Config
AnnounceFlags:10→5
LocalClockDispersion:10→0
UpdateInterval:<SpecialPollIntervalと同じ更新間隔(秒)>
MinPollInterval:<最小同期間隔(2n秒)>
MaxPollInterval:<最大同期間隔(2n秒)>

HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥W32Time¥Parameters
NtpServer:<NTPサーバーのアドレス>,0x8

HKEY_LOCAL_MACHINE\SYSTEM¥CurrentControlSet¥Services¥W32Time¥TimeProviders¥NtpClient
SpecialPollInterval:<更新間隔(秒)>

HKEY_LOCAL_MACHINE\SYSTEM¥CurrentControlSet¥Services¥W32Time¥TimeProviders¥NtpServer
Enabled:0→1(NTPサーバを有効にする)
<NTPサーバーのアドレス>はプロバイダが提供しているアドレスかntp.jst.mfeed.ad.jpを使えばいい。
<更新間隔(秒)>は1380秒(23分)としました。(NtpServerを0x8に設定してるので再々追記の通り参照先が違いました)

このあとコマンドプロンプトで
net stop w32time
net start w32time
w32tm /resync

で使えるようになります。
実際に同期できているかは
w32tm /monitor /computers:NTPサーバのアドレス
例えば、セットしたのがアサヒネットのNTPなら
w32tm /monitor /computers:ntp.asahi-net.or.jp
でNTPとの時刻の誤差が分かります。

他のPCやルータの時刻合わせは、S80CのIPアドレス(または、コンピュータ名)をNTP(SNTP)クライアントに指定するとS80Cの時刻と同期します。

注意:「日付と時刻のプロパティ」の「インターネット時刻」をさわると、せっかくの設定がおかしくなるらしい。


<追記>
レジストリの部分は、次をメモ帳にコピペして「w32time.reg」など~.regという名前で保存したら、右クリックの「結合」でセットできます。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥W32Time¥Config]
"LocalClockDispersion"=dword:00000000
"AnnounceFlags"=dword:00000005
"UpdateInterval"=dword:000006cc
"MinPollInterval"=dword:0000000a
"MaxPollInterval"=dword:0000000c

[HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥W32Time¥Parameters]
"NtpServer"="ntp.jst.mfeed.ad.jp,0x8"

[HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥W32Time¥TimeProviders¥NtpClient]
"SpecialPollInterval"=dword:000006cc

[HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥W32Time¥TimeProviders¥NtpServer]
"Enabled"=dword:00000001

"NtpServer"="ntp.jst.mfeed.ad.jp,0x8"

の部分はあらかじめ自分のプロバイダのNTPに変更しておくのがいいです。アサヒネットなら

"NtpServer"="ntp.asahi-net.or.jp,0x8"

となります。
また更新間隔は29分(6cc)にしています。(NtpServerを0x8に設定してるので再々追記の通り参照先が違いました)23分とか31分とか素数がいいかなと何となく思います。(このパソコンと同期するクライアントの更新間隔も素数にしておけば、サーバの更新とかち合わなくていいかなという意味で)
</追記>
(再追記:UpdateIntervalにSpecialPollIntervalと同じ値をセットした方が無難らしい)
再々追記:W32Time\Parameters\NtpServerに0x1以外が設定されているときは2のW32Time\Config\MinPollInterval乗からMaxPollInterval乗の間で同期されるとのこと)
Windows OSにおける時刻同期サービスとNTP - @IT
通常は最小同期間隔から同期の状態を確認しながら徐々に間隔が空く形で最終的には最大同期間隔で同期される。
というわけで「MinPollInterval=a(210≒17分)」~「MaxPollInterval=c(212≒68分)」としてみた。


参考
Windows XP で権限のあるタイム サーバーを構成する方法
Windows Time Service and Resulting Internet Communication in Windows Server 2008
Windows タイム サービスのデバッグ ログを有効にする方法
NTP - wiki@nothing
Windows OSにおける時刻同期サービスとNTP - @IT
w32timeデバッグ・ログとw32tmコマンド - @IT
UNIXベースのNTPサーバとWindows Timeサービス - @IT

時刻が大きく変更されないように Windows タイム サービスを構成する方法
 NICTが誤った時刻を配信してパソコンの時間が狂ってしまったというトラブルの件

ブラウザーのバグを利用した行動追跡:追記2008/12/13 07:18

ブラウザーのバグを利用した行動追跡のその後というか続き。

高木浩光@自宅の日記 - 楽天ad4Uの隠しリンクを露出させるユーザスタイルシート

そこに埋まってるのか……えっと、開いて行くと……log.ad4u.drecom.jp?
hostsファイル(C:\WINDOWS\system32\drivers\etc\hosts)に追加しとこう
0.0.0.0 ad4u.drecom.jp
0.0.0.0 log.ad4u.drecom.jp
※Windows 7で0 hoge.jpという指定は無効でしたので、0→0.0.0.0に修正しました。

他に変なアドレスはなさそうだし、当面これでいいかなぁ。

ad4U:ドリコムの次世代行動ターゲティング広告技術サービス
によると、まだ大手のお客さんはlivedoorと楽天だけのようだけど。

楽天とドリコム、行動ターゲティング広告「楽天ad4U」を提供:マーケティング - CNET Japan
 2008年4月から5月にかけて、社内で実施した楽天ad4Uと通常のバナー広告の広告効果を比較するテストマーケティングでは、楽天ad4Uは広告クリック率 (CTR)で約1.5倍、実際に物品を購入した利用者の割合を示す顧客転換率 (CVR)で約3倍の効果があったという。

そんなに効果あるなら、もっと普及しそうなものだけど……。
考えようによっては、この手法で興味のない広告を見ずに済むと言えなくもないけど、実際どのように情報が記録され、利用されているか見えないからなぁ。しかも、オプトアウトらしいし。

楽天ad4uの手法をやってみる。 - nottegraの日記によると
この部分をAjaxなどで非同期で通信し、戻りの値で広告のデータを返すようにする。
※楽天Ad4uは通信せず、Javascript内で判断し、提供する広告を決定する。
これによってプライバシーは守られていると主張?=違法ではない。
それはそれでいいのだろうけど、では元ネタの送りつけてくるアドレス一覧はどうやって選別されているのか?フィードバックされてない情報に価値はあるのか?あやしい訳で。

Jeremiah Grossman: I know where you've been
のサンプルのアドレスを見れば分かるだろうけど、アドレスそのものが行動解析に役立つものでなくては何の価値もない訳で。

今のところ納得もできないし、その手法を認めたくもないので、hostsファイルで拒否しておくしかないか。