« ひらけ! Port69 -その1- | メイン | 目国内岳 真夏の陽射しジリジリ »
2007 - 6 /14
ひらけ! Port69 -その2-
・・・前回からの続き
さて、無事に業務は完遂できましたが、「errno: 10048」を解決しなくてはいけません。
いつも他人のパソコンを借りるわけにはいかないです。
最後の悪あがきで見当をつけた、「アドレス重複」=「ポート使用不可」というのは、当たらずとも遠からずだったのです。
実はエラーメッセージには前文があって、正しくは
WSAEADDRINUSE errno: 10048
というものだったのです。
某所では「エラー文は一字一句もらさずに正確なものを」が口癖だったぼくですが、実際自分の身に降りかかるとなかなか難しいものだと思い知りました。
「WSAEADDRINUSE」
すべての意味は理解できなくても、ネットワークをちょっとでも齧ったことがあれば、Address in use が略されていると読み解くことは容易にできるはずです。
ところが現場でこれを見たぼくは、なにを思ったか「早稲田~」と読んだのです。マジで。
TFTPサーバソフトの作者の名前か?、くらいにしか考えていませんでした。
それだけパニックになっていたということでしょうか。
それともここにきて馬鹿が露見したのかもしれません。
よく言われるように、エラーメッセージさえ分かれば、たいていの問題はWeb検索で解決できます。
『Search the Ipswitch Knowledge Base
-WSAEADDRINUSE - Error 10048-』
http://support.ipswitch.com/kb/WSK-19980701-EM03.htm
「アドレス重複」=「ポート使用不可」=「すでにポート使用中」 ということになるでしょう。
69番ポートが閉じられているのではなく、何者かがそれを使用しているということです。
こういうのを調べるには、netstatコマンドが適任です。
WindowsXP SP2 なので、-bオプションを使えば通信を行っている実行ファイルまで教えてくれます。
netstat -anb
その結果、
UDP 0.0.0.0:69 *:* 2180
[psxss.exe]
が見つかりました。
タスクマネージャを起動してみると、プロセスID:2180で "psxss.exe" が動いています。
この "psxss.exe" プロセスを停止させれば、件のエラー:10048は出ず、TFTPサーバは正常に動くことが確認できました。

たったこれだけのことなのです。
たったこれだけのことを現場で出来なかったというのが、本当に悔しいです。
でもそれが実力です、しかたありません。
だけどこの "psxss.exe" ってなんだ?。
微妙に怪しい名前であるだけでなく、プロセスID:3224 には "psxrun.exe" などという、「いかにも」な名前のプロセスまであります。
調べてみると、どうもSFUに関連するファイルのようです。
『Functionality of the Psxrun.exe Program』
http://support.microsoft.com/kb/246372/en-us
イベントビューアを見ると、たしかにWindowsにログオンするたびに、この二つのプロセスは起動しています。
ですが、レジストリ等のスタートアップエントリには登録されていませんでした。
となるとサービスです。
"services.msc" を起動して探ってみると、、、、いたいた。

このサービスのスタートアップの動作を、「自動」から「手動」もしくは「無効」にすることで、こいつの起動を止めることは出来ます。
ここでめでたしめでたしでも良いのですが、そもそもこいつは一体どこからやって来たのだろう?、という疑問が残ります。
自分の意志でインストールした記憶はありません。
SFUの性格(というか存在理由)から考えて、何か(もちろんUNIX関連の)をインストールする際に、一緒にインストールされたのではないか?、と推測できます。
SFUのデフォルトのインストールフォルダパスは "%SystemDrive%\SFU" のようなので、このフォルダの作成日時を調べてみると、2007年2月8日 となっていました。
次に "%ProgramFiles%"フォルダを開き、同じ日付で作成されたフォルダがないか調べてみると、時刻までがほぼぴったり一致するフォルダが見つかりました。
そのフォルダに収められているプログラムは、ある種類のルータの破損したファームウェアを修復するツールです。
これですべてが一本の線につながりました。
一般的にルータなどのファームウェアを更新する場合、TFTPを使って転送するという方法がしばしば取られます。
またこれも一般論ですが、ウェブブラウザから容易に更新できるよう、一枚にパッケージングされたファームウェアのファイルは、tarでアーカイブされ、gzip圧縮されているケースが多いです。
つまり、
2007年2月8日 にインストールした「ファームウェア修復ツール」は、
tar+gzip圧縮されたファイルをTFTPで転送するというごくありふれた
方法を取るが、それらを実行するのに Windowsアプリケーションを
用いず、UNIXのコマンドやサービスを利用する必要から 「SFU」を
同時にインストールし、それに含まれる "psxrun.exe" が
zzInterixというサービスでスタートアップ起動され、トリガした
"psxss.exe"が TFTPのWell Known Ports "69"を使用する
ために、以降起動される TFTPサーバソフトは
「WSAEADDRINUSE errno: 10048」を返す。
これが結論です。
投稿者 hamayo : 2007年6月14日 21:52
トラックバック(0)
このブログ記事を参照しているブログ一覧: ひらけ! Port69 -その2-
このブログ記事に対するトラックバックURL: http://cosmeticpunk.sakura.ne.jp/mt/mt-tb.cgi/230

コメントする