---
title: "分享一个应用，而非整台机器"
description: "通过 TSLink 为一个本地应用提供独立的 Tailscale 节点。了解各入口暴露什么，以及主机同时运行 Tailscale 时会有什么变化。"
url: "https://tslink.md/zh/docs/share-one-app"
locale: "zh"
product_version: "0.1.1"
source: "https://github.com/anydoor7/tslink/blob/v0.1.1/docs/architecture.md"
---

> Documentation index: https://tslink.md/zh/llms.txt · Installed binary is authoritative: `tslink manifest`.

## 每个注册应用各有一个节点

**一个应用，而非整台机器。** 在主机没有另行连接 Tailscale 的前提下，TSLink 通过每个应用自己的嵌入式节点提供其配置目标，不额外开放其他主机端口。主机上的独立路由和其他网关不在此列，需要另行检查。代理目标也可能是 daemon 可达的非本机地址。参见[架构](https://tslink.md/zh/docs/architecture.md)、[代理配置](https://tslink.md/zh/docs/services.md)、[Tailscale tsnet](https://tailscale.com/docs/features/tsnet)和[tsnet 包概览](https://pkg.go.dev/tailscale.com@v1.102.5/tsnet)。

这些节点拥有不同身份，但运行在同一个共用 daemon 中。它们不会创建独立的执行环境，也不会缩减 daemon 的操作系统用户权限。应用本身可能提供主机管理、文件访问或其他强大功能。参见[架构](https://tslink.md/zh/docs/architecture.md)。

## 沿着请求从手机走到应用

[在主机没有另行连接 Tailscale 时，手机分别访问 443 端口上的应用 A 节点和报告节点，再到同一主机的 localhost:3000 或 report.html；主机内共用一个 TSLink daemon。TCP 客户端访问自己的节点和目标。可选 portal 与远程 MCP 节点独立，虚线管理箭头不承载应用请求。第二面板展示独立的主机 Tailscale 设备及其受策略控制的监听服务路径。](https://tslink.md/app-entry-points-light.svg)

[在主机没有另行连接 Tailscale 时，手机分别访问 443 端口上的应用 A 节点和报告节点，再到同一主机的 localhost:3000 或 report.html；主机内共用一个 TSLink daemon。TCP 客户端访问自己的节点和目标。可选 portal 与远程 MCP 节点独立，虚线管理箭头不承载应用请求。第二面板展示独立的主机 Tailscale 设备及其受策略控制的监听服务路径。](https://tslink.md/app-entry-points-dark.svg)

实线传输路径是 `手机 → 应用 A 节点:443 → localhost:3000`、`手机 → 报告节点:443 → report.html` 和 `TCP 客户端 → TCP 节点:<port> → 目标`。为了便于阅读，节点身份画在主机框外；实际上它们嵌入在主机的共用 daemon 内。虚线表示管理，应用请求不经过 MCP。参见[请求路径](https://tslink.md/zh/docs/architecture.md)、[MCP 配置](https://tslink.md/zh/docs/mcp-server.md)和[Tailscale 访问控制](https://tailscale.com/docs/features/access-control/acls)。

## 每个监听入口暴露什么

| 入口             | 提供的内容                                                                                                                                                                                                                  |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| HTTP 代理或文件应用节点 | 节点 443 上的 HTTPS、选定的代理或文件 handler、授权与请求中间件。代理包含配置后端可达的路由和功能。显式公开的 Funnel 使用同一节点的 443 端口。[应用管理](https://tslink.md/zh/docs/services.md) · [Tailscale Funnel](https://tailscale.com/docs/features/tailscale-funnel)        |
| TCP 应用节点       | 配置端口上的一个私有监听器，未指定时默认 443，转发到 TCP 目标。没有 HTTP `--allow`/people 检查或 HTTPS 终止，需要网络策略与后端认证。[TCP 行为](https://tslink.md/zh/docs/architecture.md) · [Tailscale 访问控制](https://tailscale.com/docs/features/access-control/acls)  |
| 目录或单文件         | 目录分享提供其子树，可能显示目录列表。普通文件分享只提供选中的文件名，`/` 返回 302 跳转，兄弟文件及其他路径返回 404。目录打开使用锚定的操作系统根路径，拒绝路径穿越和逃出该根的符号链接。内容实时读取；服务树内的硬链接按普通文件提供。[文件分享](https://tslink.md/zh/docs/file-sharing.md)                                            |
| 可选 portal      | 独立的嵌入式 HTTPS 节点，监听 443，提供应用目录 `/`、过滤后的 `/api/apps` 和访问申请处理。它不会加到每个应用节点上；分享 portal 节点不会让应用节点自动可达。[Portal](https://tslink.md/zh/docs/portal-requests.md) · [Tailscale 设备分享](https://tailscale.com/docs/features/sharing) |
| 可选远程 MCP       | 默认关闭，使用独立私有 HTTPS 节点，提供 `/mcp` 和可选的 owner `/events` 流。它不是应用监听器，也不通过 Funnel 发布。[MCP 配置](https://tslink.md/zh/docs/mcp-server.md) · [MCP 角色](https://tslink.md/zh/docs/mcp-scopes.md)                                    |

后端健康探针直接访问配置的后端，文件检查则查看配置的目录或文件。应用节点组装不会额外添加 TSLink 的 health/admin HTTP 路由；应用自己的健康路由仍属于代理目标。参见[健康检查](https://tslink.md/zh/docs/health-and-alerts.md)和[架构](https://tslink.md/zh/docs/architecture.md)。

本地 MCP 使用 stdio。每个嵌入式节点的 `LocalClient` 只供该节点在本地控制使用，不在 tailnet 上开放控制 socket；TSLink 不调用 tsnet 可选的 `Loopback` 监听器。发布不依赖系统 Tailscale 安装，也不通过 shell 调用其 CLI，但 `doctor` 可以通过 LocalAPI 读取系统客户端的 SSH 偏好，缺失或超时会记为未知。参见[MCP 配置](https://tslink.md/zh/docs/mcp-server.md)、[诊断](https://tslink.md/zh/docs/troubleshooting.md)、[LocalClient](https://pkg.go.dev/tailscale.com@v1.102.5/tsnet#Server.LocalClient)和[Loopback](https://pkg.go.dev/tailscale.com@v1.102.5/tsnet#Server.Loopback)。

## 对比主机另行连接 Tailscale 的情况

比较的是网络入口。普通 Tailscale 添加一个设备，由策略决定可达的设备与端口组合。服务还受监听地址和防火墙设置影响，并非每个端口、进程和文件都会自动开放。TSLink 添加应用节点监听器，不要求主机另行建立该连接。如果两者都运行，两条路径就同时存在。参见[tsnet 包概览](https://pkg.go.dev/tailscale.com@v1.102.5/tsnet)和[Tailscale 访问控制](https://tailscale.com/docs/features/access-control/acls)。

## 设置每个应用的访问规则

对于私有 HTTP 应用：

```bash
tslink add agent-ui --proxy localhost:3000 --allow you@example.com
tslink url agent-ui --wait
```

按需完成注册和设备审批。不同身份可以配置不同网络规则，可选的 TSLink `--allow`/people 规则进一步检查 HTTP/文件访问。默认私有分享不会自动变成仅所有者可用。Portal owner/admin 身份可以访问所有私有 HTTP/文件应用，但仍受网络策略和应用登录约束。参见[首次私有分享](https://tslink.md/zh/docs/quickstart.md)、[人员分享](https://tslink.md/zh/docs/people-sharing.md)和[portal 权限](https://tslink.md/zh/docs/portal-requests.md)。

新建的无存储凭据节点不会宣告 tags，不要假设基于 tag 的规则已经生效。原始 TCP 需要网络策略与后端认证。参见[凭据](https://tslink.md/zh/docs/configuration.md)、[架构](https://tslink.md/zh/docs/architecture.md)、[Tailscale tsnet](https://tailscale.com/docs/features/tsnet)和[访问控制](https://tailscale.com/docs/features/access-control/acls)。

## TSLink 不会限制什么

TSLink 不约束进程、文件系统权限、应用本身的能力，也不约束独立暴露的 LAN 或主机路由。它不替代应用认证，portal 也不是绕过网络访问要求的捷径。代理会发布所选后端提供的内容。参见[架构](https://tslink.md/zh/docs/architecture.md)、[代理目标](https://tslink.md/zh/docs/services.md)和[portal 访问](https://tslink.md/zh/docs/portal-requests.md)。

实际操作可以从[手机访问 agent UI](https://tslink.md/zh/docs/agent-ui-phone.md)或[带截止时间的单份 HTML 报告](https://tslink.md/zh/docs/private-html-report.md)开始。

以上 Tailscale 官方来源访问日期：**2026-10-07**。产品行为依据 TSLink v0.1.1。
