プロが教えるわが家の防犯対策術!

FTPサーバ(192.168.0.20)のポートを変更しました(仮に21→12345)
そしてルータのポート開放にて
192.168.0.20 ⇔ 21
      ↓
192.168.0.20 ⇔ 12345
に変更しました。

そして、ネットワーク外のFTPクライアントの設定で
ポートを21→12345
に変更して接続を試みたところ、以下の様なエラーでリストが表示されません。
------------------------------------------------------------
状態: ログインしました
状態: ディレクトリ リストを取得中...
コマンド: MLSD
レスポンス: 425 Unable to build data connection: No route to host
エラー: ディレクトリ リスト表示の取り出しに失敗しました
------------------------------------------------------------
ですが再度21に戻すと正常なのです。
他に設定すべき箇所があったら教えてください。

A 回答 (11件中1~10件)

ヤマハの書き方に詳しくは無いのですが、



>最初は以下の設定になっていました。
>プロトコル、ポート、使用ホストIPアドレス
>tcp、ftp、192.168.0.20

tcp、20、サーバのIP

で開くのではないですか。まぁ一般論としては危険極まりないので、Passive-FTPを使ったり、sshで接続することの方が現実的ですけど。

Filezilla ServerはPassive-FTPにも対応していますし(Windowsクライアントはpassive-modeに非対応なので、Filezillaでも入れて下さい)、SFTPサーバにもなります。

あと、情報を小出しにして、ズバリの回答を求めるのは感心しません。解決が長引きます。
    • good
    • 0
この回答へのお礼

>情報を小出しにして、ズバリの回答を求めるのは感心しません。
すみません。そんなつもりではなかったのです。

Filezilla ServerはSFTPサーバにはならないって記事を見かけました。
https://okwave.jp/qa/q8607630.html
クライアントとしてはSFTPサーバ接続に対応しているようですが。

お礼日時:2021/01/06 19:15

間にルータとか入ってますか?



多分、ですが、「21/TCPがinside側から来て、その3way-handshakeが成立した後に、outside側の機器から20/TCPが来た場合には許可する」というものが、そこにハードコーディングされているのでしょう。

UDPはセションを張らないプロトコルですが、53/UDP(DNS)の応答は得られます。これは53/UDPのoutbound通信に対しinbound通信があるだろうということで、数秒間src-portが53/UDPの通信を許可しているからです(もちろん、相手サーバのIPの整合性は見ているでしょうけど)。

途中の装置にハードコーディングされているのであれば、dst-port=21/TCPのinbound通信を許可するというACLを書き足すしかないでしょう。もちろん、サーバのIPを限定すれば多少は強固になります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
サーバ側は、ヤマハのNVR500です。
静的IPマスカレード関連にて、
最初は以下の設定になっていました。
プロトコル、ポート、使用ホストIPアドレス
tcp、ftp、192.168.0.20

これを以下の様に変更しただけです。
tcp、12345、192.168.0.20

またサーバソフト(FileZilla Server)のListenポートを
21→12345 に変更しただけです。

このルータで、仰っているアドバイス通りの設定が出来るのか不明です。

お礼日時:2021/01/05 10:01

FTPって、ネットワークの世界ではいろいろとめんどくさいのですよ。


これまでの回答やそのお礼を見る限り、どうしてもファイル転送の手段がFTPでなくてはならないのなら新サーバはPASVのみに絞る以外に方法はなさそうです。

>他に設定すべき箇所があったら教えてください。

端的に言いますと、下記の対応が必要になります。
・新FTPサーバでは、PASVポートの範囲を他とぶつからないように、かつ同時接続する可能性のある数を考慮して適当に決め、設定する(例えば20000~20010とか)
・ルータの設定で、新FTPサーバのPASVポートすべてについて対応するようにDNATの設定をする
・FWはルータで開けているポートへの通信を許可する、もしくは高性能なFWで12345ポートをFTPとみなしてIPコントラクション機能が使えるものであれば対応するPASVポートをそれに指定する
・クライアントは新FTPサーバへの通信はすべてPASVに限定する
上記の意味が分からなければ、FTP通信とはどういうものかを勉強してください。FTPのことを理解していない人には同一IPアドレス上で複数のFTPサーバを運用するのは無理なので、どうしても理解できないなら次善策を考えてください。

次善策としては、一番簡単なのは新FTPサーバ用にもう一つIPアドレスを割り当てることです(私が知る限り、ISP向けWebホスティング業者は不特定多数のクライアントにFTPサービスを提供しなくてはならない手前、貴重なグローバルIPアドレスをFTPサービスのためだけにいくつも割いてまでもこの方法でしのいでいるところが結構あります)。それができないのであれば、上記を見てわかるようにセキュリティの穴をあける以外の何物でもないため、SCPなど別のファイル転送方法の利用を考えたほうがいいです。
    • good
    • 0
この回答へのお礼

> 私が知る限り、ISP向けWebホスティング業者は不特定多数のクライアント
> にFTPサービスを提供しなくてはならない手前、貴重なグローバルIPアドレ
> スをFTPサービスのためだけにいくつも割いてまでもこの方法でしのいでい
> るところが結構あります

1グローバルIPに2つのFTPサーバを設置する事はかなり異例の事なのですね?
ありがとうございます。勉強になりました。

お礼日時:2021/01/02 13:20

追加する方をftp以外にするのが正解でしょう。

ftpはポートの使い方が独特でルータで特別対応しているのでポート変更が難しいです。標準以外のポートでのftp対応は可能なルータが存在するかも分かりません。他のプロトコルならポート変更も可能でしょう。
サーバおよびクライアントの環境にもよりますが追加はsftp(これはSSHのオプションなので標準22)が良いのではないでしょうか。
    • good
    • 0
この回答へのお礼

なるほど、ありがとうございます。
FTPサーバソフトの設定画面にポート設定箇所があり、
デフォルトでは21ですが、編集可能なのでポートを変えるのは
おかしくない事なのだと思ってました。
ですが、ルータ越えとなると話は別のようですね。

お礼日時:2021/01/02 13:22

FTPじゃなくSSH使った方がいいと思いますけどね。



サーバOSとソフトはなんでしょう?
# Windows10ならopenssh入れられるようですし、だめならcygwinとopensshとか。

パッシブモードにして、割り当てるポートの範囲を制限し、
その範囲のポートをすべてサーバ側にポートフォワードする。
という対応になるかと思いますが。
#設定できるかはソフトによる。

アクティブモードの時に動作していたのはクライアント側のFWが21番ポートの通信を監視していて、FTPの接続を確認したらポートを開けてくれたのでしょう。
ルータの内側からの接続の場合も、21番ポートを監視していたのでしょう。
で、別のポートだとそんな監視はしませんのでルータも一時的なポートフォワードもしてくれないので接続不可…とか。
FTPのルータ越え(FW越え)はいろいろと面倒です。
    • good
    • 0
この回答へのお礼

ポート変更して複数のFTPサーバを設置するのは同じネットワーク内での事なんですね。

お礼日時:2021/01/02 13:23

クライアント側ルータでIPマスカレードしていないならファイヤウォールを止めるだけで良いですが、IPマスカレードしているとftpサーバからのデータセッション接続要求をクライアントPCに転送できないのでルータがftpプロトコルを認識して転送先クライアントPCを判断する必要があります。


ルータの型式など分からないので確定できませんが、ftpの制御ポート(通常21)を変更してftpプロトコルと認識できるような設定ができる可能性は低いのではないかと思います。なぜ制御ポートを変更したいのか分かりませんが、変更しないのが妥当な対策だと思います。なおポート変更がセキュリティ的な理由ならそもそもftpは使わないようにしましょう。
    • good
    • 0
この回答へのお礼

セキュリティの理由ではなく、
同じローカルエリア内に、2台のPCをFTPサーバとしたいのです。
(用途が違う事、またその他の理由により1台のPCにまとめるのはNGです)

その場合、21番と別のポートを使わないといけませんよね?
元々ある1台は21番でFTPサーバとして長年運用しています。

これから追加したいPCのストレージを外部から読むことができるなら別の方法もありです。
FTPポートを増やすのが簡単かと安易に考えてましたが、
もっと良い方法ありますか?
Windowsマシンです。理由があってまだWindows7です。

お礼日時:2020/12/30 21:16

どういうネットワーク構成かイマイチ分かりませんが、クライアント側ルータの問題と思います。

通常TCPセッションはクライアントからサーバーに張りますので、LANとWANをつなぐルータではWANからLANへの開始セションをポート開放したポートを除いて規制しますが、逆のLANからWANへの開始セッションは規制しません。
ところがftpのアクティブモードではデータセッションはftpサーバから張るのでそのままではクライアント側ルータで規制されてftpが使えません。それでパッシブモードが使われるわけですが、一部のルータではアクティブモードでもftpが使えるそうで、これはftp通信をルータが理解してデータセッションの通信をftpクライアント側に転送するからです。このとき(クライアント側)ルータがftp通信を識別するのはポート21を使った制御セッションの開始なので、そのポートを変更してしまうと使えません。
なお(クライアント側)ルータと書きましたが、クライアントマシンのファイヤウォールも同様の壁になる可能性があります。
ネットワーク構成全体を再確認ください。
    • good
    • 0
この回答へのお礼

ルータの設定うんぬんはひとまずおいておいて、
サーバ側のファイアウォール、クライアント側のファイアウォールを両方無効にしても結果は変わりませんでした。

調べたところによると、FTPは21、20のポートを利用しているそうで、
21番でログインなどコマンド送信が出来て、20番でリストの表示など行っているそうです。

今回は21番を変えましたが、それに伴ってサーバ側のルータ設定と、クライアント側のポート変更により、コマンド送信はできているが、
リスト表示ができない状態なので20番に相当する設定変更が必要ないのでしょうか?ソフトの設定上ではそういう箇所が見当たらず・・・

お礼日時:2020/12/30 18:05

>どこの設定を変えたら良いでしょうか。



今の時点では事象の正確な把握、原因の究明というフェーズだと思いますが、それをすっ飛ばしてのご質問であれば、「どっか変えれば、うまくいくんじゃないの?」としか回答できません。

>Unable to build data connection: No route to host

前にも書きましたけど、FTP-DATAセションが張れないことが主因です。その理由は「No route to host」、ホストに対する経路がないであって、ここで言うホストはIBMのメインフレームではなく、ノードを指しています。具体的にはFTP-CMDセションを張って来たノード。
    • good
    • 0

FTPdにはアクティブモードとパッシブモードと言う2つの方法があります。


詳しいことはネットで調べてみてください。

ルーターでポート変換を行う際はよく理解しておかないとご提示のような状況になってしまいます。
まあよくあることです。
    • good
    • 0
この回答へのお礼

アクティブとパッシブの事は認識してましたが、
違いをきちんとは理解していません。

ただ、今回はアクティブにて正常動作していたものを
ポート番号を変えかえただけで、リスト表示できなくなったので
問題はそこではないと思っています。
ちなみにポートを21に戻せばリスト表示もされます。
今回は21番ポートは別マシンが使用するため、ポートは変えたいのです。

お礼日時:2020/12/30 10:29

Active FTPというのは、一般的には以下のような動きをします。



①Node-A(Dst-Port=FTP-CMD)→Node-B
②Node-B(Dst-Port=FTP-DATA)→Node-A

つまり、データセションはログインした先から張ってきます(一般的でない使い方ではそうではないのですが、余りにも一般的ではないので、一般論としての話です)。

ご質問は、①は成功し、②が失敗している状況ですね。
FTP-CMDを21/TCPに戻すと成功するということから、FTP-CMD発行元やそこに至る経路でACLなどで落とされている訳ではなさそうです。

となると、FTP-DATAポートが20/TCPではなくなっているという疑いがあります。例えば「FTPサーバのFTP-DATAポートは、FTP-CMDのポートから1減じたもの」といったようなインプリメントが為されているとかです(考え難いですが)。

実際のところは、FTPサーバのNICと同一セグメントでキャプチャすると分かります。Dst-Port=TCP/20でリクエストしているならば、その環境のままFTPクライアント側でキャプチャしてみて下さい。可能であるならば、FTPクライアントとFTPサーバを同一セグメント上に置き、キャプチャすると分かり易いです。
    • good
    • 0
この回答へのお礼

説明が難しいです、すみません。
どこの設定を変えたら良いでしょうか。

FTPサーバ(192.168.0.20):ポートを21から12345に変更
ルータ(192.168.0.1):ポート12345を開放し、192.168.0.20に接続
FTPクライアント:接続先ポートを21から12345に変更

※ファイアウォールは一時的に無効にしてテストしています

お礼日時:2020/12/29 16:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています