幾種建立http tunnel的方法

2021-06-15 21:50:36 字數 3236 閱讀 4884

基本概念不多解釋了,直入主題。gnu http tunnel(

)是乙個開源的http-tunnel專案,包括了tunnel server(hts命令)和tunnel client(htc命令),有(x)nix和windows版本。我們就用它來建立自己的tunnel。

1。靜態tunnel。

http-tunnel是乙個完全透明的通道,直接將你的連線forward給目標服務埠,因此當你連線tunnel的本地偵聽埠時,就相當於直接連線到目標服務埠。例如你要建立一條可以訪問外部pop3伺服器的隧道,可以建立如下連線:

在你自己的機器上執行htc,外部充當tunnel server的機器上的80埠執行hts,htc將資料打包成http請求,通過proxy連線到hts,hts解包後將連線forward給pop3伺服器。命令如下:

在tunnel server機器上:

hts --forward-port pop3server:110 80       

(將pop3server替換成實際的ip)

在本地機器上:

htc --forward-port 8888 --proxy proxyhost:3128 tunnelserver:80 

(將proxyhost和tunnelserver替換成實際的ip)

通過這樣的配置,你可以用outlook或foxmail連線本機的8888埠,就相當於直接連線到pop3伺服器了。

2。動態的tunnel。

上面建立了一條可以訪問pop3服務的隧道,但缺點是只能訪問某乙個指定的pop3伺服器,要訪問其他的伺服器還得按同樣的方法再建立一條隧道,很不方便。既然hts可以將連線forward給pop3伺服器,那讓它forward給乙個socks5服務,不是就可以實現動態的tunnel,可以連線任意服務了嗎?yeah!沒錯!我們建立這樣的連線:

命令就不說了,照第一點改一下就行。這樣就相當於在localhost:8888執行了乙個socks5服務,設定一下你的網路程式(outlook,netant,flashget,qq......),讓他們通過sock5訪問網路,就ok了。

3。利用http proxy的connect支援。

大多數http proxy支援connect命令,但一般只支援connect到外部伺服器的443(https)埠。這是為了允許訪問外部的https服務。由於porxy對於connect的連線是直接**,不做任何分析處理或快取,所以利用connect可以獲得比較快的速度。

由於hts和htc不支援connect連線,我們可以使用另乙個專門支援connect的程式desproxy

來建立乙個tunnel。由於使用connect建立了直接的tcp連線,不需要將資料按http格式打包和解包,所以連tunnel server也不需要了,只需要在你原來執行hts機器上執行乙個socks5就行了,連線如下:

desproxy命令的用法:

desproxy remote_host remote_port proxy_host proxy_port local_port

在這裡remot_host,remote_port就是tunnelserver:443,proxy_host,proxy_port是porxyhost:3128,local_port就是8888。

注意必須把socks5執行在443埠,如果執行在其他埠的話,connect請求會被http proxy拒絕。同樣,我們在localhost:8888得到了乙個可以訪問外部的sock5服務。

4。最簡單,最安全而且快速的方式:利用ssh + connect。

實際上ssh提供了socks5的功能,利用ssh客戶端或putty可以在本地建立乙個socks5服務,而且putty也直接支援http proxy,最大的好處是ssh的資料連線是加密的,保證了資料的安全。使用ssh的連線如下:

putty(或plink) ------------> http  proxy  ---------------------> ssh server

(localhost:8888)                 (proxyhost:3128)                     (tunnelserver:443->22)

首先我們要讓ssh server在443埠偵聽,ssh預設埠是22,我們可以修改ssh的配置,或用iptables將443埠重定向到22埠,服務端的配置就ok了。然後在putty建立乙個new session,填上ssh伺服器的ip和port;在"connection->proxy"頁,填上http proxy的ip和port;在"ssh -> tunnels"頁,"source port"填本地的埠,在這裡我們用8888",destination"選"dynamic",按"add"將這個forward port加上,就ok了。配置完成後,用putty登陸上ssh,用netstat -an可以看到putty已經在localhost:8888偵聽了,這是乙個socks5服務,下面改怎麼用,就不用我羅嗦了吧:-)。另外在"ssh"頁,可以根據要求選擇"protocol options"。儲存session後,也可以用命令列的plink命令來利用這個session:

plink -load session_name           (session_name就是session儲存的名稱)

登陸後效果也一樣。 

幾種建立格式

1 索引 index 建立格式 create index 索引名 on 表名.字段 刪除格式 drop index 索引名 on 表名 2 同義詞 synonym a 私有同義詞 建立格式 create synonym 同義詞 for 表名 刪除格式 drop synonym 同義詞 b 公有同義詞...

建立物件的幾種方式

原文章 var person new object person.name kevin person.age 31 alert person.name alert person name alert person.name alert person 5 返回帶有屬性和方法的person物件 func...

建立Windows Service的幾種方式

最近由於工作需要,寫了一些windows服務程式,有一些經驗,我現在總結寫出來。目前我知道的建立建立windows服務有3種方式 a.利用.net框架類servicebase b.利用元件topshelf c.利用小工具instsrv和srvany 下面我利用這3種方式,分別做乙個windows服務...