telnet があれば何でもできる! と言ってみたかっただけですが。
ということで、telnet2本使いによるFTPファイル転送を実際にやってみる。
実験にはIISのFTPサーバを使い、サーバ間のファイル転送ができるかを確かめた。
突然つまづく、最近はデフォルトセキュア(寄り)なのか…
リハーサルとして一通り試していたら、PORTコマンドの所でどうしてもつまづく。
パケットキャプチャしたら、PORT発行後もIPによる通信すら しに行っていない様子。IISの設定を見直すためにMSへ。
- Microsoft TechNet : サーバーからサーバーへの FTP 転送
http://technet2.microsoft.com/WindowsServer/ja/library/f5c810d2-a0cd-44a9-ba14-0ed5c09264bb1041.mspx?mfr=true
なるほどそうか。最近はそんなことやらないからか、単に脆弱性の脅威からか、デフォルト設定ではできない。レジストリをいじってFTPサービスを再起動しないといけなかった。
レジストリ変更箇所は下記。
ファイル受信側 (PASV) | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSFTPSVC\Parameters\EnablePasvConnFrom3rdIP=1 ※第3者からのデータコネクションを許可する |
ファイル送信側 (PORT) | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSFTPSVC\Parameters\EnableDataConnTo3rdIP=1 ※第3者あてへのPORTコネクション接続要求を受け付ける。 |
これで問題はなかろう、よそへのPORTコマンドもちゃんと受け付けてくれる。
そして実験へ
test.txtと言うファイルを転送してみる。
ファイル受信側 | ファイル送信側 | メモ |
---|---|---|
USER hogehoge PASS ***** 230 | USER hogehoge PASS ***** 230 | ユーザ認証してログインOK |
PASV 227 Entering Passive Mode (xxx,xxx,xxx,xxx,xx,xx). | 待ち受けポートを決定する。 xxxはIPアドレスと待ち受けポート | |
PORT xxx,xxx,xxx,xxx,xx,xx 200 PORT command successful. | データ転送用のセッションが確立 | |
stor test.txt 125 Data connection already open; Transfer starting. | STORでローカルに空ファイル"test.txt"作成、 データの受け入れ準備 | |
125 Data connection already open; Transfer starting. 226 Transfer complete. | retr test.txt 150 Opening ASCII mode data connection for test.txt(23 bytes). 226 Transfer complete. | RETRで "test.txt"ファイルを転送、 受信側は待ち構えていた"test.txt" にASCIIデータとしてデータを送り込んで完了 |
OK、うまく行った。
次はどうしよう。
定番の「telnet があれば メールの送信ができる」や、「telnet があれば HTTPコンテンツを受け取れる」、あたりでやっておきたい。