masahirorの気まま記録簿

個人的な出来事や意見、生活などの記録を思うままにブログに記録

Googleデスクトップ「複数のコンピュータ上のデータ検索」が出来ない原因

8月の終わりごろから、Googleデスクトップの機能の一つ「複数のコンピュータ上のデータ検索」で、「他のコンピュータから検索できるこのコンピュータのデータ」の「なし」以外が選択ができなくなっていた。


上記図の、赤い枠の部分。「文章とウェブの履歴」「文章のみ」「ウェブの履歴のみ」がグレーアウトされて選択できず、「なし」しか選べない状態。いつ頃からだめになったかというと、「Google デスクトップ 4」の日本語ベータ版が登場し、インストールした2006/08月下旬くらいからである。

Google デスクトップ 4」の日本語ベータ版リリース
http://internet.watch.impress.co.jp/cda/news/2006/08/17/13003.html


原因を追究すべく、色々やってみたがどれもダメ。

  • Windows ファイアウォールの問題
    • WindowsXP SP2以降に標準でついてくるファイアウォールを無効にしてみるも、改善せず。
  • レジストリの設定の問題
    • レジストリGoogleに関する設定も怪しかったので、一旦アンインストール→インストールや、一旦アンインストール→旧バージョンインストール→新バージョンアップデートインストールなどを試してみるも、変わらず。
    • 「HKEY_CURRENT_USER\Software\Google\Google Desktop」や「HKEY_LOCAL_MACHINE\SOFTWARE\Google\Google Desktop」の情報を消してみたりもしたが、変化なし。
  • セキュリティポリシーの問題
  • ネットワーク上のファイアーウォールの問題
    • 今回の環境ではプロキシサーバを利用しているが、Googleデスクトップ自体の通信はプロキシ経由でやっているようなので、IE上でプロキシの設定さえきちんとやっていれば問題ないはず。
  • プロキシサーバの問題
    • プロキシサーバは、特に禁止サイトなどの設定は行っていない。

色々試してみるも、グレーアウトのままで選択できない状態が続く。
ローカルセキュリティポリシーなども問題かと思い、Googleデスクトップのヘルプセンターを見てみる。

レジストリ設定から [複数のコンピュータ上のデータ検索] 機能を無効にする

一般の Google デスクトップをご使用のシステム管理者の場合、[複数のコンピュータ上のデータ検索] 機能を無効にするには、次のレジストリ キーで disallow_ssd_service = 1 の DWORD 値を作成します。

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Google Desktop\Enterprise\

このキーは作成の必要がありますので、ご注意ください。

システム管理者でない場合、詳細な手順については、次をご覧ください。

1. Google デスクトップを終了し、次のレジストリ キーを作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Google Desktop\Enterprise\
場合によっては、キーの "Google Desktop\Enterprise" の部分を作成する必要があります。

2. [Enterprise] キーを右クリックして [新規]、[DWORD 値] の順にクリックします。
3. 「disallow_ssd_service」 (かっこは不要) を値として入力し、Enter キーを押します。
4. 「disallow_ssd_service」 の値をダブルクリックして、[DWORD 値の編集] ダイアログを開きます。
5. [値のデータ] フィールドに「1」を入力して、[OK] をクリックします。

場合によっては、変更を適用するために Google デスクトップを再起動する必要があります。 変更が適用されたことを確認するには、Google デスクトップを再起動して [Google デスクトップ設定] ページにアクセスしてください。 [Google アカウント機能] タブにある [複数のコンピュータ上のデータ検索] のチェックボックスの機能が無効になっています。

後から [複数のコンピュータ上のデータ検索] 機能を再度有効にする場合は、上記の disallow_ssd_service の値を「0」 (ゼロ) に変更します。

この情報に基づきレジストリを確認してみたが、キーは設定されておらず、もちろん禁止された状態ではなかった。念のため、"disallow_ssd_service=0"というキーをわざわざ作ってみたが、変化なし。


しかしここで、そのページに書かれた上の方の情報が気になった。

ネットワーク構成から [複数のコンピュータ上のデータ検索] 機能を無効にする

1 つまたは 2 つの異なる URL を利用して、[複数のコンピュータ上のデータ検索] 機能を制限できます。 ネットワーク ポリシーによっては、ネットワーク上にあるコンピューターの情報が外にでるアウトバウンドの動作のみを無効にするか (これによりコンテンツの「一方的な」共有が有効になります)、 [複数のコンピュータ上のデータ検索] 機能そのものを完全に無効にすることができます。

  • アウトバウンドの [複数のコンピュータ上のデータ検索] の動作を無効にする (ただし、ネットワーク内部で受信する共有コンテンツは許可する) には、次の URL へのアクセスを無効にします。

http://outbound_sac.enable.desktop.google.com

  • インバウンドとアウトバウンドの両方の [複数のコンピュータ上のデータ検索] の動作を完全に無効にするには、次の URL へのアクセスを無効にします。

http://sac.enable.desktop.google.com
Google デスクトップでは、ローカル マシンの Internet Explorer のプロキシ設定に従っているため、注意してください。

今回設定できない環境では、プロキシサーバは利用している。しかし、そのサーバではURL単位での禁止設定などしていなかったのでここは問題ないと思って読み飛ばしていたが、他の解決方法がまったく見つからないのでじっくり読んでみた。


上記は「複数のコンピュータ上のデータ検索」機能をURL単位で無効にする方法だが、逆に考えれば、上記URLにアクセスできれば有効であると受け止めれる。
早速、一つ目のURL「http://outbound_sac.enable.desktop.google.com」を開いてみると、プロキシサーバは「不正な URL です」というエラーを返してきた。
二つ目のURL「http://sac.enable.desktop.google.com」を開いてみると、正常に接続し、画面に「ok」と表示される。
どちらのURLも、プロキシ経由せず直接接続すれば、問題なく「ok」と表示される。
screenshot screenshot
Googleデスクトップは、どうもこのURLに内部的に接続し、「OK」のデータが返されるかどうかで機能の【有効/無効】を切り替えているようだ。


しかし、なぜだ!プロキシサーバはURL単位のアクセス禁止設定はしていないはずなのに・・・と、URLをよく見たら、、、


サブドメインに「アンダースコア( _ )」が含まれている!!!


ドメイン名やホスト名に「アンダースコア」を使うのはRFC違反のようである*1

また、インターネットのURLやメールアドレスのようなスペースが使えないところで、かわりにアンダースコアを置くことが行われる。ただし、それらのうちドメイン名部分にはアンダースコアを用いることはできず、用いることができるのはハイフンマイナスである(RFC 1034)。

サブドメイン名の「アンダースコア」もRFC違反に含まれるかどうか分からなかったが、少なくとも使っているプロキシサーバでは、RFC違反の疑いがある「ドメイン名にアンダースコア」に対応しておらず、接続の確認が出来ない為、[複数のコンピュータ上のデータ検索]が無効になっていた。どうもこれが今回の原因のようだ。


最近のサーバだと問題ないかもしれないが、もし僕と同じように、最近まで[複数のコンピュータ上のデータ検索]が選択できていたが、ここ数日(最新バージョンにしてから)無効になっていて、しかもプロキシを経由している人は、「http://outbound_sac.enable.desktop.google.com」に接続できるかどうか確認してみた方がよい。「ok」が画面に出なければ、プロキシの設定を変えたり、プロキシサーバを変えたりしなければならない。


結局、今回の問題は接続しているプロキシサーバが、アンダースコアに対応していない為起こったようだ。まあ、RFC違反なら仕様上対応してなくても仕方ないかもしれないが、まさか天下のGoogleさんがそのようなドメイン名の付け方をするとはね・・・(今回はサブドメインで、最近のRFCだと違反ではないかもしれませんが、そこまで調べてません)


しかしまあ、やっと謎解明・・・2週間ぐらい悩んでた。結局、プロキシ必須の自分の環境では無効のまま我慢するしかないんだけどね。
次のバージョンでは、Google側が確認用URLのサブドメインの文字を変えてもらうことを期待するばかりです。

解決方法

とりあえず、考えられる解決方法。

  • プロキシサーバの使用を止め、直接接続する。
  • プロキシサーバ側のソフトウエアを、アンダースコア対応のものに挿しかえるか、設定を変える。
  • プロキシサーバの接続先を変える。
  • 他のプロキシサーバが使えるが基本的にメインのプロキシサーバを使いたい場合、ローカルでIISを立ち上げ、proxy.pacを作成する。そして、IEの自動構成スクリプトでこのファイルを指定する。以下記述例。
function FindProxyForURL(url, host)
{
	if (isPlainHostName(host)
	 || isInNet(host, "127.0.0.1", "255.255.255.255")
	{
		return "DIRECT";
	}

	else if (shExpMatch(host, "outbound_sac.enable.desktop.google.com"))
	{
		return "PROXY example2.com:8080";
	}
	
	return "PROXY example1:8080";
}

※「example1.com」はメインのプロキシ、「example2.com」はアンダースコア対応のプロキシ。


プロキシサーバ側の設定で、指定URLの禁止で上記URLが設定されている、社内のメインプロキシ以外の使用を禁止している場合は、現在のところあきらめるしかありません。また、この情報はあくまで「Google個人向けデスクトップ」の話で、Google企業向けデスクトップはサーバのポリシー等で禁止されていることがあります。


おまけ

ちなみに、Gmailのインデックス作成がなかなか終わらない人は、ここを参考に。

会社や学校などのネットワークからだと、通常1024番ポート未満はふさがれているので、使えません。

余談

2つのURLをはてなスクリーンショットで取得してみたが、やはりアンダースコアが含まれているほうはスクリーンショットが生成されないようだ。つまり、はてな社内やはてなのサービスが使っていうプロキシサーバも、アンダースコアに対応していないのかもしれない(という推測)。
screenshot screenshot

*1:正確には微妙なところだけど