Entering Passive Mode

カテゴリ 'C++, C' の記事
< 1 2 3 4 5 6 >

FTP プロキシ

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

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

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

通信テスト

原因が分かったところで、テストをしてみた。
FTP は行指向の通信なので、TELNET などでテストする。
FFFTP などを使ってもいいかも。

LAN 内 FTP サーバをルータの静的 NAPT 機能を利用して、
WAN 側に公開する。そして外から接続する。

> telnet <server> <port>
220 Microsoft FTP Service
USER <user>
331 Password required for <user>.
PASS <password>
230 User <user> logged in.
PASV
227 Entering Passive Mode (192,168,0,77,5,55)

FTP が通らない理由

昨日の続き。

ルータを交換するのは無理そうだ。
FTP が単純な NAPT で通らない理由は、
通信内容に IP アドレスとポート番号が含まれるから。

ネットワークは層の概念がある。郵便物に例えてみよう。
FTP での通信内容を便箋に書いて相手に送るとき、
下位層は「封筒」というヘッダをつけてカプセル化する。
封筒には名前や住所が書いてある。IP/Port やね。

FTP の外部公開

LAN 内サーバを外部に公開する場合、
対応ゲートウェイで静的 NAPT を仕込むのが一般的。

さて自分の自宅でこれをやろうとした。
HTTP/FTP を公開しようと思ったが、
うちは ADSL でルータがレンタル品。
ついてる機能は、NAPT のみ。
要は上位層のプロトコルは感知しない。

HTTP はブラックボックスとして問題ないんだけど、
FTP はだめだ。PORT や PASV が通らない。
さてどうしよう。金はかけたくない。

< 1 2 3 4 5 6 >
このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS