---
title: tailscale异地组网教程
published: 2025-03-11
tags: [网络, 教程]
category: 教程
draft: false
---

## 前言
[Tailscale](https://tailscale.com/) 是一种新型组网工具.
它能帮助我们把安装了`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后台配置文件](https://login.tailscale.com/admin/acls/file) 添加如下内容
```
        "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 |
