NodePass - 轻量高效 TCP/TLS 隧道工具

uid106 · 3 天前 · 1752 次点击

NodePass

NodePass 是一款基于 Go 语言开发的开源 TCP 隧道工具,适用于在复杂网络环境下实现数据传输。项目设计上将控制通道和数据通道分离,控制通道使用未加密的 TCP 连接,而数据通道支持三种 TLS 模式(无加密、自签证书、定制证书),以满足不同的安全要求。

NodePass CLI

主要功能与特点

  • 双模式架构

    • 服务器模式:在指定地址上监听控制连接,同时在目标地址上接受 TCP/UDP 流量。收到连接后,通过控制通道发送信号,并按配置的 TLS 模式建立数据通道。
    • 客户端模式:连接服务器控制通道,接收建立数据通道的信号,并将数据转发至本地目标。
  • 协议支持
    同时支持 TCP 和 UDP 流量,确保大部分应用场景下的兼容性,既适合全双工的持久通信,也能处理无状态的单次数据交换。

  • 灵活加密选项
    通过命令行参数配置 TLS 模式,用户可以根据实际需求选择无加密、自签证书或自定义证书模式,从而在安全性和性能之间找到平衡。

  • 智能连接池
    内置连接池用于管理和复用连接,自动处理连接的创建、重连以及资源释放,从而降低系统开销并保证稳定性。

  • 零配置部署
    所有参数均通过命令行和环境变量设定,无需额外配置文件。单一二进制文件即可部署,大大简化了安装和升级过程。

工作原理

  1. 控制通道
    用于客户端和服务器之间的信号传递,保持长连接状态。所有建立数据通道的指令均通过这一通道传递。

  2. 数据通道
    根据服务器配置的 TLS 模式为每个传入连接创建独立数据通道,实现数据传输。可根据实际场景选择不同加密级别。

  3. 连接管理
    通过内置的连接池,对连接进行预先建立和动态管理。连接在使用后会自动关闭,确保系统资源的有效利用。

使用示例

  • 服务器模式

nodepass server://:10101/127.0.0.1:8080?tls=1

启动一个服务器,监听 10101 端口,并将接收到的流量转发到本地 8080 端口,同时采用自动生成自签证书的 TLS 模式。

  • 客户端模式

nodepass client://server.example.com:10101/127.0.0.1:8080

客户端连接到服务器的控制通道,并将流量转发至本地 8080 端口,自动匹配服务器的 TLS 配置。

NodePass 针对高级网络环境做了充分优化,适合对网络性能和安全性有一定要求的用户使用。

详细信息和最新版本请参考仓库: https://github.com/yosebyte/nodepass

举报· 1752 次点击
登录 注册 站外分享
16 条回复  
kk2syc 初学 3 天前
frp 高清重制?
uid106 楼主 初学 3 天前
@kk2syc 跟大头没得比啊,只是这就是做了一些创意性的活,比如自适应一次性 tcp 或 tls 连接池来管理提前建立的连接以节省掉握手的时间
dcsuibian 小成 3 天前
第一反应是用 Node.js 开发的
kekxv 小成 3 天前
客户端到服务器的连接能用 websocket 吗?
molezznet 小成 3 天前
试试看,tls 三个月更新后会 hot reload 吗?
uid106 楼主 初学 3 天前
@dcsuibian 可以理解为服务器节点之间的数据传输
uid106 楼主 初学 3 天前
@kekxv 的客户端与服务器之间采用的是直接的 TCP 连接,而不是 WebSocket 。虽然理论上可以通过 WebSocket 来隧道 TCP 流量(有类似 wstunnel 的工具),但 WebSocket 是建立在 TCP 之上的额外协议,具有消息帧和握手的额外开销,主要适用于浏览器端等环境。对于 NodePass 这种后端隧道传输工具,直接使用 TCP 能够保证更低的延迟和更高的传输效率,而且可以更容易升级为 TLS 连接。
uid106 楼主 初学 3 天前
@molezznet 目前的设计为了考虑通用性没有接管证书维护( acme ),可以通过手动 restart 来重新载入证书文件
shakukansp 小成 3 天前
支持 ssh 的 proxycommand 吗
12下一页
返回顶部