【脚本】NodePass通用TCP/UDP隧道解决方案,一键管理脚本光速来袭

前言

  • 感谢NS论坛的各位热心网友,正是你们借助这一优质平台拥抱开源项目,使得NodePass在发布24小时内便收获了101颗STAR。
  • 特别感谢 @酒神,你的宝贵建议在项目的设计与开发过程中起到了至关重要的作用。
  • 在此希望能借助NodePass管理脚本,让更多人以最简单的方式,轻松体验内网穿透带来的便捷与高效。

1. NodePass 简介

NodePass 是一款通用 TCP/UDP 隧道工具,专为网络穿透、数据转发和安全通信设计。它通过创建加密的 TLS 隧道进行客户端与服务端之间的通信,在不同网络环境间安全地转发业务服务的流量,使得内网服务可以顺利地暴露在公网上。并凭借着预建立、自适应的连接池管理带来的 TCP 加速效果,NodePass 为开发人员和系统管理员提供了一个强大且易用的工具,可以解决复杂的网络挑战,同时在安全和性能之间做到了平衡。

1.1 核心功能

  • 🔄 安全通信隧道: 可选TLS加密传输,确保业务传输安全
  • 🌐 协议切换支持: 支持TCP/UDP转发,并支持UDP-TCP协议切换
  • 🔌 两种运行模式: 客户端模式和服务端模式,适应不同场景自由切换
  • ️ 配置系统服务: 可配置为系统服务,实现开机自启和守护进程功能
  • 🧩 多个实例支持: 可在同一系统上运行多个不同配置的NodePass实例
  • 🔌 高效的连接池: 优化的连接管理,支持可配置的池大小

2. 原理简介

NodePass基于客户端-服务端架构工作。它创建了两个主要通道:

  1. 信号控制通道: 用于通信和隧道管理(不加密)
  2. 数据转发通道: 用于实际业务数据的转发(可选择不同级别的TLS加密)

NodePass具体架构图可供参考:

                                     |X|
                                     |X|
|----------|       |----------|      |X|      |----------|       |----------|
|          |       |                    |       |   USER   |
|  TARGET  |       |  CLIENT  |      |X|      |  SERVER  |       |----------|
|          -|------|--|------|-   USER   |
|  SERVER  |       | | POOL |--| POOL | |       |----------|
|          -|------|--|------|-   USER   |
|----------|       |----------|      |X|      |----------|       |----------|
                                     |X|                         |   USER   |
                                     |X|                         |----------|
                                     |X|

3. 安装准备

3.1 系统要求

  • 支持的架构: amd64 (x86_64) 或 arm64 (aarch64)
  • 支持systemd的Linux系统 (如Ubuntu, Debian, CentOS, Fedora等)

3.2 必要依赖

安装脚本需要以下依赖项:

  • curl: 下载文件
  • tar: 解压文件
  • grep, sed: 文本处理
  • jq: JSON解析

如果系统缺少这些依赖,脚本会提示您安装。

4. 安装流程详解

4.1 获取管理脚本

运行下列命令即可直接获取管理脚本并运行:

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

4.2 安装过程说明

运行脚本后,您将看到一个交互式安装界面,需要进行以下步骤:

  1. 选择语言: 中文或英文
  2. 系统检查: 脚本会检查系统架构和必要依赖
  3. 获取版本信息: 脚本会自动获取最新版本
  4. 镜像选择: 您可以选择是否使用 GitHub 镜像来加速下载
  5. 服务名称设置: 为您的 NodePass 实例设置一个名称,如 "ssh", "web" 等
  6. 选择工作模式: 客户端模式或服务端模式
  7. TLS安全模式配置(对服务端模式):
    • 模式0: 不使用TLS(默认)
    • 模式1: 自动TLS(内存自签证书)
    • 模式2: 自定义TLS(提供证书和密钥)
  8. 设置隧道地址:
    • 客户端模式: 填写服务端的地址和端口
    • 服务端模式: 填写监听地址和端口
  9. 设置目标地址:
    • 客户端模式: 填写本地服务的地址和端口
    • 服务端模式: 填写对外暴露的地址和端口
  10. 调试选项: 是否启用详细日志
  11. 系统服务配置: 脚本会自动设置系统服务

6. 使用场景示例

6.1 内网 SSH 穿透

假设您有一台无公网 IP 的内网服务器 (192.168.1.100),想要从外网安全访问它的 SSH 服务 (端口 22)。

步骤 1: 在有公网 IP 的服务器上安装 NodePass (服务端模式)

  • 隧道地址: 0.0.0.0:10101(监听所有网卡的 10101 端口)
  • 目标地址: 0.0.0.0:10022(对外提供 SSH 服务的端口)

步骤 2: 在内网服务器上安装 NodePass (客户端模式)

  • 隧道地址: :10101
  • 目标地址: 127.0.0.1:22(本地 SSH 服务)

步骤 3: 使用方式

现在您可以通过 ssh -p 10022 user@ 来访问内网服务器

6.2 内网 Web 服务暴露

假设您在内网运行了一个 Web 服务 (端口 80),想要让外网用户访问。

步骤 1: 在公网服务器上安装 NodePass (服务端模式)

  • 隧道地址: 0.0.0.0:10101
  • 目标地址: 0.0.0.0:10080(对外提供 Web 服务的端口)

步骤 2: 在内网 Web 服务器上安装 NodePass (客户端模式)

  • 隧道地址: :10101
  • 目标地址: 127.0.0.1:80(本地 Web 服务)

步骤 3: 使用方式

外网用户可以通过 http://:10080 访问内网 Web 服务

6.3 DNS 解锁流媒体转移

假设您的某台特定服务器 A 可以访问某流媒体解锁 DNS,想让不能访问这个 DNS 的服务器 B 也能访问。

步骤 1: 在服务器 B 上安装 NodePass (服务端模式)

  • 隧道地址: 0.0.0.0:10101
  • 目标地址: 127.0.0.1:53(本地 DNS 端口)

步骤 2: 在服务器 A 上安装 NodePass (客户端模式)

  • 隧道地址: :10101
  • 目标地址: 目标 DNS:53(可访问的 DNS 端口)

步骤 3: 使用方式

通过配置服务器 B 本机的 DNS 地址,连接本地的 53 端口来实现流媒体解锁转移

6.4 中转机拉落地机

假设您的服务器解锁极好,但线路不好,想让线路极好,解锁不好的服务器作为中转,连接目标服务。

步骤 1: 在中转机上安装 NodePass (服务端模式)

  • 隧道地址: 0.0.0.0:10101
  • 目标地址: 0.0.0.0:8443(对外提供目标服务的端口)

步骤 2: 在落地机上安装 NodePass (客户端模式)

  • 隧道地址: :10101
  • 目标地址: 127.0.0.1:8443(本地目标服务端口)

步骤 3: 使用方式

用户可以直接访问 :8443 来访问落地机的目标服务,且落地与中转已通过连接池提前建立了连接,实现了 TCP 加速效果。

7. NodePass 管理操作

NodePass 安装脚本提供了完整的管理界面,只需再次运行脚本即可。

7.1 主菜单选项

  • 安装/更新 NodePass: 获取最新版本
  • 管理 NodePass 服务: 查看、启动、停止、添加或删除服务
  • 卸载 NodePass: 完全移除 NodePass 及其配置
  • 退出脚本: 退出管理界面

7.2 服务管理选项

在管理菜单中,您可以:

  • 查看所有服务: 列出所有已安装的服务及其状态
  • 管理特定服务: 选择一个服务进行操作
    • 启动服务
    • 停止服务
    • 重启服务
    • 删除服务
  • 添加新服务: 创建新的 NodePass 服务实例
  • 返回主菜单: 返回上一级菜单

8. 配置文件与目录结构

NodePass 在系统中的主要文件和目录:

  • 可执行文件: /usr/local/bin/nodepass
  • 配置目录: /etc/nodepass/
  • 服务配置: /etc/nodepass/services/.json
  • 系统服务文件: /etc/systemd/system/np-.service

9. 故障排除

9.1 连接问题

如果客户端无法连接到服务端:

  • 检查服务端防火墙是否已开放对应端口
  • 确认服务端 NodePass 是否正在运行
  • 验证隧道地址是否正确

9.2 转发问题

如果连接成功但无法访问目标服务:

  • 检查目标服务是否正在运行
  • 确认目标地址配置是否正确
  • 检查目标服务的防火墙设置

9.3 查看日志

使用以下命令查看服务日志:

journalctl -u np-.service -f

10. 高级用法

10.1 参数调优

可以调整环境变量调整 NodePass 连接池大小、最大并发数量等,可参考仓库文档。

10.2 自定义镜像

如果 GitHub 下载速度慢,您可以:

  • 在安装过程中选择使用镜像
  • 或者提供自定义镜像 URL

10.3 多服务组合

您可以在一台服务器上运行多个 NodePass 实例,每个实例负责不同的服务转发,形成完整的内网穿透解决方案。

11. 安全建议

使用 NodePass 时,请注意以下安全事项:

  • 业务数据传输:业务数据,如有需要,穿透前做好措施
  • 更改默认端口: 避免使用默认端口,减少被扫描的风险
  • 防火墙规则: 只对必要的 IP 开放端口访问权限
  • 定期更新: 及时更新到最新版本以获取安全修复
  • 权限控制: 确保只有受信任的用户能访问公开的服务
  • 监控日志: 定期检查日志以发现可能的异常访问

12. 交流支持

感谢您选用 NodePass 管理脚本,随着经验的积累,您可以组合多个 NodePass 实例,构建更复杂的网络应用场景。

更多信息和最新版本,请访问 NodePass 官方项目仓库: https://github.com/yosebyte/nodepass

期待您的 STAR 关注,有任何技术问题欢迎随时交流。

点赞
  1. 福尔摩斯说道:

  2. Crazybbok说道:

    又一个大佬

  3. 酒神说道:

    加油,看好这个项目,潜力很大,有望成为流行的解决方案

回复 福尔摩斯 取消回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮