スポンサードリンク

2014年09月09日

Amazon Web ServicesのEC2上にFTPサイトを構築する時に注意するポイント IISの場合

題名のまんまなんですが、日本語の記事だとIISに言及したものがなかったので備忘録としてメモ程度に残しておきます。
ちなみに、結構ハマりました。

利用シーンとしましては、Windows Server 2012のサーバにIIS8をインストールして、それを使ってftpサイトを作ろうという単純なものです。
Windowsサーバなので、せっかくなのでIISにしようということにしました。

Windows Server 2003時代であればIISのインストールにインストールCDが必要で、
EC2だと、Amazonが用意してくれたi386のインストールCDイメージが入ったSnapshotをEBSとしてAttachして
そこからインストールしていたものですが、2012だとそのままインストールできます。

手順は以下のURLに沿ってやればOKです。
http://technet.microsoft.com/ja-jp/library/hh831655.aspx

その後いつも通り
・ftp用のユーザを作成
・ftpサイトを作成
・ftprootを任意のフォルダに変更
・新しく作ったユーザでの書き込み権限を、任意のフォルダ以下にも別途設定
 ※ftpにて書き込みを可能にしてもフォルダ側のセキュリティではじかれるので要設定です
あたりを設定します。

そして、ここはffftpというレガシーなツールを使って、接続を確認しましょう。
問題は、このffftpでデフォルトでONになっている「パッシブモードを利用する」というものです。
PASVです。このチェックを外してOFFにしてしまうと、Activeモードになります。

ActiveとPassiveの違いは、前もハマって記事にしていました。
http://drawing-hisa.seesaa.net/article/373747625.html

パッシブとアクティブの違いは、ここを読めばざっくりとわかります。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1118264251

何が起きるかというと、パッシブモードだとftp接続できないという問題が起きます。
チェックを外すと、繋がります。
これはActiveとPassiveとで仕様が異なるからです。

Activeモードというのは、サーバ側が能動的に動くものです。
なので、ftpクライアントから来た情報を持って、サーバ側からクライアント側に接続を仕返してくれます。

しかし、Passiveモードだと、サーバ側は受動的になります。
どうなるかというと、クライアントから接続情報をくれという命令がまず来るので、サーバは
「これが接続情報だよ」と自分の情報を渡します。
このとき、自分のIPアドレスと、利用portが渡されます。
ftpでは、特にPassiveの仕様ですが、ランダムにportを利用するので、教えてあげないといけないのです。
この情報をもって、クライアントは再度ftpサーバに接続をしに行きます。

が。
ここで繋がらなくなります。なぜなら、
このときftpサーバから渡されるIPアドレスは、ローカルIPアドレスだからです。

そう、これはAWS及びEC2のグローバルIPことElastic IPを使っているときに起きる問題です。
反対に、DXやVPNを使っていて、ローカルIP同士で通信できる場合にこの問題は発生しません。

これらの解決策は、Linuxベースの場合は
・【AWS】AWSでFTPサーバー立てる時に気をつけるべき2つのこと+α
http://dev.classmethod.jp/cloud/aws/to-be-aware-of-when-settingup-ftpserver-with-aws/
・EC2でFTPサーバを起動する(セキュリティグループ設定のコツ)
http://qiita.com/kawaz/items/ca3484d41b0d2ec2b998
あたりに記載があります。

何かというと、グローバルIPが貼られていることはftpサービスが理解できていないので
「お前は外に出るときは、このグローバルIP渡さないとダメなんだよ」って
明示的に教えてあげないといけないわけです。
その設定が、↑にあるとおり、Linuxのサービスだとできると記載があったのです。

が、IISの情報が、無い(´・ω・`)

そんなわけで記事にしてみました。
やり方は簡単です。ここにある方法をやれば、OKなのです。
・パッシブ モードの FTP サーバー用に Windows ファイアウォールを構成する方法
http://technet.microsoft.com/ja-jp/library/dd421710(v=ws.10).aspx

画像で説明すると、↓の画面。

IIS8_FW.png

これの「FTP ファイアウォールのサポート」をダブルクリックして

IIS8_FW2.png

その、「ここにElastic IPを書く」というところに、書いてください。
そして「適用」すればOKです。

まあ、わかってしまえば簡単なのですが、このファイアウォールな文章連打で
気付くかよ!わかるかよ!!!!!!!!

これのロジックは、私の理解の範囲ですが、ザックリ言うと・・・
ファイアウォールをftpサイトに噛ませると、パッシブの接続情報にそのファイアウォールのIPが必要なのに
ローカルIPを渡してしまうから、ファイアーウォールのIPめがけていけよ、っていうのがこの設定。
です。

L3スイッチ的な壁がある、と想像したらわかりやすいような、にくいような。

そんなわけで、Elastic IPのために作られたわけではないのでしょうが
結果的にIPを挟めるこの機能で、Elastic IPを渡すことができます。
タグ:AWS
posted by hinata_hisa at 19:36 | 東京 ☀ | Comment(0) | IT関係 | このブログの読者になる | 更新情報をチェックする