質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

18670閲覧

WindowsServerからのFTP通信

IzuShin

総合スコア68

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2017/03/07 22:28

VB.NetからFTPでファイル取得をしたいと考えています。
ですが、APサーバ(WindowsServer)とファイルサーバ(Linux)の接続で以下のようなエラーが発生してしまいます。

System.Net.WebException: リモート サーバーがエラーを返しました: (425) データ接続を開けません

試しにAPサーバ(WindowsServer)のコマンドプロンプトを起動して、FTPコマンドで接続をしてみました。
接続はできたようですが、dirコマンドでディレクトリを見ようとしたところ、以下のエラーが発生しました。

425 Failed to establish connection.

どちらもエラーコード425なのですが…。
これはWindowsServerのファイアウォールの設定が原因なのでしょうか?

クライアントPC(Windows10)からは問題なく接続できております。

ご存知のかたがおられましたら教えていただきたいです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

クライアント側の転送モードがPASV(パッシブ)でなければ20番(データポート)と21番(制御ポート)、PASVなら21番と1024番以上を開けてあげないとじゃないですかね。

  • PASVモードの場合

サーバ側:21番ポート+1024番以上のポート

  • 非PASV(アクティブ、もしくはPORT)モード

サーバ側:21番ポート+20番ポート

サーバとクライアント、双方でファイアウォール設定を確認してみて下さい。

投稿2017/03/07 23:39

編集2017/03/07 23:59
kanbeworks

総合スコア829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

IzuShin

2017/03/08 00:50

kanbeworksさん、ご回答ありがとうございます。 コマンドプロンプトでFTP接続し、dirコマンドを叩いたところ、以下のようなメッセージなため、PASVで接続しているのかと思います。 ftp> dir 200 PORT command successful. Consider using PASV. 425 Failed to establish connection. 基本的な質問で申し訳ありませんが、PASVで接続する場合はPORTをどこで指定しているのでしょうか? 申し訳ありませんが、教えてください。
kanbeworks

2017/03/08 01:03 編集

あ、「200 PORT command successful.」なのでPASVではなくアクティブ(PORT)モードですね。 FTPコマンドをお使いの場合、passiveと打てばパッシブ(PASV)モードになるのですが… Windowsのコマンドライン版って対応してましたっけ? あとで確認してみます。 非対応ならFFFTPとかのソフトで確認した方が良いかもですね。 ポートの指定とか挙動については以下を参考にしてみて下さい。 http://www.nina.jp/server/basic/ftp.html
IzuShin

2017/03/08 01:36

vb.netのパッシブ(PASV)モードを有効にしたら上手く接続できました。 ちょっとまだパッシブ(PASV)モードとアクティブ(PORT)モードの違いを理解できていませんが…、とりあえずやりたい事はできました。 ありがとうございました。
kanbeworks

2017/03/08 02:19 編集

アクティブ(PORT)とパッシブ(PASV)の違いは、データ転送のためのポートをどっちが準備するかの違いでしょうか。 まず、制御用のポートはアクティブ(PORT)もパッシブ(PASV)も変わらず21番です。 しかし、データ転送用のポートはそれぞれ違います。 アクティブ(PORT)の場合は、クライアント側から「○番のポートを開けたからここにデータを送ってね」とサーバに伝え、サーバ側の20番ポートからクライアントのポートに接続しに行きます。 逆にパッシブ(PASV)は、サーバ側から「○番(1024番以上)のポートを用意したから、データ転送のためにそこに接続してね」とクライアントに伝え、クライアント側からサーバ側に接続しに行きます。 データ転送用ポートを決定する主導権がクライアントにあるか無いかが、アクティブ(能動的)かパッシブ(受動的)かといったところでしょうか。 FTPサーバとクライアントの間にFirewallやNATを挟む場合は、アクティブモードだと相性が良くないことが多く、パッシブモードで通信するケースが多いかと思います。
IzuShin

2017/03/08 11:54

kanbeworksさん、ありがとうございます。 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問