948 字
5 分钟
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 |
子网路由
192.168.3.0/24根据自己需求更改,添加子网路由后,192.168.3.0/24网段的所有设备都能直接访问tailscale中的其他设备,无需安装tailscale
开启子网路由:
tailscale up --advertise-routes=192.168.3.0/24 --accept-routes --reset开启后,在tailscale后台找到你路由器设备,点击右侧菜单(三个点),选择Edit route settings...,勾选192.168.3.0/24,点击Save。
然后输入以下命令查看是否存在你广播的IP段
tailscale status --json | grep advertisedRoutes能看到你广播的网段就说明成功了,但是这个检查方式不准确,最好还是手动ping测试
需要注意的坑
子网路由功能依赖iptables,immortalwrt默认防火墙不是这个,需要安装iptables,immortalwrt默认不会让 LAN 网段流量被转发到tailscale0,需要手动加。
需要启用 IP 转发,请确保已经启用。
tailscale异地组网教程
https://blog.emohe.cn/posts/tailscale/