NS首发!Passport一键搞定安全认证、内网穿透和端口转发

说明:首发内容不再更新,readme请参考仓库


  • 工作学习过程中经常有内网穿透需求的场景,传统的frp、nps虽然功能完善,但是缺少灵活性,不够简洁易用。
  • 如果再有需要进行TCP转发的时候,iptables又有些不方便,不易于管理。
  • 在有些情况下需要我们的服务有白名单限制,但又需要防火墙繁琐的配置。
  • 根据这些需求,项目主完全从零开始打造出了一款灵活处理上述需求的工具:Passport

概述

Passport 是一款强大的 TCP 连接管理工具,可简化 NAT 穿透、TCP 转发等功能。通过在单个可执行文件中集成三种不同的运行模式,Passport 能跨越不同的网络环境,无缝重定向服务并处理 TCP 连接,确保可靠的网络连接和理想的网络环境。凭借高度集成的授权管理,Passport 让您高效管理用户权限,建立不间断的数据流,以确保敏感资源的保护,同时保持应用程序的高性能和响应性。

功能

  • 统一操作:Passport 可作为服务端、客户端或转发模式运行,三种角色仅需一个可执行文件。

  • 授权管理:通过 IP 地址管理,Passport 确保只有授权用户可以访问敏感资源。

  • 自动证书:使用 Certmagic 进行无缝的自动证书颁发和更新(当域名可用时)。

  • 内存证书:提供有效期为一年的自签名 HTTPS 证书,完全存储在内存中。

  • 自动重连:提供可靠的短期重连功能,确保服务不中断。

  • 连接更新:在连接中断的情况下,Passport 支持实时连接更新。

  • 服务转发:高效管理和重定向 TCP 连接,从一个服务到各个入口点。

使用方法

运行程序时,请提供指定模式和连接地址的 URL。URL 格式如下:

server://linkAddr/targetAddr
client://linkAddr/targetAddr
broker://linkAddr/targetAddr

注意,只有 serverbroker 模式支持授权管理,您可以在 # 后添加授权条目。例如:

server://linkAddr/targetAddr#authScheme://authAddr/secretPath
broker://linkAddr/targetAddr#authScheme://authAddr/secretPath
  • authScheme:该选项允许选择使用 HTTP 或 HTTPS。
  • authAddr:指定授权管理的服务器地址和端口。
  • secretPath:用于处理授权请求的密钥端点。

服务端模式

  • linkAddr:用于接受客户端连接的地址。例如 :10101
  • targetAddr:用于监听外部连接的地址。例如 :10022

以服务端模式运行

./passport server://:10101/:10022
  • 该命令将在端口 10101 上监听客户端连接,并在端口 10022 上监听和转发数据。

以授权方式运行服务端

./passport server://:10101/:10022#https://hostname:8443/server
  • 服务端在 https://hostname:8443/server 进行授权管理,访问时记录您的 IP。
  • 服务端将在端口 10101 上监听客户端连接,并在端口 10022 上监听和转发数据。

客户端模式

  • linkAddr:要连接的服务端地址。例如 server_ip:10101
  • targetAddr:要连接的目标服务地址。例如 127.0.0.1:22

以客户端模式运行

./passport client://server_hostname_or_IP:10101/127.0.0.1:22
  • 该命令将与 server_hostname_or_IP:10101 建立链接,并连接和转发数据到 127.0.0.1:22

转发模式

  • linkAddr:用于接受客户端连接的地址。例如 :10101
  • targetAddr:要连接的目标服务地址。例如 127.0.0.1:22

以转发模式运行

./passport broker://:10101/127.0.0.1:22
  • 该命令将在端口 10101 上监听客户端连接,并连接和转发数据到 127.0.0.1:22

以授权方式运行转发模式

./passport broker://:10101/127.0.0.1:22#https://hostname:8443/broker
  • 服务端在 https://hostname:8443/broker 进行授权管理,访问时记录您的 IP。
  • 服务端将在端口 10101 上监听客户端连接,并连接和转发数据到 127.0.0.1:22

容器使用

您也可以使用容器运行 Passport。镜像可从 ghcr.io/yosebyte/passport 获取。

在服务端模式下使用容器运行(带或不带授权):

docker run --rm ghcr.io/yosebyte/passport server://:10101/:10022#https://hostname:8443/server
docker run --rm ghcr.io/yosebyte/passport server://:10101/:10022

在客户端模式下使用容器运行:

docker run --rm ghcr.io/yosebyte/passport client://server_hostname_or_IP:10101/127.0.0.1:22

在转发模式下使用容器运行(带或不带授权):

docker run --rm ghcr.io/yosebyte/passport broker://:10101/127.0.0.1:22#https://hostname:8443/broker
docker run --rm ghcr.io/yosebyte/passport broker://:10101/127.0.0.1:22

  • 欢迎STAR本项目,有技术问题可留言私信TG沟通。
点赞
  1. Volt说道:
    • 补充几种使用示例:

发表回复

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

×
订阅图标按钮