inlets - 借助vps或公网电脑的内网穿透工具
nlets® 利用反向代理和 Websocket 隧道,将内部、或是开发中的服务通过「出口节点」暴露到公网。出口节点可以是几块钱一个月的 VPS,也可以是任何带有公网 IPv4 的电脑。 如果无需公开服务到公网,可以只建立服务隧道,使 inlets 成为 VPN 的替代品。
为什么需要这个项目?类似的工具例如ngrok和由Cloudflare开发的Argo Tunnel皆为闭源,内置了一些限制,并且价格不菲,以及对 arm/arm64 的支持很有限。Ngrok 还经常会被公司防火墙策略拦截而导致无法使用。而其它开源的隧道工具,基本只考虑到静态地配置单个隧道。inlets 旨在动态地发现本地服务,通过 Websocket 隧道将它们暴露到公网 IP 或域名,并自动化配置 TLS 证书。
当开启 SSL 时,inlets 可以通过任何支持CONNECT方法的 HTTP 代理服务器。
项目状态
与 HTTP 1.1 遵循同步的请求/响应模型不同,Websocket 使用异步的发布/订阅模型来发送和接收消息。这带来了一些挑战 —— 通过 异步总线 隧道化传输 同步协议。
inlets 2.0 带来了性能上的提升,以及调用部分 Kubernetes 和 Rancher API 的能力。本项目使用了 Rancher 的 K3s 项目 实现节点间通讯同样的隧道依赖包。它非常适用于开发,在生产环境中也很实用。不过在部署 inlets
到生产环境中之前,建议先做好充足的测试。
如果您有任何评论、建议或是贡献想法,欢迎提交 Issue 讨论。
- 隧道链路通过
--token
选项指定的共享密钥保证安全 - 默认配置使用不带 SSL 的 Websocket
ws://
,但支持开启加密,即启用 SSLwss://
- 可通过服务器端选项设定请求超时时间
服务发现机制完成前,在服务端和客户端都必须配置上游 URL客户端可发布其可提供服务的上游 URLs- 默认情况下,隧道传输会移除响应内的 CORS 头,但你可以在服务端使用
--disable-transport-wrapping
关闭该特性
安装 inlets
你可以使用 curl
下载安装脚本,或是用 brew
安装,或者直接在 Releases 页面直接下载二进制文件。安装完成后即可使用 inlets
命令。
安装 CLI
提示:虽然
inlets
是一款免费工具,但你也可以在 GitHub Sponsors 页面支持后续的开发
使用 curl
和辅助脚本:
# 安装到当前目录 curl -sLS https://get.inlets.dev | sh # 安装到 /usr/local/bin/ curl -sLS https://get.inlets.dev | sudo sh
使用 brew
:
brew install inlets
提示:
brew
分发的版本由 Homebrew 团队维护,因此可能会与 GitHub releases 存在一定延迟。
二进制文件可在 Releases 页面 找到;包含 Linux(x86_64、armhf、arm64),Windows(实验性)以及 Darwin(MacOS)版本。如果你想要验证你的下载,也可以查看 SHA 校验值。
Windows 用户建议使用 Git bash 来安装 inlets。
快速上手
你可以在任何两台互相连接的「电脑」之间运行 inlets,「电脑」可以是两个容器,虚拟机,物理机,甚至单台机器的环回网络也可以。
可在本地尝试 quickstart tutorial now(英文)。
文档和教程
inlets 和 inlets PRO 有了独立的文档站点(英文):
官方文档:docs.inlets.dev
- 文档:Quickstart tutorial on your laptop
- 文档:Inlets & Kubernetes recipes
- 教程:Get a LoadBalancer for your private Kubernetes cluster with inlets-operator