汇讯WiseUC--连接人与业务,以即时通讯为基础的应用集成平台

http tunnel 原理 及 穿透防火墻方法

2012年01月13日    點擊數: 31771    字體:     

http tunnel 原理穿透防火墻方法-1

tunnel很多文章解釋為"隧道", "通道".

這里所謂的tunnel 是指一種繞過防火墻端口屏蔽的通訊方式, 可以有效地解決防火墻對端口的屏蔽作用.

原理:
防火墻兩端的數據包封裝在防火墻所允許通過的數據包類型或是端口上,然后穿過防火墻與對端通訊,當封裝的數據包到達目的地時,再將數據包還原,并將還原后的數據包交送到相應的服務進程上。 

舉例如下:
A 主機系統在防火墻之后,受防火墻保護。防火墻配置的訪問控制原則是只允許80端口的數據進出,屏蔽了其他的所有端口.  B主機系統在防火墻之外,是開放的。現在假設需要從A 系統Telnet到B系統上去,怎么辦?
使用正常的Telnet肯定是不可能了,但我們知道可用的只有80端口,那么這個時候使用http Tunnel,就是一個好的辦法。思路如下:  在A 機器上運行一個Tunnel 的Client端,讓它偵聽本機的一個不被使用的任意指定端口(Port>1024 and port < 65535),如1234. 同時將來自1234端口上的數據導向到遠端(B機)的80端口上(注意,是80端口,防火墻允許通過),然后在B機上運行一個tunnel Server,同樣在80端口上監聽,然后把80 端口上接收到的數據(數據由tunnel client傳來)轉到本機的Telnet 服務端口23,這樣就ok了。

根據剛才的設置, 數據流程大概是:

[telnet.exe:任意端口] ---> [tunnel client.exe:1234] ---->[Firewall]---->[tunnel server.exe:80]---->[telnet Server.exe:23]

說明:
telnet.exe 和tunnel client.exe 是在同一個機器上的.
tunnel server.exe 和telnet Server.exe 是在同一臺機器上的.

按照流程圖:
telnet.exe:           把發送的數據轉向到tunnel client.exe 的1234 端口
tunnel client.exe     把數據發送給tunnuel server.exe:80 ( 這次連接外網機器的80端口了, 防火墻應該是沒有異議吧)
Friewall              只允許80 端口的數據進出.
tunnel server.exe     負責把接收到的數據轉發給telnet 的服務進程, 并可以接收telnet 服務進程的數據
telnet Server.exe     把要發送的數據轉給tunnel server.exe,由它把數據經80 端口發給tunnel client.exe.

HTTP Tunnel原理穿透防火墻方法-2

這篇文章提供一個通過代理服務器建立TCP 連接來繞過防火墻的方法.
通常情況下防火墻限制了很多端口的連接,但是HTTP 的連接還是允許的(否則誰也上不了網)。


協議指定了一個  CONNECT 請求方法. Client 可以使用這個方法通知Proxy Server 連接指定的服務器IP和端口號. Proxy Server
在接收到這個請求后與指定的服務器IP和端口號建立連接,如果連接失敗會通知Client 并關閉連接,成功則給Client 發送
"Coonection Established" 并保持連接. 在與Client 和Real Server 建立連接后,Proxy Server 就不關心數據的內容了,此時就表現為tunnel 了.

[Client]----[FireWall]------>[Proxy Server:80]------->[Real Server]
   |            |               |                           |  
  Src   只允許80端口數據通過   數據轉發                       Dest


相關協議:

在Client一端, 我們只對CONNECT 方法感興趣.  在Client 和ProxyServer 建立連接后, Client 必須發送CONNECT 請求.
格式如下:

CONNECT :


...


Proxy Server 處理來自Client 的請求, 然后和destionation_address:destination_port 建立連接.


proxy server 給Client 返回HTTP 回應.
格式如下:



...

如果Proxy Server 分析Client 請求格式有誤或者與destionation_address:destination_port 連接失敗,都會關閉連接.
如果成功則可以轉發數據, 作為tunnel 使用.

 

 

 

 

HTTP隧道(HTTP代理Socket客戶)

 

HTTP 隧道(HTTP代理Socket客戶)

環境: VC6

mr ans


※HTTP 隧道※
--------
HTTP是基于文本的通過瀏覽器檢索網頁的協議。大多數情況下你躲在代理服務器的后面,通過LAN接入互聯網。在IE的Connection Option中,你給出你的LAN的設置。這個代理服務器運行著基于文本的協議,你從它那里可以得到外界的網絡HTTP相關的數據。是的,用HTTP通過它上面的小的望孔可以連接到外部世界,并用二進制協議得到你想要的數據,或者甚至是你的協議。它通過HTTP。

字串8

※HTTPS 解釋※
---------
在HTTPS中,數據以一種安全的方式從瀏覽器到服務器和從服務器到瀏覽器。它是二進制的協議;當他穿過代理時,代理不知道是什么。代理僅僅允許二進制流打開,讓服務器和客戶兩者之間交換數據。代理服務器認為我們在進行某個安全的會話。

字串9


對于HTTPS, 你的瀏覽器連接到代理服務器,并送出一個命令字串9

CONNECT neurospeech.com:443 HTTP/1.0
HOST neurospeech.com:443
   【...如果需要,HTTP頭部的其它行以結束】
    // 最后的空行mr ans


接下來,代理服務器把它作為某個HTTP安全會話,打開一個到需求服務器和端口的二進制流。如果連接確立,代理服務器返回如下回應:m r a n s


HTTP/1.0 200 Connection Established
         【...忽略所有HTTP頭部的其它行以結束,】
    // 最后的空行

字串7

現在,瀏覽器連接到了終端服務器,可以用二進制和安全的方式交換數據了。字串8


※怎樣做這個※
-------------
現在是你的程序任務去愚弄代理服務器,行為如IE一樣進行Secure HTTP。mr ans

1. Connect to Proxy Server first.
2. Issue CONNECT Host:Port HTTP/1.1.
3. Issue .
4. Wait for a line of response. If it contains HTTP/1.X 200 , the connection is successful.
5. Read further lines of response until you receive an empty line.
6. Now, you are connected to outside world through a proxy. Do any data exchange you want.

mrans


示例源代碼www.mrans.com

  // You need to connect to mail.yahoo.com on port 25
  // Through a proxy on 192.0.1.1, on HTTP Proxy 4480
  // CSocketClient is Socket wrapping class
  // When you apply operator << on CString, it writes CString
  // To Socket ending with CRLF
  // When you apply operator >> on CString, it receives
  // a Line of response from socket until CRLF mrans


  try
  {
    CString Request,Response;
    CSocketClient Client;

字串8

    Client.ConnectTo("192.0.1.1",4480);

字串8

    // Issue CONNECT Command
    Request = "CONNECT mail.yahoo.com:25 HTTP/1.0";
    Client<

字串6

    // Issue empty line
    Request = "";
    Client<

    // Receive Response From Server
    Client>>Response;

m r a n s

    // Ignore HTTP Version

字串7

    int n = Response.Find(' ');
    Response = Response.Mid(n+1); mr ans

    // Http Response Must be 200 only
    if(Response.Left(3)!="200")
    {
      // Connection refused from HTTP Proxy Server
      AfxMessageBox(Response);
    }

字串7


    // Read Response Lines until you receive an empty line.
    do
    {
      Client>>Response;
      if (Response.IsEmpty())
        break;
    }while (true);

字串6


    // Coooooooool.... Now connected to mail.yahoo.com:25
    // Do further SMTP Protocol here.. mrans.com

  }
  catch (CSocketException * pE)
  {
    pE->ReportError();
  }

mrans.com

  字串6

※庫源碼※
-------------
文件Dns.h包含所有所有DNS相關的源代碼。它利用了其它的庫,如SocketEx.h, SocketClient.h, 和NeuroBuffer.h 字串6


※CSocketEx※
-------------

字串6

作為一個Socket功能的包裹(wapper)類。(如果你不是確切知道CSocket怎樣工作的,它是非常笨重和不可信的)所有的函數根CSocket同名。你可以直接應用這個類

字串8

※CSocketClient※
-----------------

mrans.com

派生自CSocketEx,并且根據詳細的Winsock錯誤拋出適當地例外(exceptions). 為了方便的發送和接收,它定義了兩個操作符, >> 和<<;如果需要它也交換網絡序為主機序和主機序為網絡序。字串8


※CHttpProxySocketClient※
----------------- www.mrans.com

派生自CSocketClient, 你可以調用SetProxySettings(ProxyServer, Port) 方法和做代理設置。接下來,你可以連接到你想要的主機和端口。ConnnectTo 方法被覆蓋,它自動的實現了HTTP代理協議并無爭論的給你了一個連接。

字串6

 

字串8

※怎樣利用CHttpProxySocketClient※
---------------------------------
  // e.g. You need to connect to mail.yahoo.com on port 25
  // Through a proxy on 192.0.1.1, on HTTP Proxy 4480
  // CSocketClient is Socket wrapping class
  // When you apply operator << on CString, it writes CString
  // To Socket ending with CRLF
  // When you apply operator >> on CString, it receives
  // Line of response from socket until CRLF
  try
  {
    CHttpProxySocketClient Client;

字串9

    Client.SetProxySettings("192.0.1.1",1979);

m r a n s

    // Connect to server mail.yahoo.com on port 25
    Client.ConnectTo("mail.yahoo.com",25);

m r a n s

    // You now have access to mail.yahoo.com on port 25
    // If you do not call SetProxySettings, then
    // you are connected to mail.yahoo.com directly if
    // you have direct access, so always use
    // CHttpProxySocketClient and no need to do any
    // extra coding. 字串8

  }
  catch(CSocketException * pE) {
    pE->ReportError();
  } 字串7

 

 

 

 

 

 

 

 

 

 

 
100% ( 4 )
0% ( 0 )
 

典型案例

  • 江蘇新寧現代物流股份有限

    江蘇新寧現代物流股份有限公司(以下簡稱“公司”),前身是昆山新寧公共保稅倉儲有限公司,公司始建于1997年,2000年4...

  • 北京中坤投資集團有限公司

    北京中坤投資集團有限公司成立于1995年,目前擁有資產高出800多億人民幣,歷經十余年穩健發展,現已成長為在地產、度假產...

  • QQ客服: 點擊這里給我發消息
  • 用戶Q群:87444984
Copyright ? 2007-2021 匯訊Wiseuc. 粵ICP備10013541號    
展開
主站蜘蛛池模板: 挥发性有机物,VOCs在线监测系统,深圳市恒富盛科技有限公司 | 免费照片视频制作软件_照片做成视频的软件_制作照片视频的软件 - 万彩影像大师官网 | 膨胀节_波纹膨胀节_非金属膨胀节_波纹管补偿器_膨胀节厂家-江苏苏创管业科技有限公司 | 西安泰富西玛电机有限公司总部-电机-高压电机-西玛电机-西安西玛电机-泰富西玛电机-西安电机厂-西玛电机销售 | 木工圆锯片,进口锯片厂家,合金锯片生产厂家,木工合金锯片,BAK(百恪)刀具有限公司 | 混凝土布料机,隧道布料机,衬砌台车布料装置 - 河北聚力智能装备有限公司 | 文化艺术网-专注文化,服务艺术 温州网络公司_网站建设_网络营销策划_阿里淘宝店铺服务-温州聚欣网络科技有限公司 | 生活污水处理设备-地埋式污水处理设备厂家-山东梦之洁水处理设备有限公司 | 强德防盗门-防盗门厂家-中国防盗门十大品牌-强德门业 - 浙江臻品工贸有限公司 | 陕西硅酸钙板厂家_西安水泥压力板-陕西凯盛达建材科技有限公司 | 金酱酒_金酱酒代理加盟招商_OEM贴牌企业定制! – 金酱酒代理加盟!茅台镇较早的酿酒烧坊,年产优质酱香白酒5000余吨,仁怀市十强白酒企业,主营主品:金酱酒、金酱陈香酒、酱香老酒等系列品牌产品 | 弯箍机_钢筋弯箍机_全自动钢筋弯箍机_数控弯箍机-建科智能装备制造(天津)股份有限公司 | 破碎机锤头_知名破碎机锤头厂家-巩义东辰| 硬度计,里氏硬度计,布氏硬度计,高强螺栓检测仪,平板导热仪,专业无损检测仪器商-北京时代新天测控技术有限公司-北京时代新天测控技术有限公司 | 自恢复保险丝_贴片保险丝_插件保险丝_力特保险丝_力特经销商_SMD贴片保险丝_一次性保险丝厂家—深圳市集电通实业有限公司 | 耐磨工业软管,PTFE耐腐蚀软管,耐磨喷砂胶管,超耐磨软管厂家,漯河利通液压管利通科技-耐磨工业软管,PTFE耐腐蚀软管,耐磨喷砂胶管,超耐磨软管厂家,漯河利通液压管利通科技 | 锌钢护栏,铁艺护栏,围墙护栏,锌钢围墙护栏,铁艺围墙护栏-互润金属丝网厂 | 卷帘门,防火卷帘,快速门,硬质快速门,提升门,伸缩门,堆积门,车库门维修-烟台捷曼门业有限公司 | 装修公司-吉诚装饰公司官网| 全屋定制超市_全屋定制加盟_星空梵高全屋定制招商 | 液压提升设备,液压顶升装置,钢内筒提升设备,储罐液压顶升_沧州鼎恒液压机械制造有限公司 | 转轴测试机-按键寿命测试机-连接器插拔力试验机-深圳市丹荣检测 转盘萃取塔,DMF回收塔生产厂家-无锡弘鼎华化工设备有限公司 | 中国气象数据_天气数据接口_天气实况api-气象大数据平台 | 室内去除甲醛检测治理十大品牌_去除甲醛公司加盟-优吸环保科技有限公司集团总部官网 | 企业头条—优府网企业自媒体| 免费的PPT幻灯片演示制作软件,动画视频及课件制作软件 - Focusky万彩演示大师官网 | 上海便携式液体_日本理音液体_HACH液体颗粒计数器,metone尘埃粒子计数器-上海翰森科学仪器有限公司 | 苏州妙凯电子有限公司-供应军工电源芯片|线性恒流IC|开关电源IC|LED驱动芯片|MOS管|IPM|IGBT|MCU开发|电源模块 | 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 石家庄团建公司|石家庄拓展训练|石家庄拓展培训|石家庄公司团建|石家庄拓展公司-石家庄启聚团建公司 | 桥梁支座更换_桥梁检测车租赁_高空作业车出租_支座更换_伸缩缝安装_隧道防水_养护加固_维修_出租_衡水庆兴桥梁养护工程有限公司 桥梁养护|桥梁维修加固|隧道裂缝修补|支座更换|管道堵水气囊|衡水众拓路桥养护有限公司 | 惠声电子、广州市惠声电子科技有限公司、VBS、VBS惠声电子、VBS公共广播生产厂家、VBS广播功放生产厂家、VBS会议系统设备批发、VBSIP网络对讲系统厂家、VBS会议系统厂家、VBS智能中控厂家、VBS专业扩声厂家 | 济宁市兴大工程机械有限公司 | 曙海培训-ZEMAX培训射频培训无线电培训GMS培训EMC培训电磁兼容性培训Maxwell培训欧姆龙培训procast培训可靠性培训光学培训工业机器人培训NI培训Linux培训5G培训Hadoop培训CFD培训 | 锂电池破碎生产线|大型电池粉碎机|锂电池分离设备|电池破碎打粉设备-河南鑫恒岩重工科技有限公司 | 自动隔油提升设备,消防稳压一体设备,苏州不锈钢消防水箱,污水提升设备厂家,无负压变频供水设备厂家-苏州脉泉供水设备有限公司 | 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 云南打砂机_昆明制砂机_云南砂石生产线_昆明洗砂机_昆明除尘设备_云南昆明滇重矿山机械设备有限公司 | 新乡市大成数控机械有限公司 | 郑州冷却塔_河南冷却塔-河南金创制冷设备有限公司 | 青岛网站建设_网站制作_品牌设计_网站设计_圭谷设计 |