Tailscale 官方内置了很多 DERP 中继服务器,分步在全球各地,但不包含中国大陆,这就导致了流量通过 DERP 服务器进行中继时的延时较高。为了提升使用体验,我们可以参考 Tailscale 官方文档自建私有的 DERP 中继服务器。
01 在服务器中安装 Tailscale 客户端
根据官方教程,使用以下命令即可在 Linux 系统中安装 Tailscale 客户端:
安装成功后,使用命令tailscale up
启动服务,第一次启动时需要根据提示访问指定网址以完成账户认证。
100.64.0.0/10
内网网段对内提供 DNS 等服务的机器,需要添加命令禁止 Tailscale 修改 iptables 规则,否则会因为两者使用的内网网段冲突,Tailscale 会添加规则把所有对外的 100.64.0.0/10 请求都 drop 掉,只允许走自己搭建的虚拟内网,导致一些服务出现故障。修改后的命令如下:
02 部署 DERP 中继服务
安装Golang:
部署 DERP 中继服务:
记得开放33445
TCP 端口和3478
UDP 端口~
之后设置开机自启,复制以下全部内容到命令行粘贴:
之后在终端依次执行systemctl enable derp
和systemctl start derp
以设置开机自启和启动服务。
那么现在,就可以进行测试啦——访问 https://ip:33445
(例如:https://180.160.3.56:33445
),如果出现如下页面,且地址栏的 SSL 证书标签显示正常可用,那就说明 Tailscale 的 DERP 中继服务部署成功啦!
如果没有成功,请检查域名是否正确解析、是否为域名正确设置 SSL 证书以及端口3478
和33445
在安全组/防火墙中是否已经被放行等项目。
03 配置 Tailscale
进入 Tailscale 的 Access controls 页面来修改配置,将以下内容追加到原配置文件中并保存配置即可:
此后,我们可以在任意设备中通过终端命令来验证 DERP 中继服务的连接情况,例如,在 Linux 系统中可使用命令tailscale netcheck
,可见,延迟真的非常非常低,只有7.4毫秒:
参考资料
[3] 使用Docker + Traefik + Derper 自建 Tailscale 中继服务器完整教程 (jungley.net)
[4] Tailscale 基础教程:部署私有 DERP 中继服务器 · 云原生实验室 (icloudnative.io)
[5] 搭建Tailscale中继节点|白嫖DERP中继节点|低调分享 - 爱墨迹 (imgki.com)
[6] 我的服务器系列:tailscale使用自定义derper服务器(docker部署) - 且炼时光 (always200.com)
版权属于:Angus
本文链接:https://blog.angustar.com/archives/Tailscale-DERP.html
所有原创文章采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。 您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
13 条评论
作者的布局谋篇匠心独运,让读者在阅读中享受到了思维的乐趣。
若能弱化说教语气,传播效果会更好。
文章的确不错啊
看的我热血沸腾啊
自建了以后能连上,但是ping不通了是啥原因?
请问,使用这种方式自建会有安全问题吗(指的是云服务器被入侵这种)。
他这个derp服务器应该就是一个类似于FRP内网穿透的转发的服务器吧?那是不是别人发现了你的DERP服务他也能白嫖你的(╯‵□′)╯︵┴─┴
对了,大家使用qnap或者群晖nas的时候,最好用非docker的方式部署一个tailscale,不然可能会出现远程改docker配置导致docker engine启动失败,然后所有内网穿透手段就GG了的尴尬情况。别问我咋知道的。
博主,go里面的文件链接是错的。少东西了
感谢,按照博主的方法成功搭建中转节点,非常适合小白用户。
需要给其他小白一点提示,最后在Access controls追加配置时候,实际上是将博主的内容粘贴在原配置最后一个括号之前,在这里卡了好久😂。
另外想请教一下博主,一般免费域名是3个月的有效期,是否意味着每3个月需要更新一下ssl证书并重启一下容器?
Sorry,最近比较忙,刚刚才看到
感谢提醒,我回头修改下文章,另外,使用免费证书的话,确实需要每3个月更新一下SSL证书并重启一下容器……我之前发文的时候还能在腾讯云申请一年的免费证书呢……
https://derp.example.com:16789
能正常显示,tailscale netcheck也能看到自建节点,但是实际使用上无法连接,不知道是什么情况我最近更新了教程,完全舍弃 Docker 容器部署的方式(太容易部署失败了…),您有兴趣的话可以参考最新的教程来试一下,我这边是可以部署成功的
确定下3478的UDP端口已经开放了嘛…我只能想到是这个问题了