bore 是一个简单的 CLI 工具,用于建立到本地主机的隧道。
Rust 中的现代、简单的 TCP 隧道将本地端口暴露给远程服务器,绕过标准 NAT 连接防火墙。这就是它的全部作用:不多也不少。
# Installation (requires Rust, see alternatives below)
cargo install bore-cli
# On your local machine
bore local 8000 --to bore.pub这会将您的本地端口暴露localhost:8000给公共互联网bore.pub:<PORT>,其中端口号是随机分配的。
与localtunnel和ngrok类似, exceptbore 旨在成为一种高效、无偏见的工具,用于转发 TCP 流量,安装简单,易于自托管,没有任何附加功能。
(bore总共大约 400 行安全、异步 Rust 代码,设置起来很简单——只需为客户端和服务器运行一个二进制文件。)
安装
如果您使用的是 macOS,bore则打包为 Homebrew 核心公式。
brew install bore-cli否则,安装钻孔的最简单方法是使用预构建的二进制文件。这些可在macOS、Windows 和 Linux 的发布页面上找到。只需解压适合您平台的文件并将bore可执行文件移动到您的 PATH 上的文件夹中即可。
您还可以使用Rust 包管理器Cargobore从源代码构建。此命令将二进制文件安装在用户可访问的路径中。bore
cargo install bore-cli我们还为每个版本发布了版本化的 Docker 镜像。该映像是为 AMD 64 位架构构建的。bore它们标有特定版本,并允许您从最小的“临时”容器运行静态链接的二进制文件。
docker run -it --init --rm --network host ekzhang/bore <ARGS>详细使用方法
本节介绍boreCLI 命令的详细用法。
本地转发
您可以使用该bore local命令转发本地计算机上的端口。这需要一个位置参数、要转发的本地端口以及一个强制--to选项,该选项指定远程服务器的地址。
bore local 5000 --to bore.pub您可以选择传入一个--port 选项来选择远程上要公开的特定端口,但如果该端口不可用,该命令将失败。此外,传递还--local-host允许您公开局域网上除环回地址之外的不同主机localhost。
完整选项如下所示。
Starts a local proxy to the remote server
Usage: bore local [OPTIONS] --to <TO> <LOCAL_PORT>
Arguments:
  <LOCAL_PORT>  The local port to expose
Options:
  -l, --local-host <HOST>  The local host to expose [default: localhost]
  -t, --to <TO>            Address of the remote server to expose local ports to [env: BORE_SERVER=]
  -p, --port <PORT>        Optional port on the remote server to select [default: 0]
  -s, --secret <SECRET>    Optional secret for authentication [env: BORE_SECRET]
  -h, --help               Print help information自托管
正如启动说明中提到的,有一个bore服务器的公共实例在 运行bore.pub。但是,如果您想在自己的网络上自行托管bore,可以使用以下命令来实现:
bore server这就是所需要的一切!服务器开始在给定地址运行后,您可以bore local使用选项更新命令--to <ADDRESS>以将本地端口转发到此远程服务器。
该bore server命令的完整选项如下所示。
Runs the remote proxy server
Usage: bore server [OPTIONS]
Options:
      --min-port <MIN_PORT>  Minimum accepted TCP port number [default: 1024]
      --max-port <MAX_PORT>  Maximum accepted TCP port number [default: 65535]
  -s, --secret <SECRET>      Optional secret for authentication [env: BORE_SECRET]
  -h, --help                 Print help information协议
有一个隐式控制端口,7835用于按需创建新连接。初始化时,客户端在 TCP 控制端口上向服务器发送“Hello”消息,请求代理选定的远程端口。然后,服务器以确认响应并开始侦听外部 TCP 连接。
每当服务器在远程端口上获得连接时,它都会为该连接生成一个安全的UUID 并将其发送回客户端。然后,客户端向服务器打开一个单独的 TCP 流,并发送一条包含该流上的 UUID 的“接受”消息。然后,服务器代理彼此之间的两个连接。
出于正确性原因并避免内存泄漏,传入连接仅由服务器存储最多 10 秒,如果客户端不接受,则将其丢弃。
验证
在 的自定义部署中bore server,您可以选择要求机密 以防止服务器被其他人使用。该协议要求客户端通过以 HMAC 代码的形式回答随机质询来验证每个 TCP 连接上是否拥有秘密。(此秘密仅用于初始握手,默认情况下不会加密进一步的流量。)
# on the server
bore server --secret my_secret_string
# on the client
bore local <LOCAL_PORT> --to <TO> --secret my_secret_string如果参数中不存在机密,bore还将尝试从环境变量中读取BORE_SECRET。
致谢
由 Eric 张 ( @ekzhang1 ) 创建。根据MIT 许可证获得许可。
作者要感谢Tokio项目的贡献者和维护者,他们使得用 Rust 编写符合人体工程学且高效的网络服务成为可能。
来自 https://github.com/ekzhang/bore

 
沒有留言:
張貼留言