Tailscale SSH隧道打洞

架构

  • tailscale官方服务
    • 中心点:官方节点发现服务器
    • 客户端:每个设备包括本地服务器也是一个端点,google登录每个节点,同一个账号下形成互通
    • 官方子域名/公网IP,无损直接ssh使用
    • 非常流畅,无需代理
  • headscale私有化
    • 中心点:headscale申请端口,headscale-admin管理后台
    • 客户端:向私有中心端口发起申请,后台点同意
    • 未部署,不知道实际怎么样
  • 优先建立点对点,托底中转服务
  • 登录凭证可保存复用

docker-compose.yml

services:
  tailscale:
    image: tailscale/tailscale:stable # 使用官方长期维护的稳定版标签
    container_name: tailscale
    restart: always
    privileged: true                  # 必须:给予网络管理特权以创建 tun 虚拟网卡
    network_mode: "host"              # 必须:使用 host 模式实现最优的 P2P 穿透打洞性能

    # 👇 新增下面这两个环境变量,彻底关掉临时节点模式
    environment:
      - TS_EPHEMERAL=false
      - TS_STATE_DIR=/var/lib/tailscale
      # 👇 强行清空容器内的代理环境变量,让它走原生非代理网络(国内大部分时间可以直接握手)
      - HTTP_PROXY=
      - HTTPS_PROXY=
      - http_proxy=
      - https_proxy=

    volumes:
      - ./data/tailscale:/var/lib/tailscale  # 核心持久化:保存设备证书和状态,防止重启后重连/变成新设备
      - /dev/net/tun:/dev/net/tun             # 必须:映射宿主机的网络隧道设备
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro       # 严格统一时区,防止证书因时间错乱失效

    # 资源约束:防止由于网络风暴、DDoS或异常流量压垮公司服务器
    deploy:
      resources:
        limits:
          cpus: '0.50'       # 限制最多使用 50% 的单核 CPU
          memory: 256M       # 限制最多使用 512MB 内存