• ベストアンサー

FTPサーバーを作っているが、20番ポートが開かない。

Linuxを始めて半年になります。 Webサーバーを運用する勉強をしています。 vsFTPdを使用してFTPを使えるようにしたのですが、ケーブルインターネットなど、一部のクライアントから接続できないようです。 原因を探ったところ、20番ポートが閉じているようです。 21番と80番はちゃんと開いています。 Corega BAR SDというルーターを使っていますが、ポートをあける方法が分かりません。 もちろん、Linux側のファイアウォールは外しています。 BAR SDで20番ポートを開くことは出来ないのでしょうか? 出来るならやり方を教えて欲しいです。 ・ポートスキャンは↓でしました。 http://210.143.99.143/~p-sec/pscan.html よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kuma-ku
  • ベストアンサー率54% (1558/2845)
回答No.1

こんばんは まったく接続できないのであれば、Port の問題かもしれないですが、接続できる場合もあれば、Port では無くほかに原因がありそうです。 そもそもルータによっては、FTPのデータ転送に使用されるTCP20はコネクション確立後のデータ転送時にしか開かないタイプもあります。 外部からのPortスキャンは当てになりません。 とにかく、サーバのログを確認しましょう。 Active/PASVなど、クライアントからデータ転送モードを変更して試してください。

参考URL:
http://www.atmarkit.co.jp/aig/02security/ftppasv.html

その他の回答 (1)

  • vais
  • ベストアンサー率75% (47/62)
回答No.2

設定についてなのですが、通常この手のルータについては、LANポートから接続した場合に、『固定のIPに対して、WEBブラウザでアクセスする』と、ルータの設定画面が出ると思います。  ここでフィルタリングの設定ができるはずですので、今回の利用方法から考えると、ポートフォワードするだけになるはずなのですが、その画面についての操作のご質問ですか?  kuma-kuさんと重複する内容ですが、アドバイスとして投稿させてもらいますね。 > ケーブルインターネットなど、一部のクライアントから > 接続できないようです。 との事ですが、これは一部というわけでなく、全てにおいて 20/TCP を使うことができないだろうと思いますが、違いますでしょうか。 (ある人は、OKである人はNGとは考えづらいですが)  FTPには、 ・Port mode ・Passive mode という2つの接続方式があります。  20/TCPを利用するのは、Port mode というタイプで従来から利用されてきた方式ですが、安全性から昨今ではこの 20/TCP を利用できないようにするサーバや、ルータが多くなって参りました。  20/TCP については、FTPのデータポートであり、21/TCP であるコマンドポート確立後の、バックコネクションになります。 この時、Port mode での接続では (・・以下では、矢印の向きをよく見てください)    クライアント=>サーバ:21     (接続確立)     (データ転送)    クライアント<=サーバ:20 という流れの動作になりますが、このサーバの20/TCP 側からの接続が安全性から推奨できないため、前述の通り Passive mode というのが考案、実装されました。  Passive mode では、    クライアント=>サーバ:21     (接続確立)     (データ転送)    クライアント=>サーバ:不特定(指定可) となり、いずれもクライアントが起点となる接続方式です。  データポートについては通常、非特権ポート(1024~65535)のいずれかが使用されます。  このあたり、フィルタリングの話になるため、少し難解に聞こえるかもしれませんが、Port mode を利用したいのならば、ステートフルインスペクションと言われる状況に応じたコネクション確立をするフィルタリングが昨今は普通です。 これまでの話から  ・20/TCPの利用を許さない  ・ステートフルインスペクションを利用できない という環境なのだと思われます。  まずは、 vsFTP にてパッシブモードをONとして、相手の方にも接続をパッシブモードでお願いしてみてはいかがでしょうか。  非特権ポートまでふさがれていることは無いと思いますから。  それでもPort mode が利用したいのであれば、ルータにて 20/TCP を解放し、さらにはサーバ側でフィルタリングする事をお勧めします。 (netfilter の設定します)  うろ覚えな情報ですが、vsFTPには pasv_enable とかいう設定箇所があったように思います ・・・が、vsFTPはデフォルトYESじゃなかったでしょうか。 (私自身は、FTPサーバを利用しないので、情報が曖昧です。)  私の個人的考えとしては、Port mode は避け、passive で利用されることをお勧めします。 (vsFTPのファイル転送時に、バイナリファイルを壊すバグって直ったんでしょうか?だいぶ昔の事で現状をしりませんが。  ちなみにこれについては、設定ファイルをいじると壊れないようにできました。)  以上、つたない説明ですいません。

関連するQ&A