2013年2月1日金曜日
Windows 2008 Server R2 + FTPS ( FTP + SSL )で「ディレクトリ一覧を取得できませんでした」のエラー
■環境
Windows 2008 Server R2
IIS 7.5
■ネットワーク構成
▲サーバー ⇔ FW(NAT)★ ⇔ インターネット ⇔ クライアント
※▲・・ローカルIP
※★・・グローバルIP
※FW・・ファイヤーウオール
※NAT・・プライベートIPアドレスをグローバルIP アドレスに変換
■ポイント
FTPは、2つの通信ポートを利用する
①コネクション確率用(デフォルト21番)
②データ送受信用(デフォルト20番)
また、PASVモードの場合、②データ送受信用は、ある範囲内で
ポート番号が可変する。
SSL化していると、Activeモードは利用できず、PASVモードを使う必要がある。
ポート番号は、20、21番から別の2つの番号に変更可
■エラーの原因
データ送受信用ポートがファイヤーウォールで
ブロックされている可能性が高い。
「ディレクトリ一覧を取得できませんでした」
コネクションは確立され、つながるのだが、データ送受信段階になって
ファイヤーウオールに拒否られてる状態である。
では、ファイヤーウオールを解放しようとしてもポート番号が可変のため、
どこを解放すべきか判断がつけられない。
■対処方法
下記のサイトを参考にした。
http://junpla.blog3.fc2.com/blog-entry-247.html
A.ファイヤーウオールにFTP用のポート2つを開ける
B.データ送受信用ポートの範囲を明示する(1024番以降でFromTo指定)
C.ファイヤーウオールの外部IPを指定する
D.上記、設定後、サーバー再起動が必要(Microsoft FTP Serviceの再起動でもよい)
では、設定内容を見ていこう
Aについては、下記のイメージ
Source:Any
Destination:XXX.XXX.XXX.XXX(★グローバルIP)
Service:ftp
Port:XXXX,YYYY(FTPの2つのポート番号)
Action:permit
Bについて、データ送受信用のポート範囲を指定
Windows 2008 Server R2 のIISマネージャ
FTPグループ
FTPファイアウォールのサポートを選択
データチャンネルのポート範囲を入力
例えば、5678-5678
とすると、5678番のみがデータ通信用ポートして利用される
→つまり、ファイヤーウオールに明示的設定可能になる
※ここで設定するポートとは、データ通信用であり、コネクション用ポートは関係ない。
※ポート範囲が1つでも複数台からFTPできた。
Cについて、PASVモードのため必要と思われる
Windows 2008 Server R2 のIISマネージャ
FTPグループ
FTPファイアウォールのサポートを選択
ファイヤーウオールの外部IPアドレスを入力
上記「ネットワーク構成」で記載した★グローバルIPを入力すればよい
Dについては、よく分からないが、設定反映に必要だった。
■通信確認
利用したソフトウェア:WinSCP
プロトコル:FTP
暗号化:SSL明確な暗号
ホスト名:★グローバルIP
ポート番号:コネクション確率用のポート番号
ユーザー名:FTPのユーザー名
パスワード:FTPのパスワード
※接続のタブ→パッシブモードにチェックを付ける
ログインして、ファイルの読み書きができればOK(ここは各自権限設定によるが)
■最後に
初めて、FTPSを構築しようとすると、はまりやすいところである。
FTPSが開通しないと、プロジェクトが先に進まなくなることもあるだろう。
インフラセットアップは、やってみないと分からない部分であり、
普段から練習もできなかったりする。日頃から知識を蓄えておいて先人のノウハウを
参考にしながら、試行錯誤するしかないようである。
■追記 2014/05/01
IIS7.5のFTPのデータチャネルのポート範囲がグレーアウトしている場合は、
大元のFTPで設定が可能となっている。
登録:
投稿 (Atom)