2005 年 12 月 19 日 10 時 39 分

FTP プロキシ


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


パケットをキャプチャして書き換えるのは、
ソフトウェアベースでは無理があるので、
FTP サーバプロキシを作成することにした。

もちろん、全部実装するような無駄なことはしたくないので、
基本的には全てそのまま、元の FTP サーバに転送する。
PASV を受けた場合のみ、ルータの持つ UPnP を利用して、
動的に NAPT テーブルを書き換えて、WAN 側 IP を返す。

C <=> P <=> S (クライアント、プロキシ、サーバ)

S から 227 Entering Passive Mode (192,168,0,77,5,55) を
受けた場合、S が待機するのはポート 1335(5 << 8 | 55)
P では UPnP を使いこれを WAN 側の適当なポートに割り当て、
C には 227 Entering Passive Mode (<WAN IP/Port>) を返す。

とはいうものの、ソケットの待機や最低限のコマンドの解析、
そして FTP の複雑さもあるので、結構いい練習になるかも。
幸い、家のルータは、UPnP NAT Traversal に対応していた。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.