你是否遇到过以下这些情况:
hosts
访问
总的来说,就是因为不同的开发、运维环境差异导致的跨网络访问,会影响到我们日常的开发、调试工作,而turbo-tunnel就是为了解决这一问题而诞生的。
HTTPS代理是最常见的代理类型,多数在内网中使用,浏览器等应用可以直接用它来访问https的网站,但一般也可以访问其它任意类型的TCP服务,如:FTP、SSH、VNC等。
SSH隧道是一种常见的跨网络访问方式,一般以跳板机的形式提供。用户通过端口映射的方式访问目标网络区域里的服务。
Websocket代理不是一种标准的代理协议,因此,不同实现的协议会有一些差别,难以做到兼容。但这种方式最大的优势是:可以充分利用Web较好的访问连通性,从而实现在更多场景下的跨网络访问。同时,该协议是一种类似于TCP的流式协议,可以做到全双工通信,避免了HTTP本身短连接带来的通信实时性不高问题。
另一方面,由于并非标准的代理协议,安全检查机制一般很难判断这是一个正常的Websocket服务,还是一个代理服务。通过与Nginx以及HTTPS的结合,可以进一步提升安全性,降低被检测出来的风险。
其它常见的代理协议还有Socks4
、Socks5
等,但使用上不及HTTPS广泛。
嵌套访问是一种很常见的使用场景,例如:在公司内需要先通过HTTPS访问外网,然后再通过公网的一台SSH跳板机来访问真正的目标服务,甚至有可能还要多次穿越SSH隧道。在不借助特定工具的情况下,这种场景一般比较难以支持,就算能够支持也比较复杂。
支持嵌套访问的原理是:建立每一层的代理连接后,都会告诉它下一跳代理的地址,这样会建立一个请求链,最终将请求发送到真正的目标服务。
turbo-tunnel目前支持将HTTPS
、SSH
、Websocket
、SOCKS4
等代理或隧道,进行任意层级或顺序的组合,从而达到支持嵌套访问的目的。
将配置存储到文件,可以避免因进程退出或系统重启导致的配置丢失问题,而且在配置内容较多时,可以有效地管理这些配置,避免混乱。如果需要将配置迁移到另一台机器,也只需要将配置文件拷贝到另一台机器即可。
turbo-tunnel使用yaml
格式来管理配置,具体使用方式可以参考文档。
在多个代理并存的情况下,必然会出现不同目标服务使用不同代理的需求。这种情况就需要进行路由的管理,这和Proxifier
中的规则配置是一致的。
turbo-tunnel通过在配置文件中配置路由规则,允许用户根据目标服务的域名、IP、端口等信息进行路由管理,并且可以设置规则的优先级。
turbo-tunnel可以在本地建立一个统一的代理服务(推荐使用http/https代理),自动将接收到请求进行路由分发。用户可以使用以下一些方式来使用这个代理服务:
http_proxy
或https_proxy
环境变量,很多命令行工具,如:curl
,会读取这个环境变量并通过代理访问。
全局透明代理
,应用程序不用再单独设置了。
proxychains
,这样不会影响其它命令,较为灵活。
turbo-tunnel是一款为简化复杂场景下跨网络访问的工具,提供了多种代理/隧道协议的支持,相信它能为你的工作带来帮助。
详细文档地址:https://ttun.top/。
Github项目地址:https://github.com/drunkdream/turbo-tunnel。