Modified: 24 May 2003
ファイヤーウオールで閉じられているサービスを、許可されているhttpのプロトコルに包むことで通過させることできるソフトです。
通過させるために、httpの袋に入れるソフトである"htc"と、通過してきたhttpの袋から中身を取り出すソフトである"hts"の2つのソフトの連係動作で実現できます。
ダウンロードからインストール (12 October 2002)
テストしてみる (12 October 2002)
Windowsから使ってみる (24 May 2003)
ソースをダウンロードする
以下からダウンロードできます。
http://www.nocrew.org/software/httptunnel.html
上記ページの"Latest Release"の"Stable"から、"httptunnel-3.0.5.tar.gz"をダウンロードしました。(2002年10月12日)
Windows版は、"Eduardo Cobian have binaries for WIN32"というのがありました。クリックすると、"Gnu_Http_Tunnel_3_3.zip"がダウンロードできました。
Makeしてインストールする
解凍してMakeします。
$ tar zxvf httptunnel-3.0.5.tar.gz
$ cd httptunnel-3.0.5
$ ./configure
$ makeMakeでインストールします。
$ su
Password: ******
# make install以上で、インストールの終了です。
2つのコマンドがインストールされました。サーバー側が"hts"、クライアント側が"htc"です。
サーバー側の設定
受け口であるポート"8888"で接続されたら、自分のPCのポート"22"に接続するという設定をします。
ポート"22"は、sshサービスのポートです。
$ hts -F localhost:22 8888 プロセスが起動していることを確認します。
$ ps ax
:
$ 2812 ? S 0:00 hts -F localhost:22 8888
:
$
"localhost"でなく、自分のIPアドレスを指定しても、うまく接続できそうですが、なぜか接続が拒否されます。
クライアント側の設定
サーバーの接続するために使う自分のPCのポート("8022")を決め、接続先のサーバーの名前(または、IPアドレス)とポート番号を指定します。
$ htc -F 8022 192.168.0.74:8888 "8022"は、適当に決めた接続元のポートアドレスで、サーバーへの入り口となります。
"192.168.0.74"は、サーバーのIPアドレスです。"8888"は、サーバーのポート番号です。
動作確認の前の理屈
クライアント("localhost")のポート"8022"に接続すると、その接続は、"htc"の設定に従い、"192.168.0.74"の"8888"に接続されます。
サーバー("192.168.0.74")は、ポート"8888"への接続要求を受けると、"hts"の設定に従い、ポート"22"に接続されます。
この接続や転送には、httpが使われます。
実際に試して見ます。
$ ssh -p 8022 localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 86:c9:a3:bc:d8:eb:50:7e:a6:ba:2d:76:92:1d:91:cd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
tomo@localhost's password: ******
Last login: Mon Oct 14 13:31:14 2002 from 192.168.0.74
$自分のPCに接続するように接続しますが、ポートフォワードの機能により、サーバーに接続されます。
接続された結果、"localhost"の"8022"に接続すると、サーバー("192.168.0.74")の"8888"に接続し、サーバー側の設定で、同じサーバーのポート"22"に接続されたわけです。
素朴な疑問
サーバーの受け口であるポート"8888"に、以下のコマンドで直接接続できそうな気がしますが、実際には接続できません。
"ssh -p 8888 192.168.0.74"
実際のパケットは、httpを使って転送されて、htsがポート80のパケットを8888を経由して、22に接続しています。
httpで転送されない上記コマンドでは接続できません。
ダウンロード
以下からダウンロードできます。
http://www.nocrew.org/software/httptunnel.html
Windows版は、"Eduardo Cobian have binaries for WIN32"というのがありました。クリックすると、"Gnu_Http_Tunnel_3_3.zip"がダウンロードできました。
Linuxサーバー側の設定
受け口であるポート"8888"で接続されたら、自分のPCのポート"25"に接続するという設定をします。
ポート"25"は、SMTPサービスのポートです。
$ hts -F localhost:25 8888
Windowsクライアント側の設定
サーバーの接続するために使う自分のPCのポート("8022")を決め、接続先のサーバーの名前(または、IPアドレス)とポート番号を指定します。
F:\tools\Gnu Http-Tunnel 3.3> htc -F 8025 192.168.0.34:8888
F:\tools\Gnu Http-Tunnel 3.3>"8025"は、接続元のポートアドレスで、サーバーへの入り口となります。
"192.168.0.34"は、SMTPサーバーのIPアドレスです。
動作確認
クライアント("localhost")のポート"8025"に接続すると、その接続は、"htc"の設定に従い、"192.168.0.34"の"8888"に接続されます。
サーバー("192.168.0.34")は、ポート"8888"への接続要求を受けると、"hts"の設定に従い、ポート"25"に接続されます。
この接続や転送には、httpが使われます。