メニュー
Infomation
■お知らせ
[スパム対策]コメントにURLを含めると自動的に削除されます。
■このサイトについて
一応残していますが、全時代の遺物。全ての情報は古く役に立ちません 連絡先:メールアドレス
■日記更新情報
RSSRSS|RSS(本文のみ)|lirs
実験&リサーチ
巡回先
製作環境
 

 



2004|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|11|12|
2011|01|
2014|05|08|
2017|07|
2018|03|
2020|08|10|
2021|11|

2004年10月21日(Thursday) [長年日記]

_ ネコミミモード

ある方の親切によりボクもやっと見ましたよ!

原作はけっこう昔に読んでたのでなんか懐かしい・・とおもったらだいぶ雰囲気違うですねw。

アニメはもう最初からネコミミモード全開でそれはそれでイイ(≧∇≦)b。

来週東京いくかもしれないのでセンター街には足を運ばねば。

_ ファイル転送の話

テレビ東京録画サーバを設置するにあたり、動画ファイルを遠隔地から転送したいわけです。

FTPD+wgetで取得しようと思ったんですが、FTPだとルータによるNAT環境で複数起動しづらいという問題が。

クライアント側もサーバ側もプライベートアドレス持っているので・・。


知らない人のために判りにくい解説。

専門家じゃないので間違ってたらスイマセン(ぇー

FTPでは制御コネクションとデータコネクションの二つのセッションが使われます。

クライアントがサーバに接続するのはHTTPとかと一緒で判りやすいのですが、いざデータを送信するときの挙動が厄介です。


クライアントはサーバに対して「PORT」コマンドというのを発行して、自分に対してデータコネクションを繋いでくれと要求します。

つまり、データ転送用のコネクションはサーバからクライアントに向かってされるのです。

下の図のような感じで、クライアントは「自分のIPアドレスである210.4.5.6のポート1073に接続してくりゃれ」と言います。

「PORT」コマンドの最初の4つがIPアドレスで、残りの二つの数字がポートを表しています。


で、何が問題かというと、サーバがクライアントに接続するときのIPアドレスです。

これはクライアントの自己申請です。

(なんでこうなってるかというと、サーバ間転送とかも出来るようになんですがそれは置いておいて)

クライアントが自分のIPアドレスを正しく把握していればいいですが、、NAT環境(プライベートアドレスを割り当てた状態)だと困ったことになります。

例えばクライアントのプライベートアドレスが「192.167.254.1」だった場合。

クライアントは「PORT」コマンドでこのアドレスをサーバに伝えてしまいます。

これはプライベートアドレスなので当然サーバからクライアントの接続が出来なくなってしまいます。


・・もちろんコレでは困ってしまうので、ルータにはこれを回避する機能が普通ついてます。

FTPコマンドを監視し、「PORT」コマンドを書き換えるのです。

実際やってみると判りますが、クライアントから送信した命令がサーバに届くころには書き換わっています。

以下のような感じ。

上の例だとサーバがポート1073に接続してきますので、ルータはそのポートを自動的にオープンしてくれます。

賢いですね。

めでたしめでたし。


・・・となればいいんですが、ルータが監視してくれるのはポート21だけです。

ポート21は既に別のFTPDで使用していて、他のポートでもう一つ起動したくても出来ないんです。

ルータによってはFTP制御ポートを複数指定できたり、外部ポートと内部ポートを変えて、ポート21のまま複数のFTPサーバを公開できるモノもありますが、今回使うのはどうもその機能が無いみたいでぐにょり。

実例として、ポート5021で起動しているFTPDにプライベートアドレスを持ったマシンからからFFFTPで接続してみると以下のようになります。

(どういう反応になるかはFTPDによって違います)

>PORT 192,168,1,3,4,120

530 PORT command only accepts client IP address (210.253.232.34!=192.168.1.3).

PORTコマンドが受け付けられません.


パッシブモード使えばいいじゃんと思われる聡明な方もいらっしゃると思いますが、結局PORTコマンドがPASVコマンドに変わるだけで、サーバ側もプライベートIPアドレスだとやっぱりダメなんですよ。トホー。

サーバが発行したPASVの応答の内容にプライベートアドレスが含まれてしまうので。

標準ポートでやってればこれまたルータが書き換えてくれますが。

実際にやってる例を載せるとこんな感じになるわけです。

>PASV

227 Entering Passive Mode (192,168,254,30,253,244)

ダウンロードのためにホスト 192.168.254.30 (65012) に接続しています.

接続できません.

FTPDソフトによってはパッシブモード時のIPアドレス指定できるのもありますがやっぱりスッキリしません。


ちなみに、サーバ側は標準ポートで動作していて、クライアント側のルータの設定か性能がアレで、PORTコマンドを解釈しれくれないぃぃって場合にはパッシブモードはとても有効です。


うーん。やっぱり判りづらい説明になった(ぉ

何が言いたいかというと、オリジナルのファイル転送サーバソフトと、ファイル取得エージェントを作成中だという事ですw

必要な機能のみに絞っているので今週中には動くものが出来ると思います。

レジューム対応。4G超えファイル対応←重要

本日のコメント(全11件) [コメントを投稿]
§ へっぽこメイド(仮) (2004年10月21日(Thursday) 23:17)

VPN張ってしまうとかはナシですか?

§ Suika (2004年10月21日(Thursday) 23:27)

相手側が人のウチなのでちょっと難しいです、OSがWin2kProfessionalだし、回線もADSLだし。。

§ Suika (2004年10月22日(Friday) 01:06)

色々手段はあるようですね(笑<br>Windows 2k/XPにあるのはクライアント機能のみなのですよ~。<VPN

§ Suika (2004年10月22日(Friday) 01:15)

なかなか面白いですね。>CGI<br>色んな機会で使えそう。<br>今回の場合、ファイルサイズが数Gになるので小細工が通じるかどうかw<br>SOCKSサーバを立てるという手もありますね。

§ へっぽこメイド(仮) (2004年10月22日(Friday) 01:53)

ああ、もちろんサーバとしてはWindows以外が必要ですね。<br>手元に向かってリモートからコネクションを張らせて、切れたら再接続、とかいうしかけをなんかしといて…って、だんだんめんどくさくなるや。OTL

§ Suika (2004年10月22日(Friday) 08:24)

そうですねw >シンプルイズベストでしょうか。<br>やはり複数人で考えるといろいろなアイデアが出ていいですね~

§ yuki@JAM (2004年10月22日(Friday) 18:37)

あう、BT878なカード持ってるのになかなか見つからないからジャンクなカード買いそうになったよ…(^^;)

§ ひかりん (2004年10月22日(Friday) 20:24)

FreeBSDですとIPv6を使用してラジオ地方局の放送を垂れ流しにした方の事を聴いたことがありますが、テレビだとどうなるかなぁ。FreeBSDだと対応しているチップが少ないので調べずに買うと泣きを見ますね>TVチューナーカード

§ Suika (2004年10月22日(Friday) 21:38)

ストリーミングもやってみたいですねえ・・。回線速度がもう少し早くならないとですね。<br>FreeBSDだと勘で買ってもほぼ動作するのには当たらないでしょうねw

§ 匿名希望 (2004年10月23日(Saturday) 18:38)

SoftEtherでVPNはどうでしょうか?

§ Suika (2004年10月24日(Sunday) 02:19)

昔試用したことがあります。それもよさそうですね~。<br>通信速度はだいぶ制限されてしまうみたいですけど。


最近のコメント

364,000 at 2008.06.14
Copyright (c) Suika KNOnline.NET