xiaowei-system/skills/devops/hermes-debug/references/tailscale-debug-20260517.md

2.4 KiB
Executable File
Raw Blame History

Tailscale 排查记录2026-05-17

问题

Tailscale 显示登录状态,但 tailscale status / tailscale ip -4 无法连接其他机器。

排查过程

1. tailscaled 未运行

tailscale status → "failed to connect to local tailscaled; it doesn't appear to be running"

解决bashrc 里有启动脚本,pgrep tailscaled 确认 daemon 在跑PID 206487

2. userspace-networking 模式 + socket 路径冲突(核心问题)

症状tailscale status 报连不上 /var/run/tailscale/tailscaled.sock

根因

  • tailscaled 用 --socket=/home/muc/.local/tailscale/tailscaled.sock(自定义路径)
  • tailscale CLI 硬编码连 /var/run/tailscale/tailscaled.sock(默认路径)
  • /var/run/tailscale/ 需要 root 才能创建sudo 无密码无法执行

验证 socket 是否正常Python 直接调用):

import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect('/home/muc/.local/tailscale/tailscaled.sock')
sock.sendall(b'GET /localapi/v0/status HTTP/1.0\r\nHost: localapi\r\n\r\n')
data = sock.recv(4096)
# Response: HTTP/1.0 403 Forbidden → socket 工作正常CLI 只是路径对不上

3. 解决方案

方案A推荐:一次性创建 socket 目录

sudo mkdir -p /var/run/tailscale
sudo chown $USER /var/run/tailscale
# 然后 kill 旧 daemon重新用默认 socket 路径启动

方案B:继续用自定义 socket但用环境变量tailscale CLI 不支持 --socket flag只有 env var TAILSCALED_SOCKET,且仍需 --socket 给 daemon

方案C:用 systemd 管理 tailscaled自动处理目录和权限

sudo systemctl enable --now tailscaled

关键发现

项目
tailscaled 在跑 PID 206487userspace 模式)
Socket 文件 /home/muc/.local/tailscale/tailscaled.socksrwxrwxrwx
验证方式 Python 直接连接 socket → HTTP 403 = 正常
CLI 找不到 硬编码 /var/run/tailscale/tailscaled.sock
修复 需 sudo 创建 /var/run/tailscale

注意事项

  • userspace-networking 模式不创建真实网卡,只能作为 exit node不能用 Tailscale IP 直接绑定服务
  • 如果需要 Tailscale IP 绑定(如 tailscale serve),需要真实 TUN 模式 + sudo
  • 当前家里服务器用 userspace 模式,主要用途是 NAT 穿透和加密隧道