开始使用
Orbit 账户的组织方式、控制台各处的功能,以及从登录到让我们的网络开始应答一个域名的最短路径。
你服务器上的连接器向我们的落地点建立连接并保持。请求经由这条连接到达。你的服务器不接受来自互联网的任何连接,其地址也不出现在任何地方。
把源站藏在 CDN 后面,前提是源站还得拒绝所有不经 CDN 而来的人。那是一条必须永远保持正确的防火墙规则;而地址一旦泄露过一次 —— 一条旧 DNS 记录、一个邮件头、一条证书透明日志 —— 就永远泄露了。
隧道让这个问题消失。没有入站端口可保护,也就没有可写错的规则;即使地址泄露,访问到的也是一台不会应答的服务器。
http://127.0.0.1:8080。curl -fsSL https://dash.yunzheng.space/assets/orbit-link-linux-amd64 -o /usr/local/bin/orbit-link
chmod +x /usr/local/bin/orbit-linkorbit-link --token lnk_… --endpoint 203.0.113.4:7844 --fingerprint sha256:… --local http://127.0.0.1:8080已发布的构建包括 Linux(x86-64、arm64 与 ARMv7)、macOS(Apple 芯片与 Intel)以及 Windows。控制台里都有链接。
[Unit]
Description=Orbit Link connector
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/orbit-link --token lnk_… --endpoint … --fingerprint … --local http://127.0.0.1:8080
Restart=always
RestartSec=5
DynamicUser=yes
StateDirectory=orbit-link
[Install]
WantedBy=multi-user.target连接器以容器镜像形式发布,支持 Linux x86-64、arm64 与 ARMv7。镜像内是与下载版相同的已签名构建,以非 root 用户运行,可使用只读文件系统,不需要 shell。
# orbit-link.env (chmod 600 orbit-link.env)
ORBIT_LINK_TOKEN=lnk_…
ORBIT_LINK_ENDPOINT=203.0.113.4:7844
ORBIT_LINK_FINGERPRINT=…
ORBIT_LINK_LOCAL=http://127.0.0.1:8080docker run -d --name orbit-link --restart unless-stopped --env-file orbit-link.env --network host \
--read-only --cap-drop ALL --security-opt no-new-privileges \
cr.yunzheng.space/orbit-link:1.3.0在容器内,127.0.0.1 指的是容器自身。--network host 让连接器访问主机上的服务;若要访问另一个容器,请改用它的名称。
services:
app:
image: your-app-image
orbit-link:
image: cr.yunzheng.space/orbit-link:1.3.0
restart: unless-stopped
env_file: orbit-link.env
environment:
ORBIT_LINK_LOCAL: http://app:8080
read_only: true
cap_drop: [ALL]
security_opt: [no-new-privileges:true]
depends_on: [app]ORBIT_LINK_TOKEN_FILE 设为其路径。1.3.0)、次版本线(1.3)与 latest;升级时更换标签即可。docker stop 时,连接器会先处理完正在进行的请求(最多 8 秒,ORBIT_LINK_DRAIN)再退出。提供两个 Helm chart。orbit-link 以 Deployment 运行一条隧道的连接器。orbit-link-controller 发布 Ingress 与 Gateway API 路由:你在集群里声明的每个主机名都经 Orbit Link 对外提供,不需要入站端口,也不需要负载均衡器。
# orbit-link-values.yaml (chmod 600 orbit-link-values.yaml)
tunnel:
token: lnk_…
endpoint: "203.0.113.4:7844"
fingerprint: "…"
local: http://my-app.default.svc.cluster.local:8080
helm install orbit-link oci://cr.yunzheng.space/charts/orbit-link \
--namespace orbit-link --create-namespace -f orbit-link-values.yamlkubectl create namespace orbit-link
kubectl -n orbit-link create secret generic orbit-api --from-file=token=./orbit-api-token
helm install orbit-link oci://cr.yunzheng.space/charts/orbit-link-controller -n orbit-link \
--set clusterName=my-cluster --set orbit.existingSecret=orbit-apiapiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app
spec:
ingressClassName: orbit-link
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app
port:
number: 80orbit-link 的 Ingress,以及挂在 GatewayClass 为 orbit-link 的 Gateway 上的 HTTPRoute。支持按主机名与路径(Prefix 与 Exact)分发。kubectl describe 会显示每个主机名的事件:已发布、已被占用或超出套餐上限。helm uninstall 会移除控制器创建的全部内容。当前连接器版本为 1.3.0(2026-09-28)。下载:Linux x86-64、Linux arm64、Linux ARMv7、macOS Apple 芯片、macOS Intel、Windows x86-64。orbit-link --version 会显示你手上的版本。
从 1.1.0 起连接器会自动保持最新:启动时和每隔几小时检查一次新版本,只安装用我们发布密钥签名的构建,切换前先试运行新构建,新构建连不上隧道时自动退回上一版本。在 systemd 下更新暂存在它的 StateDirectory 里;手动运行时,在有权限的情况下直接替换自身文件。
--no-update(或设置 ORBIT_LINK_NO_UPDATE=1)。控制台会标出连接器版本低于当前版本的隧道。1.0.0 版本不会自我更新,请手动替换一次为当前版本。连接器拨的是一个地址而非主机名,因此没有名字可以让公共 CA 背书。取而代之的是对落地点公钥的钉定:命令行里的 fingerprint 是该公钥的 SHA-256,连接器拒绝与任何无法出示它的一方通信。
凭据的方向相反:落地点校验它并接受这条隧道。凭据错误与隧道不存在的拒绝是完全相同的 —— 二者的差别恰好是猜测者想要得到的信息。
连接器优先使用 UDP 7844 上的 QUIC,并在同一端口回退到 TCP。如果所在网络完全丢弃 UDP,加上 --tcp 直接走回退,不必等 QUIC 超时。
两种情况下都只需要出站连接。没有任何东西会主动连接你的服务器。
不需要,这正是重点。它只需要能建立出站连接 —— 家庭宽带或私有网络中的容器通常只能做到这一点。
隧道消失,其后的站点变为不可达。这里刻意没有公网兜底地址:保留一个恰恰会重新引入这个产品要防的泄漏。请用守护进程运行连接器 —— 控制台会给出 systemd unit。
可以。多个 Shield 主机名可以从同一条隧道回源;连接器把它们都转发到同一个本地地址,由你的服务器按 Host 头分派。
Link 按平台开启。如果控制台显示尚未开启,说明地址池还没分配 —— 请联系支持。