news 2026/7/7 1:33:57

【记录】Tailscale|部署 Tailscale 到 linux 主机或 Docker 上

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【记录】Tailscale|部署 Tailscale 到 linux 主机或 Docker 上

文章目录

  • 🐧 Linux 与 Docker 环境下 Tailscale 异地组网全攻略:从宿主机到容器内的极致部署
    • 一、 为什么选择 Tailscale?
    • 二、 场景一:Linux 宿主机直接部署
      • 1. 一键安装
      • 2. 启动与认证
      • 3. 进阶参数(可选)
    • 三、 场景二:Docker 容器内由零构建(进阶技巧)
      • 📋 准备工作
      • 🚀 步骤详解
        • 第一阶段:环境构建与后台启动
        • 🔐 认证步骤(需要在浏览器中操作)
        • 第二阶段:验证与收尾
      • ⚠️ 注意事项
    • 四、 常用维护命令速查

🐧 Linux 与 Docker 环境下 Tailscale 异地组网全攻略:从宿主机到容器内的极致部署

在当今的云原生和远程办公时代,异地组网内网穿透是开发者绕不开的话题。相比于传统的 OpenVPN 或 IPSec,Tailscale基于先进的WireGuard®协议,以其“零配置”、“高安全性”和“打洞能力强”著称。

本文将详细介绍如何在 Linux 宿主机以及复杂的 Docker 容器环境中部署 Tailscale,特别是针对容器内无特权模式下的特殊启动方案。

🔗官方资源
Windows、macOS 或 iOS 等其他平台的客户端下载页:https://tailscale.com/download


一、 为什么选择 Tailscale?

在开始部署之前,简单聊聊为什么它是目前的首选方案:

  • 基于 WireGuard:轻量级、低延迟,内核态执行,性能极佳。
  • NAT 穿透(P2P):Tailscale 的 DERP 中继服务器能帮助处于不同复杂网络环境下的设备建立直连。
  • ACL 访问控制:企业级的访问控制策略。
  • MagicDNS:直接通过机器名访问,无需记 IP。

二、 场景一:Linux 宿主机直接部署

这是最常见的场景,适用于云服务器、NAS 或个人 Linux 电脑。

1. 一键安装

Tailscale 官方提供了一个非常方便的安装脚本,会自动检测发行版(Ubuntu/CentOS/Debian 等)并安装:

curl-fsSL https://tailscale.com/install.sh|sh

2. 启动与认证

安装完成后,启动服务并获取登录链接:

sudotailscale up

复制终端输出的链接,在浏览器中打开并使用账号登录即可。

3. 进阶参数(可选)

如果你希望将这台 Linux 作为出口节点(Exit Node),即让其他设备通过这台机器上网,可以使用以下命令启动:

sudotailscale up --advertise-exit-node

注:启动后需在 Tailscale 管理后台的 Machines 列表中开启该路由。


三、 场景二:Docker 容器内由零构建(进阶技巧)

在某些受限环境中(例如:你只有一个正在运行的容器的 Shell 权限,无法修改docker run参数,或者不想挂载宿主机的/var/run/tailscale/),我们需要在容器内部手动构建Tailscale 环境。

由于容器通常默认没有/dev/net/tun设备,且没有特权(Privileged),直接安装通常会报错。我们需要使用Userspace Networking(用户态网络)模式来绕过内核限制。

📋 准备工作

请直接进入容器的bash终端。

🚀 步骤详解

Docker 内额外安装 Tailscale 需要进行一个比较复杂的设备节点配置。为了方便操作,我将步骤整理为两个阶段。

第一阶段:环境构建与后台启动

直接复制粘贴如下指令块:

# 1. 安装 Tailscale 二进制文件curl-fsSL https://tailscale.com/install.sh|sh# 2. 创建必要的目录(容器内可能缺失)mkdir-p /dev/net# 3. 创建 TUN 设备节点# c 代表字符设备,10 和 200 是主次设备号if[!-c /dev/net/tun];thenmknod/dev/net/tun c10200fi# 4. 设置设备权限,确保当前用户可读写chmod600/dev/net/tun# 5. 清理可能存在的旧进程(防止重复启动)pkill-f tailscaled2>/dev/null||true# 6. 等待清理完成sleep2# 7. 启动 Tailscale 守护进程# 关键参数:--tun=userspace-networking# 作用:启用用户态网络模式,绕过对内核 TUN 模块的强依赖,适合非特权容器tailscaled --tun=userspace-networking --socket=/tmp/tailscale.sock --state=/tmp/tailscale.state2>&1&# 8. 等待服务启动sleep5# 9. 检查服务是否运行ifpsaux|grep'[t]ailscaled'>/dev/null;thenecho"✅ Tailscaled 服务启动成功"elseecho"❌ Tailscaled 启动失败,请检查日志"fi# 10. 获取认证 URL(复制输出的链接到浏览器中打开)tailscale --socket=/tmp/tailscale.sock up
🔐 认证步骤(需要在浏览器中操作)

用户操作指南:

  1. 复制第 10 步输出的 URL(格式通常为:https://login.tailscale.com/a/xxxxxxxxxx)。
  2. 在浏览器中打开该 URL。
  3. 使用你的 Tailscale 账户登录。
  4. 点击Connect授权设备加入网络。

第二阶段:验证与收尾

认证成功后,回到终端继续执行以下命令来确认状态并安全退出:

# 11. 等待认证状态同步sleep5# 12. 验证连接状态tailscale --socket=/tmp/tailscale.sock status# 13. 查看分配的 Tailscale IPTS_IP=$(tailscale --socket=/tmp/tailscale.sockip)echo"本机 Tailscale IP:$TS_IP"# 14. 将进程脱离终端控制以便安全退出 Shell# 这样当你关闭 docker exec 的终端时,VPN 服务不会中断TAILSCALE_PID=$(psaux|grep'[t]ailscaled'|awk'{print $2}')disown$TAILSCALE_PID2>/dev/null||true# 15. 最终连通性测试tailscale --socket=/tmp/tailscale.sockip-4echo"✅ Tailscale 配置完成!可以安全退出终端。"

⚠️ 注意事项

  • 持久化问题:这种方式在容器内是临时的。如果容器重启(Restart),上述步骤需要重新执行。如果需要长期运行,建议将上述脚本写入DockerfileENTRYPOINT或使用 Supervisor 管理。
  • Socket 指定:注意所有命令都带了--socket=/tmp/tailscale.sock,这是因为我们将 socket 文件放在了/tmp目录下,而非默认系统目录,防止权限问题。

四、 常用维护命令速查

配置完成后,以下命令对排错非常有帮助:

  • 查看其他节点状态
    tailscale status
  • 检查网络连通性
    tailscaleping<目标机器名或IP>
  • 在不同设备间传文件(Taildrop)
    tailscalefilecp<文件名><目标机器名>:

本账号所有文章均为原创,欢迎转载,请注明文章出处:https://shandianchengzi.blog.csdn.net/article/details/157212469。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 3:42:22

Qwen3-1.7B高并发部署案例:多用户访问性能优化策略

Qwen3-1.7B高并发部署案例&#xff1a;多用户访问性能优化策略 Qwen3-1.7B 是通义千问系列中的一款轻量级大语言模型&#xff0c;具备出色的推理能力与响应速度。它在保持较小参数规模的同时&#xff0c;依然能够支持复杂任务的生成与理解&#xff0c;非常适合用于需要快速部署…

作者头像 李华
网站建设 2026/7/1 20:23:19

学习干货_从迷茫到前行:我的网络安全学习之路

网络安全成长之路&#xff1a;从零基础到实战专家的学习指南&#xff08;建议收藏&#xff09; 本文作者"州弟"分享了自己从网络安全小白成长为专业人员的经历。他强调破除"学生思维"&#xff0c;通过实践而非死记硬背学习&#xff1b;推荐扎实掌握Linux、…

作者头像 李华
网站建设 2026/6/26 12:19:14

fft npainting lama混合精度训练配置:AMP加速收敛技巧

fft npainting lama混合精度训练配置&#xff1a;AMP加速收敛技巧 1. 引言&#xff1a;图像修复的工程实践与性能优化需求 在图像修复任务中&#xff0c;fft npainting lama 已成为当前主流的开源方案之一。它基于深度卷积网络和傅里叶空间特征建模&#xff0c;在物体移除、水…

作者头像 李华
网站建设 2026/7/2 7:52:44

【Boost.Asio网络编程效率提升10倍】:异步I/O模型底层原理全解析

第一章&#xff1a;Boost.Asio网络编程的核心优势与应用场景 Boost.Asio 是一个基于 C 的跨平台库&#xff0c;专为异步 I/O 操作设计&#xff0c;广泛应用于高性能网络服务开发。其核心优势在于统一的异步模型、对底层操作系统的高效封装&#xff0c;以及对现代 C 特性的深度支…

作者头像 李华
网站建设 2026/6/29 0:25:04

C++ vector何时扩容?扩容因子是多少?真相全在这里(附实测数据)

第一章&#xff1a;C STL vector 扩容机制详解 C 标准模板库&#xff08;STL&#xff09;中的 std::vector 是最常用且高效的动态数组容器之一。其核心优势在于能够自动管理内存&#xff0c;支持动态扩容&#xff0c;从而在运行时灵活地添加或删除元素。 扩容触发条件 当向 ve…

作者头像 李华
网站建设 2026/6/26 1:49:53

【C++项目构建避坑指南】:为什么总出现undefined reference?真相曝光

第一章&#xff1a;undefined reference错误的本质解析 undefined reference 是C/C开发中常见的链接阶段错误&#xff0c;它表示编译器成功完成了源码的语法分析与目标文件生成&#xff0c;但在链接过程中无法找到某些符号&#xff08;函数、变量等&#xff09;的实际定义。该错…

作者头像 李华