カスタム検索
tomo.gif (1144 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)To previous pageTo home pageMailing to me

HTTP Tunnelの実験と話題

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
$ make

Makeでインストールします。

$ 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で転送されない上記コマンドでは接続できません。


 Windowsから使ってみる 

ダウンロード

以下からダウンロードできます。

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が使われます。


To previous pageTo home pageMailing to meJump to Top of pageline.gif (927 ツバツイツト)tomo.gif (1144 ツバツイツト)
カスタム検索


Tweet