Tailscale 使用实录
本文记录了使用 Tailscale 做虚拟局域网以及自建 derp 中继服务器。
Tailscale 是什么
Tailscale 是一种建立虚拟局域网的一个工具。通过它,你可以使用 SSO 登录(例如 AppleID, Google, Github 等)来加入虚拟局域网络从而使得你的设备(Win, Mac, Linux, IOS...)能够相互连接。
虚拟局域网的连接首先通过中继服务器(derp 服务器)建立点对点通信(打洞),若建立失败,则会进行加密中继的转发进行兜底。
Tailscale 是半开源性质的,可以在以下仓库找到相关信息。
可以用作内网穿透,能够在外网 SSO 登录后可以连接内网使用内网服务。
Tailscale 简单使用
tailscale 的使用十分简单,只需要按照官网按照不同的机器版本下载,按照指示加入网络即可。
加入成功后,你能在控制台中看到各机器分配的 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
搭建过程
先在域名服务商处将域名解析到服务器 IP
通过 LetsEncrypt Certbot 安装 https 证书:安装完毕后记录证书地址,
/etc/letsencrypt/<你的域名>
安装 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
在云服务器厂商安全组放行 80, 443, 3478 端口
可以在浏览器输入你的 derp 域名,看到以下信息就成功了
在 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, }, ], }, }, },
在终端验证:
tailscale netcheck
的信息能够看到你的 derp 服务器