2.4 KiB
Executable File
2.4 KiB
Executable File
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 206487(userspace 模式) |
| Socket 文件 | ✅ /home/muc/.local/tailscale/tailscaled.sock(srwxrwxrwx) |
| 验证方式 | 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 穿透和加密隧道