NodePass 是一款基于 Go 语言开发的开源 TCP 隧道工具,适用于在复杂网络环境下实现数据传输。项目设计上将控制通道和数据通道分离,控制通道使用未加密的 TCP 连接,而数据通道支持三种 TLS 模式(无加密、自签证书、定制证书),以满足不同的安全要求。
双模式架构
协议支持
同时支持 TCP 和 UDP 流量,确保大部分应用场景下的兼容性,既适合全双工的持久通信,也能处理无状态的单次数据交换。
灵活加密选项
通过命令行参数配置 TLS 模式,用户可以根据实际需求选择无加密、自签证书或自定义证书模式,从而在安全性和性能之间找到平衡。
智能连接池
内置连接池用于管理和复用连接,自动处理连接的创建、重连以及资源释放,从而降低系统开销并保证稳定性。
零配置部署
所有参数均通过命令行和环境变量设定,无需额外配置文件。单一二进制文件即可部署,大大简化了安装和升级过程。
控制通道
用于客户端和服务器之间的信号传递,保持长连接状态。所有建立数据通道的指令均通过这一通道传递。
数据通道
根据服务器配置的 TLS 模式为每个传入连接创建独立数据通道,实现数据传输。可根据实际场景选择不同加密级别。
连接管理
通过内置的连接池,对连接进行预先建立和动态管理。连接在使用后会自动关闭,确保系统资源的有效利用。
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
![]() |
1
kk2syc 2 天前
frp 高清重制?
|
![]() |
2
uid106 OP @kk2syc 跟大头没得比啊,只是这就是做了一些创意性的活,比如自适应一次性 tcp 或 tls 连接池来管理提前建立的连接以节省掉握手的时间
|
3
dcsuibian 2 天前
第一反应是用 Node.js 开发的
|
4
kekxv 2 天前 via iPhone
客户端到服务器的连接能用 websocket 吗?
|
![]() |
5
molezznet 2 天前
试试看,tls 三个月更新后会 hot reload 吗?
|
![]() |
7
uid106 OP @kekxv 的客户端与服务器之间采用的是直接的 TCP 连接,而不是 WebSocket 。虽然理论上可以通过 WebSocket 来隧道 TCP 流量(有类似 wstunnel 的工具),但 WebSocket 是建立在 TCP 之上的额外协议,具有消息帧和握手的额外开销,主要适用于浏览器端等环境。对于 NodePass 这种后端隧道传输工具,直接使用 TCP 能够保证更低的延迟和更高的传输效率,而且可以更容易升级为 TLS 连接。
|
![]() |
9
shakukansp 2 天前
支持 ssh 的 proxycommand 吗
|
![]() |
10
uid106 OP @shakukansp 可以利用 NodePass 创建的隧道,与 SSH 的 ProxyCommand 选项配合,实现通过受限网络环境访问远程服务器的需求,实际上任何基于 TCP/UDP (协议层)的服务都可以被转发
|
![]() |
11
caola 2 天前
和 Frp 对比没什么优势啊
|
![]() |
12
uid106 OP @caola 感谢反馈,的确如此,面对大而全和小而精的选择 nodepass 选择了后者(不重复造轮子),个人认为这个项目存在的意义还是能换种思路、架构或者流程来完成最基本的 tcp/udp 协议层的数据转发的这项功能,以及围绕如何用最少的资源实现最大化的性能,如何用最简单的用户体验来实现最小用户感知的、安全的传输方式,其中不乏有一些创新小点,例如预建立、可自动调节容量的连接池,两端如何保持池连接的对应性和连接池的纯净度的方法,udp 穿透时与 tcp 之间的协议转换,以及灵活的 tls 加密策略等等,希望这些想法的实现能抛砖引玉。如果觉得想法还不错,可以尝试下这款轻量化的隧道小工具
|
![]() |
14
uid106 OP @klxyy 最低要求:只需要一端(作为 client )能 dial 到另一端(作为 server )就可以。例如防火墙内部主动 dial 外部 server ,或者防火墙外部主动 dial 内部公网 v4 或者 v6 。灵活性比较大,可以组合出很多玩法
|