Skip to content

Tailscale 使用实录

838字约3分钟

tailscaleletsEncryptvlan

2024-11-24

本文记录了使用 Tailscale 做虚拟局域网以及自建 derp 中继服务器。

Tailscale 是什么

Tailscale 是一种建立虚拟局域网的一个工具。通过它,你可以使用 SSO 登录(例如 AppleID, Google, Github 等)来加入虚拟局域网络从而使得你的设备(Win, Mac, Linux, IOS...)能够相互连接。

虚拟局域网的连接首先通过中继服务器(derp 服务器)建立点对点通信(打洞),若建立失败,则会进行加密中继的转发进行兜底。

Tailscale 是半开源性质的,可以在以下仓库找到相关信息。

可以用作内网穿透,能够在外网 SSO 登录后可以连接内网使用内网服务。

Tailscale 简单使用

tailscale 的使用十分简单,只需要按照官网按照不同的机器版本下载,按照指示加入网络即可。

image-20241124211658555

加入成功后,你能在控制台中看到各机器分配的 IPv4 地址(100.64.0.0 到 100.127.255.255 为私有网段),在这里登录好后就可以在终端输入 ping <分配的 IP> 来测试连接性了。如果你在服务器上部署了类似 Nginx 的服务,那么就可以在浏览器输入对应的 IP 来访问 WEB 服务了。

如果你将你的域名 DNS 解析为这个私有的 IPv4,那么就能够实现只有通过 SSO 登录才能够访问到域名网站的效果。

Tailscale derp 服务器搭建

前面说到,Tailscale 通过官方服务器进行 SSO 登录,在登录成功后经过官方 derp 服务器进行点对点连接或者中继连接。官方 derp 服务器遍布在全球,但中国大陆没有对应的服务器,所以为了能够有稳定的连接(官方提到,流量本是加密的,所以对安全性没有什么额外帮助),自建 derp 服务器。

在自建 derp 服务器时需要准备好:

  • 一个已备案的域名
  • 一个服务器,安装好 docker

搭建过程

  1. 先在域名服务商处将域名解析到服务器 IP

  2. 通过 LetsEncrypt Certbot 安装 https 证书:安装完毕后记录证书地址,/etc/letsencrypt/<你的域名>

    image-20241124213626332

  3. 安装 docker 镜像并启动容器,以下 443 就是 derp 服务器所在的端口

    docker run \
    -e DERP_DOMAIN=<你的域> \
    -e DERP_CERT_DIR=<步骤 2 的地> \
    -p 80:80 -p 443:443 -p 3478:3478/udp \
    fredliang/derper
  4. 在云服务器厂商安全组放行 80, 443, 3478 端口

  5. 可以在浏览器输入你的 derp 域名,看到以下信息就成功了

    image-20241124214738020

  6. 在 tailscale 控制台加入配置信息,将你的 Tailscale 账号的中继服务器切换至你的 derp 服务器

    	"derpMap": {
    		"OmitDefaultRegions": true, // 忽略官方的 derp
    		"Regions": {
    			"901": { // Region ID 从 901 开始
    				"RegionID":   901,
    				"RegionCode": "shanghai-tcy", // 名字
    				"Nodes": [
    					{
    						"Name": "1",
    						"RegionID": 901,
    						"HostName": "<你的域名>", // 域名
    						"DERPPort": 443,
    					},
    				],
    			},
    		},
    	},

    image-20241124215106381

  7. 在终端验证:tailscale netcheck 的信息能够看到你的 derp 服务器

    image-20241124215246071