nikki

アクセスカウンタ

zoom RSS FTP(PASVモード)調査

<<   作成日時 : 2006/04/15 21:19   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

会社のマシンをXPにしてから、FFFTPでFTP接続すると、
どうもイマイチ。。。

詳しくは覚えてないけど、データ転送中に動きが止まり、
結局アップロードできないことがある。

でも、Windows付属のFireWallを無効にしたら、
うまくいった。

少し調べてみる。

http://sakaguch.com/FTPserver.html

http://www.atmarkit.co.jp/fwin2k/win2ktips/118ftpmode/118ftpmode.html

>FTPでは、「制御用コネクション」と「データ転送用コネクション」の2つの
>TCPコネクションを使用しながら動作している。

@制御用コネクション
Aデータ転送用コネクション

@制御用コネクション・・・ クライアント→サーバー

Aデータ転送用コネクション
 1.Activeモード  ・・・ サーバー→クライアント
 2.Passiveモード  ・・・ クライアント→サーバー


http://www.atmarkit.co.jp/fnetwork/rensai/netpro11/netpro01.html
http://www.atmarkit.co.jp/fnetwork/rensai/netpro10/netpro01.html

●データコネクションの作成と利用
 PORTコマンドは、サーバにデータコネクションのためのIPアドレスとポート番号を通知するためのコマンドだ。データコネクションは、前述のように、ファイルデータの送信と受信、ファイル一覧情報の取得などを行うための専用コネクションである。

PORT IPアドレスとポート番号


 コントロールコネクションは、まずクライアントからサーバへ向けて作成される。これは一般的なクライアント/サーバモデルに基づいている。次にクライアントはファイルの送受信などに先駆けて、PORTコマンドを実行する必要がある。PORTコマンドは次のようなフォーマットの引数をとる。

(例) 192, 168, 1, 10, 4, 25

 第1引数から第4引数まではIPアドレスを示す。4バイトのIPアドレスの各バイトを10進数で表記したものだ。通常は、クライアントのIPアドレスを指定する。上記の例では、「192.168.1.10」という意味になる。第5引数と第6引数は、2バイトのポート番号の各バイトを10進数で表記したものだ。上記であれば、「4×256+25=1049」を示している。


■ファイアウォールへの対応
 FTPの利用には一点、大きな問題がある。それはファイアウォール環境での利用だ。前回説明したように、コントロールコネクションはクライアントからサーバへ、データコネクションはサーバからクライアントへ接続される。つまり、ファイアウォール環境下では、データコネクションは外部から内部へ張られるのだ。これはセキュリティ違反となり、FTPは使用できないことになる。

 そこで、ファイアウォール環境で外部のFTPサーバと通信するFTPクライアントでは、PASVコマンドを用いるのが普通だ。PASVは「パッシブモード」と呼ばれる動作モードへの切り替えコマンドだ。PASVコマンドが引数なしで与えられると、サーバは次のようなレスポンスを返す。

227 Entering Passive Mode (192,168,1,11,87,195)

 この ( ) 内の表記は、PORTコマンドの引数と同じだ。PORTコマンドと同じく、サーバが「このIPアドレスのこのポートへデータコネクションを接続せよ」と答えているわけだ。サーバ側でデータコネクションを準備するので、これに応じて、クライアントはこのアドレスとポートへデータコネクションを確立可能になる。


一応、ご家庭でも試してみる。

</img>

</img>

256×153+118=39,286

って計算が文系野郎にはウザかった。。。

http://www.jpring.net/jitaku/vsftpd.html

PASVモード時のポート指定をする。
英訳はinfoseekで行いました。 日本語が変でもそのままにしてあります。

pasv_max_port
The maximum port to allocate for PASV style data connections. Can be used to specify a narrow port range to assist firewalling. Default: 0 (use any port)

【PASVスタイル・データ接続に分配するべき最大のポート。firewallingを支援する狭いポート範囲を指定するために使用することができます。デフォルト:0(どんなポートも使用する)】

例 20010番ポート  pasv_max_port=20010

pasv_min_port
The minimum port to allocate for PASV style data connections. Can be used to specify a narrow port range to assist firewalling. Default: 0 (use any port)

【PASVスタイル・データ接続に分配するべき最小のポート。firewallingを支援する狭いポート範囲を指定するために使用することができます。デフォルト:0(どんなポートも使用する)】

例 20000番ポート  pasv_min_port=20000

以上を vsftpd.conf に記述することで20000〜20010のポートが使用されます。


http://72.14.203.104/search?q=cache:Yj0rKQsTvhcJ:www.love-snoopy.com/wiki/index.php%3FVSFTPD%25A4%25C7Passive%2520mode%25A4%25F2%25B5%25F6%25B2%25C4%25A4%25B9%25A4%25EB+%EF%BD%96%EF%BD%93FTPD+PASV%E3%80%80FireWa%EF%BD%8C%EF%BD%8C&hl=ja&gl=jp&ct=clnk&cd=1&lr=lang_ja

---IPTABLEを使っている場合---
IPTABLEでは、拡張オプションstateのRELATEDなどで、
通常のFTPデータは自動的に判別して通してくれるけど、
Passive modeを使うときはそうはいかないようです。
そのため、IPTABLESのルールに以下を追加してやるとOKです。

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 60000:60010 -j ACCEPT
1行目は、通常のFTPのルール。
それから、2行目が今回書き加えたルールで、このページの上の方で、
設定したPassive用のポートを指定している(ここでは60000〜60010)
これで、FTP制御はTCPポート21番、FTPデータは60000〜60010を宛先ポートとして、
クライアントからサーバに対し接続することができます。


コネクションを張る元は、クライアント側。

サーバーにどのポートが開いているか
問い合わせて、クライアントはサーバーにつなげばいいと。

サーバーはどこからどこまでポートをあけるか決めておいて、そこに関しては、
通るようにルーターなりを設定しておけばいいと。

でも、今回はクライアント→サーバーは制限厳しくて、
サーバー→クライアントはフリーみたな感じなんだよね。。。

そうすると、多分Aciveモード使わないといけないから、
クライアントマシンのFireWallにつっかかったってことか。

http://d.hatena.ne.jp/satoshis/searchdiary?word=*%5Bnet%5D

# ten 『Windows XP だけということになると、やはり Windows Firewall が気になりますね。
Data Connection に割り当てる port の再利用が上手く行ってないんですかね。
再利用時には遅延が働く筈ですが、その辺りがおかしくなって再利用されないまま port を使いまくり、ファイアウォールで拒否設定になっている port を使ってしまったとかが考えられそうですけど。
そもそも ftp は active/passive の何れのモードで接続しているのでしょうか。』

# satoshis 『なるほど、次はWindowsFirewallを無効にして試してみましょう。ftpはactiveです。』

# ten 『もし Windows Firewall を無効にすることで現象が発生せず、かつ、FTP サーバ/クライアントが PASV モードを許容するなら、PASV モードで接続するのが良いではないでしょうか。
PASV ならばクライアント側の Firewall は関係無くなりますので、セキュリティ面からはお勧めかと。』

# satoshis 『確かにpassiveモードだとクライアント側のWindowsFirewallは関係ないですね。今の試験が終わったらpassiveモード試してみます。』


何かあやしいんだけどなあ。。。

>PASV
227 Entering Passive Mode (60,236,4,101,234,16)
アップロードのためにホスト 60.236.4.101 (59920) に接続しています.
接続しました.
>STOR /public_html/ipod - ZDNet Japan.files/zd_right.css
150 Opening BINARY mode data connection for /public_html/ipod - ZDNet Japan.files/zd_right.css
226 Transfer complete.
アップロードは正常終了しました. (1 Sec. 1030 B/S).


ちなみに、よく止まるのは「STOR」のあたり。

STORコマンドは逆に、データコネクションを通じてサーバにファイル内容を送信する。送信した内容は、引数で指定した名前のファイルとして保存される。すでに同じ名前のファイルが存在している場合には、上書き保存されることになる。


んーー、そんなにたいしたことはしてないみたいだし。。。

月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
URL(任意)
本 文
FTP(PASVモード)調査 nikki/BIGLOBEウェブリブログ
文字サイズ:       閉じる