732 字
4 分钟
tailscale异地组网教程
前言
Tailscale 是一种新型组网工具. 它能帮助我们把安装了Tailscale
服务的机器,都放到同一个局域网内,实现内网互联。 即公司或者家里的 PC 机器连到同一网络,包括云服务器等等都能放到同一个局域网。 并且能够自动发现点对点直连,如果无法直连则会通过他的公共中继服务器来转发,他的公共网络我实测大概有30M
带宽,并且永久免费。 当然也可以自建中继服务器,本文有介绍。部署和使用过程都非常简单方便。
- 安卓,ios,windows,mac 直接官网下载即可
Docker部署
docker run -d \
--name tailscale \
--privileged \
--network host \
--restart always \
-v $(pwd)/tailscale:/var/lib/tailscale \
tailscale/tailscale:latest \
tailscaled --state=/var/lib/tailscale/tailscaled.state
进入容器:
docker exec -it tailscale sh
生成登录链接:
tailscale up
(可选)使用密钥连接:
tailscale up --auth-key=<你的AuthKey>
查看中继网络
tailscale netcheck
查看是否点对点直连
tailscale status
如果看到relay "tok"
则说明使用了公共中继连接,tok
代表日本公共节点
指定密钥运行
docker-compose.yml
services:
tailscale:
image: tailscale/tailscale:latest
container_name: tailscale
privileged: true
network_mode: host
restart: always
volumes:
- ./tailscale:/var/lib/tailscale
command:
- tailscaled
- --state=/var/lib/tailscale/tailscaled.state
- --tun=tailscale0
- --auth-key=你的AuthKey
宿主机部署
# 安装
sudo apt install tailscale -y
# 登录
sudo tailscale up
# 查看运行状态
sudo systemctl status tailscaled
# 开机自启
sudo systemctl enable tailscaled
# 停止运行
sudo systemctl stop tailscaled
# 重启
sudo systemctl restart tailscaled
# 查看日志
sudo journalctl -u tailscaled -f
自建derper
中继服务器
自动申请证书
services:
derper:
image: fredliang/derper:latest
container_name: derper
restart: unless-stopped
environment:
- DERP_DOMAIN=derper.your-domain.com # 替换为您的域名
- DERP_CERT_MODE=letsencrypt
- DERP_STUN=true
- DERP_HTTP_PORT=80
- DERP_ADDR=:443
- DERP_VERIFY_CLIENTS=true # 本地 tailscaled 实例验证客户端,只允许自己使用
ports:
- "80:80"
- "443:443"
- "3478:3478/udp"
volumes:
- ./certs:/app/certs # 证书持久化存储
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
手动配置证书
services:
derper:
image: fredliang/derper:latest
container_name: derper
restart: unless-stopped
environment:
- DERP_DOMAIN=derper.your-domain.com # 替换为您的域名
- DERP_CERT_MODE=manual
- DERP_CERT_DIR=/app/certs
- DERP_STUN=true
- DERP_HTTP_PORT=80
- DERP_ADDR=:443
- DERP_VERIFY_CLIENTS=true # 通过本地 tailscaled 实例验证客户端
ports:
- "80:80"
- "443:443"
- "3478:3478/udp"
volumes:
- ./certs:/app/certs # 手动挂载证书
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
修改Tailscale后台配置文件 添加如下内容
"derpMap": {
"OmitDefaultRegions": true,
// OmitDefaultRegions 忽略官方的中继节点
"Regions": {
// 这里的 901 从 900 开始随便取数字
"901": {
// RegionID 和上面的相等
"RegionID": 901,
// RegionCode 名称
"RegionCode": "Vultr-SG",
"Nodes": [
{
// Name 保持 1不动
"Name": "1",
// 这个也和 RegionID 一样
"RegionID": 901,
// 域名
"HostName": "<你的域名>",
// 端口号
"DERPPort": 443,
},
],
},
},
},
Docker变量 | 必需 | 描述 | 值 |
---|---|---|---|
DERP_DOMAIN | 是 | derper 服务器主机名 | your-hostname.com |
DERP_CERT_DIR | 否 | 存储证书的目录 (如果地址端口是 :443) | /app/certs |
DERP_CERT_MODE | 否 | 获取证书的模式。可选项: manual, letsencrypt | letsencrypt |
DERP_ADDR | 否 | 服务器监听地址 | :443 |
DERP_STUN | 否 | 是否同时运行 STUN 服务器 | true |
DERP_HTTP_PORT | 否 | 提供 HTTP 服务的端口。设置为 -1 禁用 | 80 |
DERP_VERIFY_CLIENTS | 否 | 是否通过本地 tailscaled 实例验证此 DERP 服务器的客户端 | false |