• ベストアンサー

ルータでのftpに関するフィルタリング設定について

YamahaRT54iというブロードバンドルータを利用しております。 このルータのパケットフィルタリング設定項目に、 インターネットからローカルネットワークへの、送信元ポートが20番のものについては、通過を許可するという設定があります。 これはつまりftpの設定で、ftpでパッシブモードではなくアクティブモードで通信する場合、ファイル転送用の通信路としてftpサーバーの20番ポートからクライアントであるこちら側へ経路が張られるから、これを許可しないと暗黙のdenyによってはじかれてしまいftp通信がうまくいかなくなることへの回避策なのですが、 これがオンにされることでどうしてftp通信がうまくいくのか理解できません。 というのもローカルネットワークはルータのNATによって隠蔽されているはずで、たとえローカルネットワークへのftpdata通信を許可したところで、送信先のローカルアドレスがわからないはずであり、したがって通信が成立するはずがないのですが、しかし実際にはうまくいきます。 例えばローカルネットワーク内でWebサーバーを運用した場合、ルータにてルータの80番ポートへのアクセスをWebサーバー機に転送するポートフォワーディングを設定しなければ通信がうまくいきません。しかしftpに関してそのような設定は一切行っておりません。にもかかわらず通信がうまくいくのはどうしてなのでしょうか? 説明が下手でわかりにくいでしょうが、よろしくお願いします。 長々と失礼しました。

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

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.3

試してみました。確かにポート20からの通過を許可する静的フィルタ設定のみでNATを通過しますね。本来そのようなことは発生しないはずですので、ファームウェアがftpを知っていてftpdataポートを特別扱いしているものと解する他はないかと思います。   Release note for YAMAHA NetVolante RTA54i   http://www.rtpro.yamaha.co.jp/RT/docs/relnote/RTA54i/ のリビジョンRev.4.05.14(最新)のリリースノートの中に 「[12] NAT/IPマスカレードで、FTPとして認識するポート番号を設定できるようにした。」(nat descriptor ftp port DESC PORT [PORT...]) というものがあります。この設定のデフォルト値は21と書いてあるのですが、試しに   nat descriptor ftp port 200 22 (注:ディスクリプタ番号200は、RT54iのWANポート側のデフォルトディスクリプタ番号) と設定するとコマンド設定一覧にnat descriptor ftp port 200 22が表示され、ftpでftpdataを使った転送(dirコマンドの実行等)ができなくなります。   nat descriptor ftp port 200 21 を実行するとコマンド設定一覧にnat descriptor ftp portが表示されなくなり、再度ftpdataを使った転送ができるようになります。 ですので、この機能は標準でオンになっており、NATはポート21の通信(特にPORTコマンド)を、言わば勝手に監視し、動的フィルタと同じ動作をしているものと考えられます。

tochanx
質問者

お礼

疑問が解けました。ありがとうございます。 このftpとして監視するポートを指定する機能、最新のリビジョンで搭載されたそうですが、それ以前からftpに関しては前述のフィルタリング設定をオンにすることで何も問題はありませんでした。 ということはこのftpポートを監視するという機能自体は、最新のリビジョンで新たに搭載されたものではなくて、もとからあったものなのですね。それで、最新のリビジョンではそのポートを指定できるようになった、ということなのですね。

その他の回答 (3)

  • yyamagu
  • ベストアンサー率40% (21/52)
回答No.4

> この機能はルータなら大概はもっているものなのでしょうか? 具体的な製品知識はありませんが、NATルータならば大概持っていると思います。少なくともRT54i特有というような機能ではありません。 NATとFTPの相性の悪さは昔から有名な問題です。 > 何か名称はついていないのでしょうか? 知りません。多分一般的に通じる名称はないと思います。 より深く勉強したいということであれば、LinuxのIPマスカレードや、そのFTPについての拡張である"ip_masq_ftp"について調べるのが良いと思います。

tochanx
質問者

お礼

追加情報ありがとうございます。 "ip_masq_ftp"なるものの存在を初めて知りました。次の休みのときにでもいろいろといじってみようと思います。

  • yyamagu
  • ベストアンサー率40% (21/52)
回答No.2

アクティブモードの場合は、クライアントからサーバに対して、必ずPORTというコマンドが送られます。 PORTコマンドにはデータ接続で使うためのポート番号の情報が含まれます。 ルータはこれを解釈して、そこに書いてあるポートを一時的に開けます。このPORTコマンドには当然コマンドを発行したクライアントのアドレス(この場合ローカルアドレス)も記述されてます。 ですから、ルータは誰のために一時的にポートを開けたのか知っているわけです。

tochanx
質問者

お礼

なるほど!ありがとうございます。疑問が解けました。 すみません。ちょっと質問なのですが、この機能はルータなら大概はもっているものなのでしょうか?また、何か名称はついていないのでしょうか?

  • seiiiichi
  • ベストアンサー率41% (79/190)
回答No.1

内容がよくわからない部分もあるのですが、 FTPサーバはインターネット側にあるんですよね。 (「インターネットからローカルネットワークへの、  送信元ポートが20番のものについては...」からも  そう思いますし。) そして、例で出されたWebサーバはLAN側にあるんですよね。 であれば、FTPがうまくいくのは、LAN内からインターネット上の Webサーバにアクセスが可能であることと同じ理屈では ないでしょうか? もし、インターネットからローカルネットワークへの、 送信元ポート80番を「拒否」したら、インターネット上の Webサーバにはアクセスできないです。 NATしててもインターネット上のサーバへのアクセスが 可能なのは、NATしているルータが、送信元のIPとポート番号、NAT後のIPアドレスとポート番号などを覚えていて リプライが来たら再度送信元に変換するので問題ないです。

tochanx
質問者

お礼

早速のご回答ありがとうございます。 自分で読み返しても理解しがたいひどい質問文でした。お詫びします。 ご存知かと思いますが整理のために書きます。ftpのアクティブモードでの通信は、まずNATの内側のPCクライアントから、NATの外側つまりネット上のftpサーバーの21番ポートへ向けてコネクションが張られます。しかしこのコネクションは制御用で、実際にデータの送受信に使われるのはこのコネクションではなく、最初のコネクションが張られたあとに今度はftpサーバー側の20番ポートからクライアント側へコネクションが張られ、これがデータ送受信に使われます。これは通常のNATの内側から外側への通信とは決定的な違いあって、通常の通信であればコネクションが内側から外側へ張られ、以降の通信はそれのみを使って行うのですが、ftpの場合はそうではなく、内側から外側へ張られたコネクションとは別に、外側から内側へ張られるコネクションがあります。 seiiiichiさんがおっしゃるように、通常の通信であれば、NATの内側のあるPCをAとすると、Aの1024番ポートからgoogleの80番ポートへ通信パケットが発生し、このパケットがルータに到達した時点でルータはパケットの送信元アドレスをグローバルIPに、送信元ポートをランダムなものに書き換えます。そして書き換える前のパケットの送信元アドレス・ポート、書き換え後のポート、送信先のアドレス・ポートを記録します。そしてパケットがgoogleに届き、googleからのリプライが返ってきたとき、送信元アドレス・ポートが元パケットの送信先アドレス・ポートと一致し、送信先ポートが上記で書き換えたランダムなものと一致すれば、そのパケットの送信先アドレスをAのアドレスに、送信先ポートを1024に書き換えてNATの内側へ流します。これなら通信がうまくいくことは納得できます。しかしftpサーバーの20番ポートからAへのコネクションについては、発生元が外部からですから、ルータは記録を行っていないのです。つまり、サーバーの20番ポートからクライアントのランダムなポート番号へコネクションを張ろうとしてもルータにはその記録はないので、このパケットは破棄されるはずです。ということはftpに関して特例的な機能があるはずなのですが、説明書その他を調べてもそういった記述はないのです。ですから、疑問に思い質問した次第でした。

関連するQ&A

  • ルータ設定変更について【ネットワーク】

    ルータ設定についてなのですが、外部から自宅サーバへの通信設定がうまくいきません。。。 自宅のネットワーク機器はONUと無線ルータがあります。 外部との境界はONUになるので、ONUで以下の設定をしました。 設定:ポート80番と443番での通信のみ、グローバルIPから自宅サーバのローカルIPへのNAT変換をして通信許可。いわゆるIPマスカレード、ポートマッピング。 サーバ上のファイアウォールも80と443は通信許可済みです。 ですが、この状態でポート開放ができておりません。(スマホからpingが通らない。C-MANでも確認済み。) ファイアウォールを切った状態でも通信ができなかったのでONUで設定が間違っているか、ルータ側にも設定がいるのか、という線で考えてます。 どなたかアドバイスをお願いします。

  • パッシブモードでポート20番の開放が必要?

    FTPサーバーでパッシブモードを使うことに関してお伺いしたいことがあります。 最近になってFTPサーバーの構築に挑戦し始めたのですが、ソフトウェアには vsFTPdを使い、パッシブモードで動かしています。 データ通信用ポートには60000~60030番を設定しており外部ネットワークからも アクセスしたいので、ルーター側も21番と60000~60030番のポートを開放しました。 調べた限りでは、この設定でパッシブモードが使えるはずなのですが、なぜか外部からの 接続を受け付けてくれません。試行錯誤の末、ルーター側でポート20番も開放しないと パッシブモードが使えないということを突き止めたのですが、僕が調べたどのサイトにも パッシブモードを使用するために20番ポートを開放しなければならないとは書いていませんでした。 データ通信に使用しているポートを調べたところ、確かに60000~60030番のポート を使っていたので、パッシブモードで動いているには違いないようなのですが どうにも腑に落ちない内容なので、どなたかご教授いただけませんでしょうか? よろしくお願いします。

  • FTPの自宅サーバーに伴う問題。

    はじめまして。日頃お世話になっております。親切にアドバイスくださる方など大変感謝いたしております。 前回同じ内容をYahoo知恵袋の方に質問させていただいたのですが、問題解決いかなかったのでこちらにご質問した次第です。 現在会社とiPhoneにFTPで繋げられないかと好奇心考え構築に伴う疑問がいくつか出てきたのでご享受お願いします。 1、1・FTPの接続モードであるアクティブモードで、サーバーの設定画面にあるポートを21番から50000番に変更しました。 サーバー側のNATに5000番を開けさせ、serverに通す設定をしました。 しかし 認証はするもののデータが表示されません。 ここで私の見解なのですが変更されたのは制御コネクションであり、データコネクションは20番ままである。 ならサーバー側のNATで20番も開ければ通信出来ると考えたのですが、できません。って事はクライアント側のNATでも20、50000番を開ける設定にしないと開かないのですか? 2、20番をアクティブモードで変更する事はできないのでしょうか?またネットで調べてわかったのですがなぜ一般の環境ですとアクティブモードでの運用は難しいのですか? 2;PASVを使用して通信を行う場合コネクションの要求がクライアント側になったので、server側のルーターにはどのポートが使われ るかわからないのになぜ通信が行えるのですか?サーバ側のNAT設定をしなければどのみちサーバーからはデータはグローバルに行く前にルーターではじかれると思うのです。 お願いします。

  • FTPの為のルーター設定について

    FTPサーバーを構築したのですが、 LANないからだとアクセスはできるのですが、 インターネット上からアクセスができません。 これはNATテーブルの設定を変えるのですが、 FTPに使うポートを開くと同じ意味なのですか? グローバルIPアドレスとプライベートIPアドレスのポートの 設定するということだと思うのですが。 ルーターのNAPT設定項目にWAN側の割り当て WAN側 受信ポート範囲 とあるのですが、これはLAN側のポート番号とは 違う物なのですか? 複数のマシンでFTPサーバーを開くとだぶってしまいますが。 NTTBフレッツマンションタイプ、プロバイダーはぷららですが、ルーターの設定方法はどこに問い合わせたらいいのでしょうか? ルーターはWeb Caster V110です。

  • BIG-IPにおけるFTPプロファイルについて教えてください。

    BIG-IPにおけるFTPプロファイルについて教えてください。 BIG-IP(OS 10.1XX)を利用する環境で、クライアントからのFTPアクセスをFTPサーバに対してラウンドロビンで分散しています。 クライアント側で利用するFTPのモードとしては、Passiveモードを利用していますが、 BIG-IPのFTPProfileの設定でデータ通信ポートを設定しないと通信ができません。 ※FTPProfileの設定を無効にすると通信できない。 確かFTPのPassiveモードは制御用で21番、データ通信用で1024以上を使うのが常なので、 データ通信用で固定で20番ポート等を設定する事は不要と思ったのですが、ご存知の方教えて下さい。

  • 最近の家庭用ルーターのftp支援機能

    auひかりのAterm BL900HW ルーターを使っています。 WIndows標準のftp.exeを使ってインターネット上のftpサーバーに接続してみたのですが、パッシブモードが使えないはずなのに、データ通信できている(dirコマンドの結果が返る)。 ftp.exeのdebugコマンド出力と、サーバー側の詳細ログを比べてみると、ftp.exeからPORTコマンドが出てるのですが、ftp.exeの発行したPORTコマンドをルーターが差し替えて、ルーターのグローバルアドレスのPORTコマンドをftpサーバーに送って入るようです。 で、サーバーからのそのポートでの通信をルーターがWIndowsPCに中継している。 昔は、家庭用ルータがそこまでやってなかったと思うのですが、今では普通なのでしょうか?BL900HWのオンラインマニュアルに記述が無いくらい当然の機能? ググっても、「Windows標準のftpコマンドはNATを越えられない」的なページしか引っかかりません。

  • ルーター設定:FTPサーバーへ静的マスカレード

    IODATAのLANDISK「HDL-GZ1.0TU」にFTPサーバ機能があると知り、設定してみたのですが… LAN内であれば接続できました。 ftp://192.168.1.xxx グローバルアドレスを指定すると接続ができません。 ftp://xxx.xxx.xxx.xxx ----- FTPフォルダエラー このフォルダにアクセスできません。ファイル名を正しく入力したことと、フォルダにアクセスするためのアクセス許可があることを確認してください。詳細:サーバーとの接続がリセットされました。 %>ftp ***.***.***.*** Connected to ***.***.***.***. Connection closed by remote host. ----- ルーターはPlanex製BLW-04FMGを使っています。グローバルIPアドレスはプロバイダからDHCPで割り当てられています。 LAN内の機器にはローカルIPアドレスを固定で割り当ててあり、tcp21番が指定された場合はLANDISKへ渡すように設定したつもりでなんですが、この辺が怪しそうな気配です…。 ルーターのNAPT設定は NAPT 有効 FTP制御ポート 21 PPTPパススルー機能 無効 L2TPパススルー機能 無効 IPsecパススルー機能 無効 静的マスカレードは ID 64 プロトコル tcp リモートIPアドレス * リモートポート * 外部IPアドレス xxx.xxx.xxx.xxx(DHCPで割り当てられたモノ) 外部ポート 21 内部IPアドレス 192.168.1.xxx 内部ポート 21 何か思い当たる原因がありましたらアドバイスください。よろしくお願いします。

  • ルータPR-200NE(7.14)を利用した、FTPサーバ開設に関して

    PR-200NE(ルーター)を利用し、FTPサーバを開設したいと思い、先日から自宅で作業を行っているのですが、ローカルPCからFTPサーバに接続は行えるのですが、グローバルIPを指定して、FTPサーバに接続が出来ない状況のため、ご助言頂ければと思い、投稿させていただきました。 ---------------------------------------------------------------- *IPアドレスは仮定のものです。 クライアントPC:WindowsXP SP3 (192.168.1.21) FTPサーバ:HDL-GT(192.168.1.24) PR-200NEの設定、 パケットフィルタ設定にて 種別 送信元 宛先 プロトコル 送信元ポート 宛先ポート 方向 ----------------------------------------------------------- 通過 * 192.168.1.24/255.255.255.255 TCP ftp ftp 順方向 静的IPマスカレード設定にて 変換対象プロトコル 変換対象ポート 宛先アドレス 宛先ポート ----------------------------------------------------------- TCP ftp 192.168.1.24 ftp に設定し、その他は触ってはいないです。 HDL-GTの設定では 共有フォルダを作成し、user FTPを許可に設定してあります。 http://nai.homelinux.net/ftp_test.cgi にて、FTP接続テストを行ったところ、ちゃんとファイルが表示されたのですが、FFFTPにてWAN側IPアドレス(ルーターの現在の状況にて確認)を指定して、接続を行うと接続できませんとなってしまいます。 ご助言頂ければ幸いです。何卒宜しくお願い申し上げます。

  • FTPのパッシブモードの設定がうまくいきません

    FTPのパッシブモードの設定をしたいのですが、うまくいきません。 FTPサーバはvsftpdです。 vsftpd.confに次の設定はしました。 ------------------------------ pasv_addr_resolve=YES pasv_address=WANのアドレス pasv_min_port=60000 pasv_max_port=60099 ------------------------------ /etc/sysconfig/iptables-configに ------------------------------ IPTABLES_MODULES="ip_conntrack_ftp" ------------------------------ を設定しました。 lsmodで nf_conntrack_ftpがロードされているのを確認しました。 ルーターはNTTのRT-200NEで、 静的IPマスカレード設定で上記のTCP:21とTCP:60000-60099をFTPサーバのアドレスに設定しました。 iptables でも上記のポートは許可しています。 パソコンおやじさんのFTPサーバテストでPASVモードで接続テストを行いました。 http://www.aconus.com/~oyaji/ftp_tst/ftp_tst.htm すると、60101とかpasv_max_portで設定した値より上のポートで接続しようとしてタイムアウトになるようです。どうやら、ルーターで設定した値の少し上のポートで接続をしようとするようです。ルーターの設定を変更すると、ポート番号がそれにつれて変更します。 環境は OS: Fedora Core 6 FTPサーバ: vsftpd (Fedora Core 6に付属のものをアップデートしたもの) ルーター: NTT RT-200NE 回線: Bフレッツ (固定IP) どなたか、解決策をご存知の方教えていただけないでしょうか? よろしくお願いいたします。

  • FTP通信について

    現在、FTPデータ通信ポート20番を利用したデータの流れを確認したく、WindowsDosプロンプトでFTPを行った所、データ通信ポートが20以外を利用しておりました。(Etherealで確認したら3000番台を利用) 実際には、FTP通信は20番がデータ通信用、21番が制御用ポートと学習しておりました。 データ通信20番ポートを利用してFTP通信をしたいのですが、どのような方法があるのでしょうか。FTPサーバ側の問題なのでしょうか。 FTPサーバが問題だとすれば、上記実現するために、フリーのFTPサーバ(できればWindows)をご紹介頂けると幸いです。 お世話になりますが、宜しくお願い致します。