Nodepass:TCP隧道解决方案

项目地址:yosebyte/nodepass: an elegant, efficient TCP/UDP tunneling solution

项目介绍

NodePass是一个优雅、高效的TCP隧道解决方案,可在网络端点之间创建安全的通信桥梁。通过建立使用TLS加密保护的控制通道,NodePass能够在受限网络环境中实现无缝数据传输。其服务器-客户端架构允许灵活部署,使服务能够穿越防火墙、NAT和其他网络障碍。凭借智能连接池、最小资源占用和简洁的命令语法,NodePass为开发人员和系统管理员提供了一个强大且易用的工具,可以解决复杂的网络挑战,同时不影响安全性或性能。

功能特性

  • 🔄 双重操作模式: 可作为服务器接受连接或作为客户端发起连接
  • 🌐 TCP/UDP协议支持: 支持TCP和UDP流量隧道传输,确保完整的应用程序兼容性
  • 🔒 TLS加密通信: 所有隧道流量均使用TLS加密确保安全
  • 🔌 高效连接池: 优化的连接管理,支持可配置的池大小
  • 📊 灵活的日志系统: 可配置的五种不同日志级别
  • 🛡️ 弹性错误处理: 自动连接恢复和优雅关闭
  • 📦 单一二进制部署: 简单分发和安装,依赖项极少
  • ⚙️ 零配置文件: 所有设置通过命令行参数和环境变量指定
  • 🚀 低资源占用: 即使在高负载下也能保持最小的CPU和内存使用
  • ♻️ 自动重连: 从网络中断中无缝恢复
  • 🧩 模块化架构: 客户端、服务器和公共组件之间清晰分离
  • 🔍 全面调试: 详细的连接追踪和信号监控
  • ⚡ 高性能数据交换: 优化的双向数据传输机制
  • 🧠 智能连接管理: 智能处理连接状态和生命周期
  • 📈 可扩展信号量系统: 防止高流量期间资源耗尽
  • 🔄 基于URL的信号协议: 端点间优雅且可扩展的通信
  • 🛠️ 可配置池动态: 根据工作负载调整连接池行为
  • 🔌 一次性连接模式: 通过非重用连接增强安全性
  • 📡 动态端口分配: 自动管理安全通信的端口分配

系统要求

  • Go 1.24或更高版本(从源代码构建时需要)
  • 服务器和客户端端点之间的网络连接
  • 绑定1024以下端口可能需要管理员权限

安装部署

Docker

# 拉取容器镜像
docker pull ghcr.io/yosebyte/nodepass:latest

# 服务器模式运行
docker run -d --name nodepass-server -p 10101:10101 -p 8080:8080 \
  ghcr.io/yosebyte/nodepass server://0.0.0.0:10101/0.0.0.0:8080

# 客户端模式运行
docker run -d --name nodepass-client \
  -e MIN_POOL_CAPACITY=32 \
  -e MAX_POOL_CAPACITY=512 \
  -p 8080:8080 \
  ghcr.io/yosebyte/nodepass client://server.example.com:10101/127.0.0.1:8080

管理脚本

bash <(curl -sL https://cdn.yobc.de/shell/nodepass.sh)

脚本提供了交互式菜单:

  • 安装或更新NodePass
  • 创建和配置多个nodepass服务
  • 管理(启动/停止/重启/删除)nodepass服务
  • 自动设置systemd服务
  • 使用可自定义选项配置客户端和服务器模式

使用方法

服务端

nodepass server://<tunnel_addr>/<target_addr>?log=<level>
  • tunnel_addr: TLS隧道端点地址,客户端将连接到此处(例如, 10.1.0.1:10101)
  • target_addr: 服务器监听传入连接(TCP和UDP)的地址,这些连接将被隧道传输到客户端(例如, 10.1.0.1:8080)
  • log: 日志级别(debug, info, warn, error, fatal)

示例

# 启动一个隧道到本地Web服务器的服务器
nodepass server://0.0.0.0:10101/127.0.0.1:8080?log=debug

# 启动一个增加连接限制的服务器
export SEMAPHORE_LIMIT=2048
nodepass server://10.1.0.1:10101/10.1.0.1:5432?log=info

客户端

nodepass client://<tunnel_addr>/<target_addr>?log=<level>
  • tunnel_addr: 要连接的NodePass服务器隧道端点地址(例如, 10.1.0.1:10101)
  • target_addr: 流量将被转发到的本地地址(例如, 127.0.0.1:8080)
  • log: 日志级别(debug, info, warn, error, fatal)

示例

# 连接到远程NodePass服务器并在本地公开服务
nodepass client://server.example.com:10101/127.0.0.1:8080

# 为高吞吐量场景连接并优化池设置
export MIN_POOL_CAPACITY=32
export MAX_POOL_CAPACITY=2048
nodepass client://10.1.0.1:10101/127.0.0.1:3000?log=debug

配置说明

环境变量

变量描述默认值示例
SEMAPHORE_LIMIT最大并发连接数1024export SEMAPHORE_LIMIT=2048
MIN_POOL_CAPACITY最小连接池大小16export MIN_POOL_CAPACITY=32
MAX_POOL_CAPACITY最大连接池大小1024export MAX_POOL_CAPACITY=4096
UDP_DATA_BUF_SIZEUDP数据包缓冲区大小8192export UDP_DATA_BUF_SIZE=16384
UDP_READ_TIMEOUTUDP读取操作超时5sexport UDP_READ_TIMEOUT=10s
REPORT_INTERVAL健康检查报告间隔5sexport REPORT_INTERVAL=10s
SERVICE_COOLDOWN重启尝试前的冷却期5sexport SERVICE_COOLDOWN=3s
SHUTDOWN_TIMEOUT优雅关闭超时5sexport SHUTDOWN_TIMEOUT=10s

其他说明

参见中文文档:传送门

发布者:木木,转载请注明出处:https://blog.mmcool.site/7467.html

Like (0)
Donate 微信 微信 支付宝 支付宝
木木的头像木木VIP用户
Previous 2025 年 3 月 26 日 下午3:11
Next 2024 年 7 月 28 日 下午8:44

相关推荐

发表回复

Please Login to Comment
SHARE
TOP
🔈Hi,朋友。欢迎来到木木の博客小站!