Tailscale Peer Relay 实战指南,让内网穿透更稳更快

本文最后更新于 61 天前, 如有失效请评论区留言.

使用 copilot.microsoft.com 生成

我已经配置了,由于我的网络最近过于流畅没法体验,没有经过 peer relay 节点 😂,整体操作是没有问题,可以放心食用

在使用 Tailscale 的过程中,我们经常会遇到这样的问题:

  • 某些节点在 NAT、防火墙或弱网环境下,P2P 直连失败,只能走官方 DERP 中继,速度偏慢、延迟偏高
  • 小厂国内大带宽节点需要实名备案,使用不方便
  • 大厂国内水管节点能用,仅限于能用

上面的还需要依赖 DERP 中继,但是最近 Tailscale Peer Relay(对等中继)提供公开测试,
它允许你在自己的 Tailnet 中选一台网络条件好的节点,作为专属中继,让其他设备通过它转发流量,从而实现更快、更稳定的内网穿透体验。免费用户也可以有两个中继节点

Peer Relay 简介

一句话解释:

Peer Relay 是你自己控制的私有中继节点,它替代官方 DERP,为 Tailnet 内部节点中转加密流量。

这意味着你可以在靠近设备的地区部署中继,减少绕行路径,让连接速度更快。

具体可以查阅官方邮件公告 Introducing Tailscale Peer Relays

要求

你需要:

  • 默认已经安装好了 Tailscale
  • 所有设备属于同一个 Tailnet
  • 其中有一台网络良好的机器,我们称它为 锐驰 A(应该大家都人手一台锐驰 A 吧)

如果 Debian 系安装 Tailscale 有问题可以参考 tailscale 部署加速

在锐驰 A 上启用 Peer Relay

执行命令(以 UDP 44400 端口为例):

tailscale set --relay-server-port 44400

由于使用的腾讯云锐驰机器,还需要单独放行 UDP44400 端口,其他云也类似

配置防火墙

完成后请确保:

  • 锐驰 A 的 UDP 44400 端口已在防火墙或云安全组中放行
  • 该节点运行的 Tailscale 版本 ≥ 1.86 (目前最新 1.90.6,最近更新特别快,问题也有点多 😂)

这样,锐驰 A 就具备了中继能力

在后台配置 Access Controls

打开 Tailscale 管理后台,编辑 Access controls。
在 ACL 文件中添加以下配置:

官方推荐写法(使用标签管理)

在锐驰 A 上给它打上标签:

tailscale up --advertise-tags=tag:relay

然后在 Access Controls 中添加规则

{
  "grants": [
    {
      "src": ["tag:mjj"],
      "dst": ["tag:relay"],
      "app": {
        "tailscale.com/cap/relay": []
      }
    }
  ]
}

配置说明:

  • src:哪些节点可以使用中继(这里用 tag:mjj 分组管理)
  • dst:哪些节点可作为中继(用标签 tag:relay 标识)
  • "app": {"tailscale.com/cap/relay": []}:授予中继功能权限

这种方式可扩展性最好。后续新增中继节点时,只需打上 tag:relay 即可自动生效。

指定单个节点

我个人推荐使用,不建议使用 Tag,tag 标签功能会影响 tailscale file, 这个是我最常用功能之一。

如果你想让使用单个中继节点,可以写成:

"grants": [
		{
			"src": ["*"], // Devices that can be accessed through the peer relay
			"dst": ["100.90.80.20"], // Devices functioning as peer relays for the src devices
			"app": {
				"tailscale.com/cap/relay": [], // The relay capability doesn't require any parameters
			},
		},
	]

规则配置

配置说明:

  • 100.90.80.20 为锐驰 A 的 IP

主要参考官方文档 kb/1591/peer-relays

验证是否生效

tailscale ping <目标节点>

如果输出中出现 “via peer-relay”,表示连接确实经过中继节点。

进阶玩法

  • 与 Exit Node 结合: 让中继节点同时充当出口节点,实现统一外网出口
  • 多中继负载与分区: 不同区域的设备可绑定各自的中继节点,优化跨区访问
  • 替代 DERP: 对企业内网或跨云架构,可完全用私有 Peer Relay 取代官方/自建中继,减少延迟

找一台网络最好的节点,开启 Peer Relay, 让你的 Tailscale 网络快如闪电

Sponsor

Like this article? $1 reward

Comments

·v1 韩国 Reply

我是mac尝试访问我的安卓pad,ping之后发现是drep,延迟一秒以上,我就尝试用自己的阿里云作为中继,mac访问阿里云是直连,只有14毫秒的延迟

·v1 韩国 Reply

tailscale status | grep peer-relay 设置以后查看状态,没有任何的输出,真是奇怪,access也配置了全通策略,目标指定ip

ysicing ·v1 约旦 Reply

@黄 使用ping才能看出来,如果你的机器能直连就不会走中继

·v1 中国重庆联通 Reply

我参考你的文档和官方文档设置了专属ip的中继能力,也开启了服务器的端口全通策略,就是死活不成功。 备注 官方语法更新了,serverport=44400,不是空格了

ysicing ·v1 美国 Reply

@黄 最新版本可以指定固定中继。之前如果你的网络很好这个中继只是一个兜底功能,很难验证,我然后找了个国内ipv4_only 中转集群ipv4/ipv6,境外ipv6_only机器才看到效果😂

壹加零 ·v1 亚太地区 Reply

p2p方案,我试用过Tailscale/n2n/easytier 我更佳推荐easytier这是国内做的开源项目

ysicing 👨‍💻 ·v1 Reply

@壹加零 主要Tailscale跟k3s集成很方便,我现在也是用easytier补充,另外easytier macOS客户端的支持也不太原生,