zoukankan      html  css  js  c++  java
  • Http Tunnel 小记

      HTTP隧道是一种通信技术,通过该技术,使用不同的网络协议,使用HTTP协议,网络协议问题通常属于TCP / IP的协议族的封装。HTTP协议,因此,作为一个通道,被传输的网络协议进行通信时使用的包装。HTTP流,其隐蔽通道被称为一个HTTP隧道。HTTP隧道软件由客户端-服务器的HTTP隧道与现有的应用软件集成的应用程序,允许它们被用在条件受限的网络连接,包括防火墙的网络。

      HTTP隧道机制:希望与远程主机进行通信的应用程序打开一个HTTP连接到一个中介服务器,充当通信中继和远程主机。然后,应用程序与中介服务器使用HTTP请求,这些请求内封装的实际通信。中介服务器解开前的实际数据转发到远程主机,从远程主机接收数据时,把数据包裹在HTTP协议中做为HTTP响应的一部分发送至应用程​​序。

      简单说,当在一个受防火墙的端口屏蔽、Url拦截或Dns污染等的网络环境下,通过Http Tunnel Client把数据包通过Http 80端口发送至Http Tunnel Server代理服务器,代理服务器再将这些数据包转发至远程主机。

    主要常用场景:

        1. QQ、MSN等IM软件被封;

        2. 迅雷、电骡等P2P软件被封;

        3. mstsc远程桌面、FTP客户端等网络通讯受阻;

        4. 部分网站被封;

        5. 网络环境统一走代理服务器和Dns服务器;

        ......

    https://sites.google.com/site/luizluca/port-forward-over-http 介绍了HTTP转包的思路;

    BarbaTunnel 实现了Http/Udp Tunnel的开源项目;

    GNU HTTPtunnel 跨平台,但不支持multiple tunnels;

    飞檐走壁 实现了Http Tunnel的国产开源项目,并支持multiple tunnels和socks4/4a/5以及Http代理协议的包装;

     

      这里主要介绍飞檐走壁的使用方式。首先是点击这里安装,安装完毕后运行界面如下图:

    默认开启了socks4/4a/5和Http代理协议的包装(这里的socks4包含socks4a);右键通知区域图标可查看菜单,菜单项有“配置”、“启动Proxifier”、“我的设备等”。点击“配置”打开“CloudAgent.config”(可用记事本打开)如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <!--开启服务端节点-->
        <add key="AsServerNode" value="false"/>
        
        <!--开启加密通讯-->
        <add key="EnableSsl" value="false"/>
        
        <!--验证凭据 格式:“用户名:密码”-->
        <add key="Credential" value="rocky:e89e4780c76ce101f1a32a7d87e9489d"/>
        
        <!--隧道列表 格式:“本地代理端口#代理协议或转发端点,\代表反向连接”-->
        <add key="TunnelList" value="1080#Socks4,
             1081#Socks5,
             1082#Http,
             --1800#121.199.43.145:3389,
             6379#121.199.43.145:6379,
             6380#121.199.43.145:6380"/>
      </appSettings>
    </configuration>

    TunnelList的值由半角,分割,每项#号左边代表本地监听的端口,#号右边可为3种方式:
    1. 远程终结点,即 IP + 端口;
        格式:1800#121.199.43.145:3389
        这种方式直接转发数据包,如mstsc、redis这种远程终结点已知的应用;

    2. “Socks4, Socks5, Http” 这3个枚举值之一,枚举值区分大小写;socks5支持服务端Dns解析和Udp协议,因此应优先选择socks5代理。
        格式:1081#Socks5
        这种方式会在本地对应代理协议的方式监听,如FTP, qq这种远程终结点未知的应用;一般网络应用程序都有设置代理的选项如下图QQ: 
    点击OK后即设置完毕。

    3. 方式1或方式2 + "\设备ID",其中设备ID必须是相同帐号下的客户端,并且设备ID是由服务端动态分配;
        格式:1800#121.199.43.145:3389\F7B4B4DC-B427-4A90-9210-5149309FCDD9 或 1081#Socks5\F7B4B4DC-B427-4A90-9210-5149309FCDD9
        这种方式会反向连接设备ID上的网络应用;如家里的客户端连接公司的客户端设备上的mstsc;

     

      在使用代理服务器上网的环境中,因为部分软件不支持或不能很好地支持代理服务器导致出现无法正常使用的问题,Proxifier可以很好地解决这个问题。右键图标菜单“启动Proxifier”,Proxifier运行后会在系统任务栏中建立一个图标,反应通过代理的数据情况,至此基本的Proxifier安装和设置已经完成,不必再在软件中另行设置代理服务器信息,轻松上网。

    image_thumb19

    自动代理很方便,但也会遇到一些不需要通过代理的网络访问受到影响而无法使用的问题,比如一些内网的应用,Proxifier提供代理规则设置功能,通过设置不但可以自动识别不需要走代理的网络访问,还支持不同应用走不同代理服务器的功能(本教程中不涉及,可自行摸索)。

    点击菜单栏中的“Profile”-“Proxification Rules”

    image_thumb29

    软件中预置的规则如下图,蓝色规则表示符合“Target Hosts”的应用采取“Direct”直连的方式通讯。

    第二天规则表示默认情况下所有的应用均通过我们的“默认代理服务器”。

    此处我们介绍一下如何增加“直连”的应用程序设置,双击蓝色规则。

    image_thumb32

    在箭头的输入框中输入走“直连”的主机地址,使用分号进行分隔,支持IP、域名且支持通配符。

    设置完毕后点击“OK”按钮确认生效。

    image_thumb34

     

    参考文献:
      http://www.cnblogs.com/mandrake/archive/2012/05/24/2516871.html Proxifier设置

  • 相关阅读:
    卧槽!缓存的问题太多了(雪崩、击穿、穿透…)一个个解决!
    Java 命名规范(非常全面,可以收藏)
    一次接口超时排查,花费了我两个星期。。
    LiveGBS和海康威视
    SQLite文件存储和读取
    Vue页面刷新原理:Cesium刷新机制
    MBtiles格式数据
    gitee:403错误
    uniapp是什么?
    HBuilderx怎么运行代码
  • 原文地址:https://www.cnblogs.com/Googler/p/3109402.html
Copyright © 2011-2022 走看看