Linux 运维

Ubuntu无ROOT使用Tailscale实现异地组网和内网穿透

2026-01-10 3 min read 640 chars

配置手动启动

访问https://pkgs.tailscale.com/stable/#static选择对应处理器类的版本下载。

压缩包中可以得到类似'tailscale_1.92.5_amd64'的文件夹,其中包含'tailscale'、'tailscaled'等,将其解压至'/home/[username]/tailscale_1.92.5_amd64'路径。

首先启动守护程序,依次执行:

mkdir -p /home/[username]/.local/share/tailscale

# 启动 tailscaled(后台)
nohup /home/[username]/tailscale_1.92.5_amd64/tailscaled \
  --tun=userspace-networking \
  --state=/home/[username]/.local/share/tailscale/tailscaled.state \
  --socket=/home/[username]/.local/share/tailscale/tailscaled.sock \
  --socks5-server=127.0.0.1:1055 \
  --outbound-http-proxy-listen=127.0.0.1:1055 \
  > /home/[username]/.local/share/tailscale/tailscaled.log 2>&1 &

使用前需要先绑定账户:

/home/[username]/tailscale_1.92.5_amd64/tailscale --socket=/home/[username]/.local/share/tailscale/tailscaled.sock up

验证是否上线:

/home/[username]/tailscale_1.92.5_amd64/tailscale --socket=/home/[username]/.local/share/tailscale/tailscaled.sock status

端口暴露给 tailnet [可选]:

# tcp协议
/home/[username]/tailscale_1.92.5_amd64/tailscale --socket=/home/[username]/.local/share/tailscale/tailscaled.sock serve --tcp 2222 tcp://localhost:22

# http协议
/home/[username]/tailscale_1.92.5_amd64/tailscale --socket=/home/[username]/.local/share/tailscale/tailscaled.sock serve localhost:3000

查看当前暴露状态:

/home/[username]/tailscale_1.92.5_amd64/tailscale --socket=/home/[username]/.local/share/tailscale/tailscaled.sock serve status

关闭:

/home/[username]/tailscale_1.92.5_amd64/tailscale --socket=/home/[username]/.local/share/tailscale/tailscaled.sock serve reset

设置开机自启

  1. 启用用户驻留 (Linger) 默认情况下,用户级 systemd 服务只有在用户登录时才会启动,在用户登出时会关闭。启用 linger 可以让服务在系统开机时自动启动。 运行以下命令:
loginctl enable-linger [username]

可以通过 ls /var/lib/systemd/linger 查看是否生成了 [username] 文件来确认是否成功。

  1. 创建 Systemd 服务目录 为当前用户创建 systemd 配置目录:
mkdir -p ~/.config/systemd/user
  1. 创建 tailscaled 服务文件 使用习惯的编辑器(nano 或 vim)创建服务配置文件:
nano ~/.config/systemd/user/tailscaled.service

将以下内容粘贴进去:

[Unit]
Description=Tailscale Userspace Daemon
After=network.target

[Service]
Type=simple
# 启动 tailscaled 进程
ExecStart=/home/[username]/tailscale_1.92.5_amd64/tailscaled \
  --tun=userspace-networking \
  --state=/home/[username]/.local/share/tailscale/tailscaled.state \
  --socket=/home/[username]/.local/share/tailscale/tailscaled.sock \
  --socks5-server=127.0.0.1:1055 \
  --outbound-http-proxy-listen=127.0.0.1:1055

# 崩溃后自动重启
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target

保存并退出。

  1. 重新加载并启动服务 执行以下命令让 systemd 识别新服务,并设置为开机自启:
# 重新加载 user systemd 守护进程
systemctl --user daemon-reload

# 设置开机自启
systemctl --user enable tailscaled.service

# 立即启动服务 (启动前确保之前手动后台运行的 tailscaled 进程已经被 kill 掉)
systemctl --user start tailscaled.service
  1. 查看运行状态和日志 现在,tailscaled 已经被 systemd 托管了。
# 查看状态
systemctl --user status tailscaled.service

# 查看运行日志(替代 > tailscaled.log)
journalctl --user -u tailscaled.service -f

Comments.