none
Wokerロールから外部FTPサーバへの通信について RRS feed

  • 質問

  • Wokerロールから外部FTPサーバに対して、データを送受信したいのですが、以下のエラーが表示されてしまいます。

    501 Server cannot accept argument

    (DOS画面よりftpコマンドを実行)

    確認時、以下の対応を行っています。

    1.ServiceDifinition.csdefにエンドポイントの追加

        <Endpoints>
          <InputEndpoint name="FtpData" protocol="tcp" port="20" />
          <InputEndpoint name="FtpControl" protocol="tcp" port="21" />
        </Endpoints>

    2.Wokerロールのファイヤーウォールの無効化

     Ftpサーバからのデータチャネル接続の要求を受け付けることができるようにと、一旦ファイヤーウォールを無効化しました。

    FTPサーバ側が問題無く通信できることは、別のPCから確認できています。

    他に何か設定が必要でしょうか?

    是非ご教授ください。


    • 編集済み mkuge 2013年11月5日 7:49
    2013年11月5日 7:48

回答

  • こんにちは。

    Azureの外側はファイアウォールがあり.csdefの設定は外→Azure上のインスタンスのポートの許可設定になります。
    FTPを使う場合はパッシブFTPにするなどしてポートの固定化、および通信用ポートの設定を.csdefにしてあげる必要があると思います。


    • 回答としてマーク mkuge 2013年11月6日 6:38
    2013年11月5日 8:48
    モデレータ

すべての返信

  • こんにちは。

    Azureの外側はファイアウォールがあり.csdefの設定は外→Azure上のインスタンスのポートの許可設定になります。
    FTPを使う場合はパッシブFTPにするなどしてポートの固定化、および通信用ポートの設定を.csdefにしてあげる必要があると思います。


    • 回答としてマーク mkuge 2013年11月6日 6:38
    2013年11月5日 8:48
    モデレータ
  • こんにちは。返信ありがとうございます。

    いつもブログには助けられています。感謝します。

    DOS画面(Wokerロール)からのFTPコマンドはアクティブFTPであり、外部サーバからの20番ポートへの接続を許可すれば通信できると考えているのですが、何か考え違いをしているでしょうか?

    そもそもパッシブFTPしかサポートされていないのでしょうか?

    ご存じであれば、教えてください。

    2013年11月6日 0:35
  • こんにちは。

    接続・ログイン等であればアクティブFTPでも問題なく行えます。データの送受信なければ問題ないはずですが、データの送受信は一般的にファイアウォールの内側にいる場合はFTPの仕組み上パッシブモードでないとうまくいかないかと。(ルータがうまく処理してくれる場合はアクティブでもできますが)


    他の要因としてはエラーの内容通り、サーバー側でサポートしていないコマンドを送ったとかでしょうか? 

    2013年11月6日 6:14
    モデレータ
  • アクティブFTPに対する私の理解が間違えていたようです。

    データ通信用のクライアント側ポートは20番固定ではないのですね。

    20番はサーバ側のポートであり、クライアント側は任意(クライアント側が指定)番号が割り当てられる。

    ということは、ご指摘の通り、ファイアウォール内からはパッシブモードでないと、うまくいきませんね。。。

    相手先がパッシブモードに対応しているか確認します。

    ありがとうございました。

    2013年11月6日 6:38