since 2007.8 by K-ichi


突然、全アカウントが使用不可に
1月14日。いつもどおりOE(OutlookExpress、Win7上のXPモードで使用)でメールチェックをしたところ、すべてのアカウントがエラーになってしまった。

WinXPはサポート切れから7年。ついに何かに巣食われたか。いやでも、つい2019年まではアップデートしていたんだがな、などと思惟しつつネットを浚うも収穫なし。XPモード(以下、XPM)上ではブラウザもつながらないので、そもそもネット接続ができないらしい。IPアドレスは、0.0.0.0になっている。

思い当たる節もなく、手がかりもないので、とりあえずはXPM上で「システムの復元」をしてみる。生きていた13日へ戻してみたが変化無し。念のため12日も試すが同様。

あちこち設定などを見回していると、ローカルエリア接続のプロパティで、意味ありげな情報が一瞬だけ表示されることに気づいた。つながると即断……ウイルスか何かか。
とりあえずキャプってみると、192.168.131.65と、IPアドレスはちゃんと振られている。システムの復元をも回避するウイルスか。いやらしい。XPMとの付き合いもここまでか。とりあえずデータは救っておかないと。OEのデータを食ってくれるメーラはあるだろうか。このクソ忙しいときに……


リース期限は2038年
一息ついて、あらためて見直してみる。

「リースの有効期限」が1901年になっている。この期限とは、DHCPがIPアドレスを割り当てたときに付与するものらしい。あまりに日付が変なので、試しにPCの時計を2021年1月13日に戻してみる。すると、ネットにつながった。確認してみると、リース期限は2038年になっている。
ここでようやく2038年問題に思いが至った。

2038年問題は、Wikipediaに詳しくか書かれている。2038/1/19 3:14:07(UTC)を過ぎると問題が起こるとのこと。
XPMのDHCP機能は、IPアドレスを払い出す際、有効期限をうんと長くして提供する。DHCPサーバでのこの期限設定は、自由だが一般には数時間から数週間らしい。XPMでは17年余(0x1FFF FFFF秒)もとっている。Win7上で単独でWinXPを使う用途なので、ずっと長くして実質無期限にしておけばおけば何事もない、と考えたのだろう。
もしかしたら、DHCP側では2038年を超えても問題は起きないが、それを受けたWinXP側でビットを落としているのかもしれない。

2枚目の画像は、ke!sanサイトで計算してみた結果。
Wikipediaの記述と併せて計算すると、2021/1/14 17:25:36(JST)がその時になる。これを過ぎたところでIPアドレスを要求すると、1901年にロールバックしてエラーとなる。14日の夜にアクセスを試みて、失敗したこととも辻褄が合う。
DHCPにアドレスを要求し、得たものは1901年で期限切れなため再び要求し、また得たものはすでに期限切れで……と、延々と繰り返すことになる。


原因は判ったので対処方法を考える。

XPMの仮想デスクトップを立ち上げて、日付を13日に戻して接続し、そこでOEを使えばつながる。でも、めんどくさい。
この手順を自動で行い、いままでどおり仮想アプリケーションとして使いたい。ということで、次の内容を「OE起動.bat」などとし、これを実行することとした。概ね従来どおりの環境を実現できている。

OE起動.bat
ipconfig /release
date 2021/1/13
ipconfig /renew
start /d"C:\Program Files\Outlook Express\" /b msimn.exe

このバッチファイル若しくはこれへのショートカットを、「C:\Documents and Settings\All Users\スタート メニュー\プログラム」または「C:\Documents and Settings\All Users\スタート メニュー」に置いておく。これでWin7側から、XPMのアプリとして実行できるようになる。
起動直後にはバッチファイルが実行される黒い窓が表示されるが、OEが立ち上がれば後は同じ。

PCがとても重い状態で実行すると、まれに上手くいかない場合もある。その場合は再度実行しなおす。どうしてもつながらないときは、XPMの仮想デスクトップを立ち上げ、ローカルエリア接続アイコンから、無効/有効してから日付も変えてみる。

このバッチでは、日付を変更している。じつは変更しても、XPM側では数秒で元に戻ってしまう。どうやら親機Win7の日付が、自動的に適用されるらしい。時計をタイムサーバに同期させる設定はあるが、それとは関係ない。その数秒の隙にネット接続を完了させる、ということになる。

Win7の日付が数秒で適用されるということは、Win7側を1/13以前にした上で通常通りOEを起動する、という手も考えられる。上手くいくときもあるが、いかないときもある。ダメなときは再度立ち上げるとつながる。そのあと日時を戻さないと、日付のおかしいメールができてしまうので、これはこれで面倒がある。


この記事を書きながらも調べものを続けていたのだが、別の解決方法も見つかった。※追記

XPMは、デフォルトではNATという機構を使って、親機Win7のネット環境を借りている。
DHCPサーバがあるのなら、これの代わりに物理的なNICを指定することができるらしい(Windows XP Mode Virtual PC のネットワーク設定第3回 仮想ネットワークの種類を知る (1/2)など参照)。そしてその場合、Win7機の中にありながら、Win7機と同じ扱いでネットワークに存在できるらしい。

この形、どこかで見たことがある……ということで、以前「NIC1枚でインターネット接続の共有」で書いたように、親機側でICS(インターネットの共有)を動かしてみた。……つながった。
このときのIPアドレスは192.168.137.225で、リース有効期限は1週間になっている。NATを使ったときとは明らかに接続結果が異なるので、別のカラクリが動いているのが判る。※追記
この設定では、いままでどおりOEを立ち上げることも、前述のバッチファイルから起動することも、いずれでも問題ない。※追記 ただしバッチの場合、いったん19日期限のアドレスが振られ、日付が同期されれば再取得しにいくので、その分よけいに時間がかかると思われる。

動くのは動いたが、理解は深まっていない。「DHCP NAT」「仮想NIC NAT」「XPモード NAT」などでググると、だいぶ深いページがかかる。いつかじっくり読みたいが、今は理解が及ばない。

とりあえず、つながって良かったね、という状況を表したのが以下の画像。XPMの設定では、アダプタ設定を物理的なNICに変更、Win7のネットワーク接続では、「インターネット接続の共有」の一番上にチェックを入れている。それ以外はデフォルトのまま。


NIC+ICSの設定

接続結果を表示

※追記
2021/1/25
……と、思ったのだが、今日使ってみるとつながらない。おかしい。
ググってみると「インターネット接続の共有(ICS)を使わないインターネット接続の共有ができるまで その2」というページに辿りついた。ICSは、親機を再起動したら、いったん無効/有効しないとダメという。やってみたが上手くない。XPMもWin7も再起動したり、チェックのオン/オフをしたりしていたらつながった。
しばらくはこの設定で様子を見る予定。一旦つながってしまえば、何の問題もないのだが。

2021/1/26
ICSを使う後者の設定で、前者のバッチファイルから起動した場合、上手くいくことが多いが失敗することもある。再現性は見出せない。
失敗した場合は何をやってもアドレス取得ができないので、XPMの仮想デスクトップで「ローカルエリア接続」を無効にし、Win7側のICSも無効にする。その後、ICSを有効にし、XPMのネットワーク接続を有効にすると、数秒~10数秒でアドレスが振られる模様。ICSのオン/オフ変更には、接続のしなおしも必要。
ICSのDHCPトラブル関連で、ファイアウォールに穴を空けると上手くいく(ICS再び~DHCPリース期間|ロケッこがゆく)などという記事を見つけたが、この件には関係なかった。ちなみにその記事で触れているが、ICSで払い出したIPアドレスのリース期間は1週間、とある。「別のカラクリ」はICSで間違いない。

2021/2/13
XPMのNIC設定は、NATでなく物理NICを指定する。XPMを動かしている親機では、ICSを有効にする。OEの起動は従来どおり、単純にOEのショートカットから起動する。この方法で現在まで安定運用できている。つながらないことが一度も無い。
NATでは、IPアドレスのリース期限が17年、ICSでは同期限が1週間、という違いは上でも書いた。割り振られるアドレスも違う。NATではDNS機能をインターネット側に求めるが、ICSでは内包しているらしい。サーバがmshome.netと名乗っているのが、最終画像で見て取れる。

XPMの2038年問題は、このやり方で解決としたい。

2021/3/31
またトラブル発生。メール受信中に切れたらしい。その後はすべてのアカウントでエラー。
XPMを立ち上げてもつながらない。そちらでネットワークを有効/無効してもつながらない。設定を見直しても変わったところは無し。XPM、Win7ともに日付をいじってみてもダメ。かつてのように、一瞬つながって切れる、ではなく、もうずっとつながらない。ずっと0.0.0.0のまま、しばらくすると限定されたネットワーク云々。要はつながらないときの動作。
親機のインターネット接続(DTI)のプロパティを見ると、接続時間は6日と何時間、とある。そういえばPCの電源入れっぱなしだった。IPアドレスのリース期限は一週間だし、もしかしたら関係してくるのかな、と一旦切断・再接続してみたところ無事つながるようになった。
親機のインターネット接続時間も問題になるらしい。

ちなみに、「受信中で切れた」のが判ったのは、つながるようになった後でメールが一部ダブったため。
OEの通常のメールアクセスは、(1)アカウントにログイン、(2)サーバにメールの有無を問合せ、(3)あればすべて受信、(4)受信したメールの削除依頼、という手順を踏んでいる。
(3)の途中だったため、切れるまでに中途半端な数が受信され、削除依頼はできなかったため、次にアクセスした際にその分がダブることになる。

2021/4/23
親機の接続時間は関係なかった。1日+αでも同様の現象が発生。XPMのネットワークを無効にし、親機でICSを無効化/有効化、インターネットへも接続しなおし。ICSを有効に、XPM側も有効に、などとしていったら復活した。
重すぎると何かしらがタイムアウトなどしてフラグが立ってしまう、そんな気がする。ともかく無効化/有効化を順に試して深掘りしていくしかない。

2021/5/26
chromeでたくさんダウンロードしている最中にOEを立ち上げて発症。
まず、親機のインターネット接続を切り、ICSを無効化。タスクマネージャでvpc.exeを確認し、動作していたら終了させる。ICSを有効化し、ネットへ接続しなおす。その後、OEを立ち上げると接続できた。ICSの有効/無効の切り替えは、ネット接続を切らないと行われない。
XPM側での操作は特に必要ない模様。でも、vpc.exeが動いたままだと上手くいかない。

2021/6/13
 ICS無効化→接続断→接続
  →ICS有効化→接続断→接続
   →vpc強制終了→OE起動
で接続できた。なんだか無駄なことをしている感じもする。
vpcが動作したままでは無理だった。

 ICS無効化→ICS有効化→接続断→接続
  →vpc終了→OE起動
でも無理だった。

2021/7/19
 OE終了後、vpcおよびvmsalが消えなければ強制終了
  →ICS無効化→接続断→ICS有効化→接続
   →OE起動
で上手くいった。これが最短の手順かも。

2021/8/8
XPMのアプリが立ち上がっている状態で、[Ctrl]+[Alt]+[End]を押下すると、XPMのデスクトップが表示されるとともに終了メニューが表示される。
XPMのスリム化など、シャットダウンしている必要がある場合に使える手。これでシャットダウンしておけば、vpc.exeなどのタスクは生きていても問題なかった。タスクマネージャで確認する手間が省ける。
手順も一部変えてみた。

 上記手順などでXPMのシャットダウン→ICS無効化→ICS有効化→切断→接続

2022/1/1
昨秋ごろ、インターネット接続の調子が悪くなった。かつて体験したモデムの不調時のように、リンク切れとトレーニングを繰り返す。設定を変えようかとブラウザでアクセスを試みたがつながらない。モデム本体のリセットボタンで再起動(マニュアルのp62)したところ、正常に動作するようになった。
その後、HDDが圧迫されてきたのでXPMの容量圧縮を行った。そしてトラブル発生。
ipconfigで見ると、今回は今までとは違う。
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\XPMUser>ipconfig/all

Windows IP Configuration

        Host Name . . . . . . . . . . . . : VirtualXP-10802
        Primary Dns Suffix  . . . . . . . :
        Node Type . . . . . . . . . . . . : Mixed
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter ローカル エリア接続:

        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : Intel 21140-Based PCI Fast Ethernet
Adapter (Generic)
        Physical Address. . . . . . . . . : 00-**-**-*(伏字)*-**-**
        Dhcp Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        IP Address. . . . . . . . . . . . : 192.168.116.4
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.131.254
        DHCP Server . . . . . . . . . . . : 192.168.116.1
        DNS Servers . . . . . . . . . . . : 192.168.116.1
        Lease Obtained. . . . . . . . . . : 2021年11月24日 19:07:02
        Lease Expires . . . . . . . . . . : 2021年11月24日 20:07:02
ADSLモデム(MS5)にはDHCP機能が備わっており、リセット時に有効になったらしい。若しくは、有効にはなっていたものの、XPMの最初の使用時に「インターネットの共有」側のDHCPを使う設定になったのかもしれない。
192.168.116.*というアドレスは、モデムのDHCPが振るアドレスになる。XPMは、前回使ったサーバを次も優先的に使おうと試みるらしい。ググると事例等が結構出てくる。何度/release、/renewを繰り返しても直らない。
さらには、ゲートウェイはXPMが振るアドレスになっている。こちらは/renewなどしていたら空欄になってしまった。

XPM機はモデムと同じネットワーク内にいるので、ブラウザでモデムの設定ができる。これでモデムのDHCP機能をオフにし、XPMを再起動などさせたところ、「インターネットの共有」による192.168.137.*が振られ、普通に使える状態に戻った。

0 件のコメント:

コメントを投稿

.

関連記事


この記事へのリンク by 関連記事、被リンク記事をリストアップする」記事

ブログ アーカイブ