Windows
TIPS
[Network]
|
電子メールの送受信が異常に遅い
―― XPのファイアウォール機能とidentサービス ――
→ 解説をスキップして操作方法を読む
デジタルアドバンテージ
2001/12/13 |
|
対象OS |
Windows XP Professional |
Windows XP Home Edition |
|
|
 |
■ |
Windows XPには標準でファイアウォール機能が用意されている。
|
■ |
デフォルトではidentプロトコルに対してもサイレントに(何も応答を返さずに)ブロックするので、接続する相手の(メール)サーバによっては、数十秒の無用なタイムアウト待ちが生じる可能性がある。 |
■ |
これを防ぐには、identに対して拒否応答を返すようにすればよい。 |
|
|
Windows XPは、OSの標準機能としてファイアウォール(パケット・フィルタ)が用意されている。チェックボックスを1つオンにするだけで利用できるのだから、インターネットに接続しているユーザーならばぜひとも活用したいところだ(詳細については「TIPS:Windows XPのファイアウォール機能を活用する」)。Windows XPのファイアウォール機能を有効にしても、インターネット上のアプリケーションはほとんどそのまま利用することができるので、使わない理由はないだろう(ただしアプリケーションによってはいくらか制約を受ける場合がある)。
ファイアウォールを有効にしておくと、インターネット側から自分のマシンや、ICSのクライアントとなっているマシン上で動作しているサービスを利用することはできなくなる。もし外部からアクセスしようとしても(外部からTCPやUDPで接続しようとしても)、外部へは一切何も応答を返さないので、外部からはサービスが存在しているかどうかすら分からない。例えばポート・スキャンのような攻撃が行われても、外部へは何も応答を返さないので、外部からはそのマシンが存在しているかどうかも分からず、(ログ機能が有効ならば)単にログ・ファイルに記録が残るだけである。
だがこのような動作は、ファイアウォールの振る舞いとしては望ましいのであるが、時としてトラブルの元になることがある。例えばインターネット上のメール・サーバにアクセスする場合、サーバによっては、クライアント側のホストに対しident(identdやauthなどとも呼ばれることがある)というプロトコルを使って逆に認証を行う場合がある。ident(Identification Protocol)は、TCPの113番ポートを使った認証用のプロトコルであり、RFC1413で定義されている。identは、サーバとの通信に使用しているコネクションのタイプ(OSタイプやその所有者)を調べるために使われることが多い。例えばクライアントからメール・サーバにTCPで接続すると、逆にサーバからこのidentプロトコルを使って、その通信が本当にそのクライアントから発行されているかどうかが確認される。だがこのidentの普及度はそう高くなく、identに対してクライアントから応答を返さなくても特に問題はないだろう(ファイアウォールによっては、ダミーのident応答を返す機能を持っているものさえある)。実際、Windowsマシンに対してこのident要求を送っても、そのようなサービスはもともと用意されていないので、拒否されるだけである。正確にいうと、「そのようなサービスはありません」という応答(TCPのReset応答)をすぐに返す。サーバ側でも、identが拒否されたからとしても特にサービス自体を切断したりすることもなく、実際には問題がないことがほとんどである。identは過去との互換性のためにだけ存在しているようなものといえよう。
だがXPのファイアウォール機能を有効にしていると、この「拒否応答」すら返さなくなってしまう(「拒否を返す」のではなく、本当に「何も返さない」)。するとサーバによっては、何も応答が返ってこないので、ident要求がタイムアウトするまでメールの送受信を行わない、という動きをする場合がある。これをユーザーの側から見ると、ファイアウォールが無効ならばメールの送受信がすぐにできるが、ファイアウォール機能を有効にしていると、メールの送受信がなぜかしばらく(例えば20秒とか30秒程度)待たされてしまう、という現象となって現れることがある。
このような予期しないタイムアウト待ちを避けたければ、ident要求に対して、拒否応答を返すようにすればよい。具体的には、ファイアウォールの[詳細設定]ダイアログにある「サービス」タブで、ident用のサービス(TCPの113番)を定義して公開すればよい。実際にはWindows OSでは(デフォルトでは)identサービスは実装されていないため、TCPの113番をブロックしないようにしても、外部から攻撃されるという問題はない。単に拒否応答が返されるようになるだけである(実際は拒否応答ではなく、オープン後にすぐクローズするという動作になるようだ。この場合はどちらでも問題ない)。もちろんそのようなタイプのメール・サーバなどを使っていないのであれば、無理にこのポートをオープンにする必要はないので、このような設定は行わなくてもよい。
Windows XPのファイアウォール機能において、identサービス用のポートをオープンにして外部へ拒否応答を返すようにするには、ファイアウォールの「サービス」タブで新たにident用のサービスを定義する。[サービス]タブは、外部に対してサーバやサービスを公開する場合に、そのサーバのIPアドレスやポート番号を設定するためのものであるが、identはデフォルトでは用意されていないので、新たに定義する必要がある。
ファイアウォールの設定を変更するには、まず[スタート]メニューから[接続]-[すべての接続の表示]を選び(もしくは[コントロール パネル]の[ネットワークとインターネット接続]-[ネットワーク接続]を選ぶ)、「ネットワーク接続」のウィンドウを表示させる。そしてファイアウォールが有効になっているネットワーク・アイコンを選択して右クリックし、ポップアップ・メニューから[プロパティ]を表示させる。
 |
ファイアウォールのサービス設定を変更する |
ファイアウォールが有効になっているネットワーク・アイコンを選択して、[プロパティ]ダイアログの[詳細設定]タブを選択する。公開するサービスを設定するには[設定]ボタンをクリックする。
|
|
[詳細設定]ダイアログにいくつかタブがあるが、ここでは[サービス]タブに注目する。これは、外部に対してサーバやサービスを公開する場合に、そのサーバのIPアドレスやポート番号を設定するためのものであるが、identはデフォルトでは用意されていないので、新たに定義する必要がある。
 |
 |
サービスの公開の設定 |
デフォルトではFTPやWebサーバ向けの定義が用意されているが、identサービスはないので自分で追加する必要がある。FTPサーバやWebサーバをインターネットに向けて公開する場合は、必要なプロトコルをチェックして、[編集]を押す。 |
|
 |
公開するサービス(サーバ)の指定。デフォルトではFTPやWeb、Telnetなど、よく使われるサービスの定義が用意されている。これらのサービスをインターネットに公開するには、該当するチェックボックスをオンにして、サーバのIPアドレスなどを指定する。 |
|
 |
これら以外のサービスを公開したければここを押す。→ へ |
|
identサービスを公開するためのルールはデフォルトでは用意されていないので、新たに定義することにする。
 |
 |
新しい公開用サービスの設定 |
|
 |
サービス名。自由に名前を付けることができる。 |
|
 |
ここでは自分自身のホストを表す「127.0.0.1」というIPアドレスを入力する。後で再確認すると、(IPアドレスではなく)自分自身のホスト名に自動的に置き換わっているはずであるが、どちらでも効果は同じである。この欄に、他のマシンの名前(ICSのクライアントとなっているマシンの名前など)を指定すると、そのホストで公開されているサービスをインターネット側から利用することができる。 |
|
 |
サービスに割り当てるポート番号。identサービスを表す「113」を入力する。 |
|
 |
プロトコルの種類。ここではTCPを選択する。 |
|
 |
内部サーバ上におけるポート番号(サービスをリッスンするポート番号)。ここは空欄のままにするか、113を入力する(空欄にしておくと、自動的に と同じ値がセットされるので、どちらでも結果は同じ)。 |
|
以上の設定で、ident要求に対して拒否応答を返す定義が完了しているはずである。実際にメールの送受信などを行って、無用なタイムアウトが生じていないかどうかを確認しておこう。
Windows Server Insider フォーラム 新着記事