Administrator
发布于 2024-11-04 / 16 阅读
0
1

Tailscale组建大内网

首先感谢大佬的探路以及Docker镜像!

https://icloudnative.io/posts/how-to-set-up-or-migrate-headscale

https://icloudnative.io/posts/custom-derp-servers

Tailscale是什么

Tailscale 是一种基于 WireGuard 的虚拟组网工具,和 Netmaker 类似,最大的区别在于 Tailscale 是在用户态实现了 WireGuard 协议,而 Netmaker 直接使用了内核态的 WireGuard。所以 Tailscale 相比于内核态 WireGuard 性能会有所损失,但与 OpenVPN 之流相比还是能甩好几十条街的,Tailscale 虽然在性能上做了些许取舍,但在功能和易用性上绝对是完爆其他工具:

  • 开箱即用
  • 无需配置防火墙
  • 没有额外的配置
  • 高安全性/私密性
  • 自动密钥轮换
  • 点对点连接
  • 支持用户审查端到端的访问记录
  • 在原有的 ICE、STUN 等 UDP 协议外,实现了 DERP TCP 协议来实现 NAT 穿透
  • 基于公网的控制服务器下发 ACL 和配置,实现节点动态更新
  • 通过第三方(如 Google) SSO 服务生成用户和私钥,实现身份认证
  • 简而言之,我们可以将 Tailscale 看成是更为易用、功能更完善的 WireGuard

Tailscale 是一款商业产品,但个人用户是可以白嫖的,个人用户在接入设备不超过 100 台的情况下是可以免费使用的(虽然有一些限制,比如子网网段无法自定义,且无法设置多个子网)。除 Windows 和 macOS 的图形应用程序外,其他 Tailscale 客户端的组件(包含 Android 客户端)是在 BSD 许可下以开源项目的形式开发的,你可以在他们的 GitHub 仓库找到各个操作系统的客户端源码。

对于大部份用户来说,白嫖 Tailscale 已经足够了,如果你有更高的需求,比如自定义网段,可以选择付费,也可以自行研究https://github.com/juanfont/headscale。本文暂且不作研究。

安装使用

非常简单,直接到官网:https://tailscale.com/

根据提示按步骤操作即可。注意:白嫖用户只能通过第三方账号登陆,实际使用没有影响。

自建DERP(可以不需要自签证书)

Tailscale 官方内置了很多 DERP 服务器,分步在全球各地,惟独不包含中国大陆,原因你懂得。这就导致了一旦打洞失败,流量通过 DERP 服务器进行中继,延时就会非常高。但是也有成熟的解决方案,即自建DERP中继服务器。

经过实测,配置要求很低,512M内存足矣。且国内机器可以不使用备案域名或者自签证书。如果你有备案域名或者使用海外机器,请参考上面大佬的博客参照部署。

安装DERP

此处使用 https://github.com/yangchuansheng/ip_derper 提供的镜像快速搭建,请提前安装好 docker 服务。安装Docker可以参考https://u.sb/debian-install-docker/

直接Docker一把梭

docker run --restart always -d --name derper -p 43443:443 -p 3478:3478/udp ghcr.io/yangchuansheng/ip_derper

测试是否自建成功

浏览器访问 https://<服务器公网ip>:43443,忽略证书安全看到下面内容表示安装成功

DERP

This is a Tailscale DERP server.

It provides STUN, interactive connectivity establishment, and relaying of end-to-end encrypted traffic for Tailscale clients.

Documentation:

配置 Tailscale

登录Tailscale后,找到Access Controls,填写以下内容

{
	"derpMap": {
		"Regions": {
			"912": { // 这个节点里面的912随便填,900以上即可
				"RegionID":   912,
				"RegionCode": "derper_self",
				"RegionName": "Derper Self",
				"Nodes": [
					{
						"Name":     "derper_self",
						"RegionID": 912,
						"DERPPort": 43443, // 更换为自己的端口号
						"STUNPort": 43478,
            
						// "HostName": "derper.example.com",    // 若使用域名,可去掉IPv4,改为使用此 HostName 参数
						"IPv4":  "112.xx.xx.xx", // 更换为自己的 公网IP

						"InsecureForTests": true,
					},
				],
			},
		},
	},
}

保存后在 Tailscale 客户端上使用tailscale netcheck命令查看目前可以使用的 DERP 服务器,结果中有你自建的服务器即自建成功。

防止被白嫖

默认情况下 DERP 服务器是可以被白嫖的,只要别人知道了你的 DERP 服务器的地址和端口,就可以为他所用。

在你搭建DERP的服务器上安装Tailscale并启动服务

具体步骤参考官网,很详细了,不再重复。

derper 启动时加上参数 --verify-clients。

docker run --restart always -d --name derper -p 43443:443 -p 3478:3478/udp -v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock -e DERP_VERIFY_CLIENTS=true ghcr.io/yangchuansheng/ip_derper


评论