WindowsUpdate の Proxy

2005-03-07

WindowsXP SP2 を導入

WindowsXP の SP2 がリリースされて久しいのですが、未だ自分の使う環境には適用していませんでした。 なんとなく危険な感じがしていたからなのですが、Windows を古くから使っている人には、そう言う人も多いのでは。

しかし、いつまでも適用しない訳には行かないでしょう。 次期 Windows こと Longhorn のリリースは 2007 年の予定ですから、最低でも 2005年〜2006年は WindowsXP を使い続ける事になります。 それに、Longhorn が出ても直ぐに買い換えるわけではありません。 きっと 2007年も WindowsXP を使っているに決まってます。 この先、SP2 なしで運用するのは難しいように思えます。

なにより、SP2 を前提としたパッチが出て来るのは時間の問題でしょう。 そこで、腹をくくって SP2 を入れる事にしました。 とりあえず自宅PC で試してみたところ、割と順調でした。 SP2 適用後もこれと言った問題は発生していません。 もっとも、全ソフトの全機能を試した訳ではありませんから、気付いていないだけかも知れません。

Windows update でエラー

職場で使っている PC も WindowsXP なのですが、やはり SP2 を当てていません。 こちらは、会社側で業務の遂行上問題が発生しないか慎重に検討し、対策が確保できるまでは SP2 の適用が禁止されていました。 検証が済んだのか、今度は SP2 を適用せよという指示が来ていました。 で、自宅に続いて職場でも SP2 を適用します。

職場PC は、趣味でスペックを決める自宅PC よりも制約が大きいのです。 例えば、SP2 のセットアップに必要とされるHDD の空き容量は確保できていません。 でもやらない訳には行かないので、ともかく始めます。 表で仕事(ワープロ作業)をしつつ更新しましたが、なんだかワープロは SP2 の合間を縫って動作しているような状況で、エライ重かったです。 ともかく、とりあえず問題なく SP2 になったようで一安心。

しかし、職場PC では問題が発生しました。 Windows update でエラーが発生します。 最新の未適用パッチの検索を行なうとエラーコード [0x80072EE2] が発生します。 このエラーコードで検索すると、「ERROR_INTERNET_TIMEOUT The request has timed out.」と言う意味であることが分かります。 要求を出したけど応答がないよと。 平たく言うと、サーバに接続できていません。

SP2 で追加されたファイヤーウォールを無効にしても状況は変わりません。 ファイヤーウォールで蹴られている訳ではなさそうです。 そもそも Windows update のサイトには問題なく接続できているのに、なぜ検索で失敗するのでしょう。 自宅PC では問題ないのに…。

WinHTTP の Proxy 設定

悩んでいたら、知人が対策を教えてくれました。 有難いことです。
この記事はアドバイスを忘れないための自分用のメモなのです、実は。 (^o^;)

情報によると、WinHTTP の Proxy が設定されていないのが原因とのこと。 もっとも、Proxy の問題ならばエラーコード [0x80072EFD] として現れるものなのかも知れません。 自分の所で出た [0x80072EE2] は情報が少ないのですが、[0x80072EFD] に関する情報は割と豊富なので。 Microsoft のナレッジベースにも情報があります。

実際に発生しているコードとは違いますが、これが原因である可能性は大です。
Proxy 以外の問題でタイムアウトしている可能性もゼロではありませんが…。

普通の Proxy 設定は Internet Explorer で使っている「インターネット オプション」から設定すればいいのですが、WinHTTP は違うようです。 CUI の設定プログラム proxycfg を使います。

コマンドプロンプトの起動

まずはコマンドプロンプトを起動します。 通常は [スタート]→[すべてのプログラム]→[アクセサリ]→コマンドプロンプト で起動できますが、[ファイル名を指定して実行] から cmd を実行するのが楽です。 [ファイル名を指定して実行] のショートカットは WinR です。

この辺りから説明しているサイトが多いのですが、起動方法が分からないものでしょうか。 起動した後の使い方が分からない、と言うのならまだ分かるのですが。 まぁ、知っていて損はないと言う事かも知れません。

現在の状態を確認

まずは現在の状態を確認します。
proxycfg を引数なしで動かすと、現在の WinHTTP プロキシ設定を表示します。

>>proxycfg
Microsoft (R) WinHTTP Default Proxy Configuration Tool
Copyright (C) Microsoft Corporation. All rights reserved.

現在の WinHTTP プロキシ設定:
  HKEY_LOCAL_MACHINE\
    SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\
      WinHttpSettings :

     直接アクセス (プロキシ サーバーなし)
        

proxycfgの使い方を確認

ついでに、proxycfg コマンドの使い方を確認しておきます。
一般的に、オプション "-?" を指定する事でコマンドのヘルプが参照できます。

>>proxycfg -?
Microsoft (R) WinHTTP Default Proxy Configuration Tool
Copyright (C) Microsoft Corporation. All rights reserved.

使用法:

    proxycfg -?  : ヘルプ情報を表示します

    proxycfg     : 現在の WinHTTP プロキシ設定を表示します

    proxycfg [-d] [-p <サーバー名> [<バイパス一覧>]]

        -d : 直接アクセスを設定します
        -p : プロキシ サーバーとオプションのバイパス一覧を設定します

    proxycfg -u  : 現在のユーザーの Microsoft Internet Explorer 手動設定
                   (HKCU 内) からプロキシ設定をインポートします
        

proxycfg -u を試す

職場LAN には proxy サーバが設置されているので、http の proxy を手動で設定しています。 proxycfg -u でこれをインポートできるので、まずはコレを試してみました。

>>proxycfg -u
Microsoft (R) WinHTTP Default Proxy Configuration Tool
Copyright (C) Microsoft Corporation. All rights reserved.

更新されたプロキシ設定
現在の WinHTTP プロキシ設定:
  HKEY_LOCAL_MACHINE\
    SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\
      WinHttpSettings :

    プロキシ サーバー:  http=proxy.△△△.co.jp:8080
    バイパス一覧     :  *△△△.co.jp
        

できました。
一応 Windows を再起動してから、Windows update を実行してみます。 …変わりませんな。

proxycfg -p を試す

「自動構成スクリプトを使用する」にチェックが入っている場合は、proxycfg -u ではダメっぽいという情報もあります。 件の職場PC ではチェックOFF になっていましたが、実際上手く行っていないので仕方ありません。 Proxy サーバの名前とポート番号は分かっているので、今度は手動で設定してみます。

>>proxycfg -p proxy.△△△.co.jp:8080
Microsoft (R) WinHTTP Default Proxy Configuration Tool
Copyright (C) Microsoft Corporation. All rights reserved.

更新されたプロキシ設定
現在の WinHTTP プロキシ設定:
  HKEY_LOCAL_MACHINE\
    SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\
      WinHttpSettings :

    プロキシ サーバー:  proxy.△△△.co.jp:8080
    バイパス一覧     :  (なし)    
        

では、Windows update を実行してみましょう。 …成功です。

バイパス一覧、つまり proxy 設定を行なわない例外の指定がなくなりました。 Windows update 関連のサイトは、Microsoft のドメイン下にあるはずです。 少なくとも、△△△社とは関係ありません。 何の関係があるのでしょうか? 内容とは無関係に、設定が存在するとダメとか…?

よく見ると、プロキシサーバの設定も "http=" が無くなっています。コレかな?

Proxyが分からない時は

Proxy サーバが分からない時は、実際の接続から探すという手もあります。 Internet Explorer で適当なサイトに接続して、すかさず netstat を打つと、コネクションの一覧が得られます。 その中からそれらしいサーバを探します。

>>netstat

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    my職場PC:1464          proxy.△△△.co.jp:8080  TIME_WAIT
  TCP    my職場PC:1476          proxy.△△△.co.jp:8080  ESTABLISHED
        

今回は必要ありませんでしたが、IPアドレスを直指定する必要がある場合は、ping なり tracert なりで調べられます。 ただ、これらはアタックの前兆とも捉えられるので、サーバによっては応答しない設定になっているかも知れません。

>>ping proxy.△△△.co.jp

Pinging proxy.△△△.co.jp [000.000.000.000] with 32 bytes of data:

Reply from 000.000.000.000: bytes=32 time=22ms TTL=249
Reply from 000.000.000.000: bytes=32 time=16ms TTL=249
Reply from 000.000.000.000: bytes=32 time=16ms TTL=249
Reply from 000.000.000.000: bytes=32 time=17ms TTL=249

Ping statistics for 000.000.000.000:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 16ms, Maximum = 22ms, Average = 17ms
        
Copyright© 1998-2006 Hira