運用開始
~部門サーバのWindows Server 2008への移行~
Windows Server 2008 β(以降、Windows Server 2008)に移行した部門のサーバ環境で、日々運用を行っています。そんな中、FTPクライアントを用いて何気ない操作を行ったところ、FTPサーバから応答がないという事がありました。この問題に対し、どのように調査し解決に至ったかを以下にまとめました。
FTPサーバから応答がない!
Windows Server 2008に移行した部門サーバで、FTP.exe(FTPクライアントプログラム)を用いて、FTPサーバのデータを入手しようとFTPサーバへの接続を行いました。ところが、接続は正常に行えたものの、lsコマンドやdirコマンド(どちらもファイルやディレクトリ情報を表示するコマンド)入力後、いつまで経っても応答が返ってこない、という問題に遭遇しました。

図1 Windows Server 2008にてFTPコマンドls実行
様々なコマンドを試し、cdコマンドなど使用できるコマンドもありましたが、一部でこのような現象になることがわかりました。
原因を追究してみると・・・。
FTPクライアント機能はUnixベースアプリケーション用サブシステム(「プログラムと機能」
「機能の追加」選択しインストールします。以降、SUA)や、Internet Explorer(以降、IE)も有しています。ところが、これらは問題なく通信できたのです。運用OSがβ版であったため、もしや不具合なのでは?という疑念を持ち、問題の原因追究のためパケットを採取することにしました。
FTPでは制御に21番ポートを、データ転送に20番ポートを使用します。問題のケースは、FTPサーバがクライアントへ20番ポートを使用してデータ転送パケットを送信していましたが、その後のパケット出力がありませんでした。FTPサーバから応答がなかったのは、このように通信が途絶えていたためでした。そこで、Windows Server 2008の既定で有効となっているファイアウォールがブロックしているのでは、考えました。
この問題の対策として、Windowsファイアウォールの設定でFTP.exeを例外として登録し、ファイアウォールの対象からはずすことにしました。具体的には以下の操作です。
「コントロールパネル」
「Windowsファイアウォールの設定」の「例外」タブ欄に、プログラムを追加登録します。ここで「プログラムの追加」を選択し、パスにC:\Windows\System32\FTP.exeを指定します。

図2 「例外」タブによるプログラムの追加
これによってFTP.exeはファイアウォールにブロックされることなく、通信できるようになりました。問題の発生するFTPコマンドは、FTPクライアントの要求に対し、FTPサーバからデータ転送されるため、ファイアウォールがパケットをブロックしていたのです。
なお、SUAとIEはパッシブモード(常にFTPクライアントから通信の接続要求を行う方法)で動作するプログラムであるため、ファイアウォールにブロックされることがありませんでした。
参考
もし、Windows Server 2008がServerCoreならば、コマンドプロンプトからネットワーク設定や変更が出来るnetshコマンドを使用し、図2と同じ設定を行うことが可能です。
入力例
> netsh advfirewall firewall add rule name="AllowFTP.exe" dir=in program="C:\Windows\System32\FTP.exe" action=allow
Windows Vistaではなぜ問題にならなかったのか?
ファイアウォールに関してWindows Vistaでも既定で有効であるため、Windows VistaでFTP.exeを使用したとき今回のようにブロックされることがあるはずです。なのに、なぜ問題にならないのか・・・、という疑問が残ります。
Windows Vistaの場合、このような事態に遭遇すると、ダイアログによるメッセージが通知されるのです。そのため、ユーザはファイアウォールによってブロックされていると気付くことができます。また、Windows XPの場合も同様にメッセージ通知されました。

図3 Windows XPによる通知画面
最後に
Windows XPやWindows Vistaでは図3のようなメッセージ通知がありますので、即座に対応することできますが、Windows Server 2008ではメッセージ通知がないため、すぐ原因に気付くことができませんでした。
このような悩みを解決するために、Windows Server 2008でもメッセージ通知の設定が可能です。図2の左画像「例外」タブの「Windows ファイアウォールによる新しいプログラムのブロック時に通知を受ける」にチェックを入れるだけです。
このチェックはWindows XP、Windows Vistaと同様にWindows Server 2003 R2でも既定でチェックが入っていますが、Windows Server 2008では入っていません。Windows Server 2008の変更点の一つとして認識しておくと、今後のトラブル対策に役立つでしょう。

![富士通直販サイト WEB MART[法人]](/primergy/image/to-wmps.gif)



