===============
== ffff65535 ==
===============
十六个一[1111111111111111]

配置 Tailscale Peer Relay

tailscale peer-relay relay-server NAT DERP

在某些网络环境中(如严格 NAT 或防火墙限制),Tailscale 无法建立设备间的直连,会自动回退到使用其全球分布的 DERP 中继服务器。虽然 DERP 可靠,但可能引入较高延迟,影响大文件传输或高清视频串流等高吞吐场景。

Tailscale 自 v1.86 起支持 Peer Relay 功能:允许你指定 tailnet 内的某台设备作为中继节点,在无法直连时优先使用该节点转发流量,从而获得更低延迟与更高带宽。

本文将手把手教你完成 Peer Relay 的完整配置。


快速配置(推荐新手)

如果你从未修改过 ACL 策略(即当前策略仍为默认的“所有设备互访”模式),可以直接使用以下完整配置覆盖现有策略,无需单独执行步骤一和步骤三

{
	"tagOwners": {
		"tag:relay-server": ["autogroup:admin"]
	},
	"grants": [
		// 1. 允许所有节点互访(原本的规则)
		{
			"src": ["*"],
			"dst": ["*"],
			"ip": ["*"]
		},
		// 2. 核心:授权 tag:relay-server 节点作为 Peer Relay 运行
		{
			"src": ["*"],
			"dst": ["tag:relay-server"],
			"app": {
				"tailscale.com/cap/relay": []
			}
		}
	],
	"ssh": [
		{
			"action": "check",
			"src": ["autogroup:member"],
			"dst": ["autogroup:self"],
			"users": ["autogroup:nonroot", "root"]
		}
	]
}

✅ 此配置保留了默认的全通行为,同时安全地启用了 Peer Relay 能力。
🔁 若你已有自定义 ACL 规则,请勿直接覆盖,应按后续分步指南手动添加。


前提条件

  • Tailscale 账户具备 Owner / Admin / Network Admin 权限。
  • 至少一台设备运行 Tailscale 1.86+,且操作系统非 iOS 或 Apple TV。
  • 该设备需具备公网可达性(或至少对 tailnet 内其他设备可访问)并拥有稳定网络带宽。
  • 需开放一个 UDP 端口(例如 40000)用于中继流量。

步骤一:在 ACL 策略中定义新标签 tag:relay-server(仅当未使用快速配置时)

在 Tailscale 控制台的 ACL 策略编辑器(JSON 模式)中,添加以下内容:

{
  "tagOwners": {
    "tag:relay-server": ["autogroup:admin"]
  }
}

这表示只有管理员组可以为设备分配 tag:relay-server 标签。


步骤二:为中继节点打上 tag:relay-server 标签

  1. 访问 Machines 页面
  2. 找到你计划用作 Peer Relay 的设备,点击右侧 “…” → “Edit ACL tags…”
  3. Add tags 下拉框中选择 tag:relay-server
  4. 点击 Save 保存。

✅ 建议选择具有公网 IP 或位于稳定网络环境(如云服务器、家庭主路由)的设备作为中继节点。


步骤三:授权所有设备使用该中继节点(仅当未使用快速配置时)

在 ACL 策略的 grants 数组中添加以下规则:

{
  "src": ["*"],
  "dst": ["tag:relay-server"],
  "app": {
    "tailscale.com/cap/relay": []
  }
}

⚠️ 注意:虽然此处 src 使用了 *(方便测试),但在生产环境中建议限定为特定标签或 IP 段(如 tag:office),避免不必要的流量绕行。


步骤四:在中继节点上启用 Peer Relay 功能

登录到已打标签的中继设备,执行以下命令启用 UDP 40000 端口作为中继端口:

tailscale set --relay-server-port=40000

同时,请确保该设备的防火墙或安全组 放通 UDP 40000 入站流量(来源为 tailnet 内其他设备)。


步骤五:验证 Peer Relay 是否生效

选择两台原本走 DERP(即无法直连)的普通客户端设备(不要用中继节点本身,因其可能有公网 IP 能直连),执行:

tailscale status | grep peer-relay

若输出类似如下内容,说明已成功通过 Peer Relay 通信:

100.x.x.x   my-device          user@      linux    active; peer-relay y.y.y.y:40000:vni:1, tx ... rx ...

其中 y.y.y.y:40000 即为你配置的中继节点地址和端口。

你也可以使用 tailscale ping <目标设备> 观察连接路径是否变为 peer-relay


总结

通过配置 Tailscale Peer Relay,你可以在不依赖外部 DERP 服务器的情况下,利用自有设备构建低延迟、高吞吐的内网中继通道,特别适合:

  • 企业内网设备访问
  • 大文件同步(如 rsync、Syncthing)
  • 局域网媒体串流(如 Jellyfin、Plex)

📚 参考文档:Tailscale Peer Relays 官方指南


如需进一步优化策略安全性,建议结合 IP Sets、设备标签和最小权限原则精细化控制中继访问范围。