732 字
4 分钟
tailscale异地组网教程
2025-03-11

前言#

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_DOMAINderper 服务器主机名your-hostname.com
DERP_CERT_DIR存储证书的目录 (如果地址端口是 :443)/app/certs
DERP_CERT_MODE获取证书的模式。可选项: manual, letsencryptletsencrypt
DERP_ADDR服务器监听地址:443
DERP_STUN是否同时运行 STUN 服务器true
DERP_HTTP_PORT提供 HTTP 服务的端口。设置为 -1 禁用80
DERP_VERIFY_CLIENTS是否通过本地 tailscaled 实例验证此 DERP 服务器的客户端false
tailscale异地组网教程
https://emohe.cn/posts/24/
作者
阿涛の小破站
发布于
2025-03-11
许可协议
CC BY-NC-SA 4.0