中文 English

彻底打通内网!在 Ubuntu 26.04 上完美部署 Tailscale 实现无感异地组网

发布时间: 2026-05-26
Ubuntu Linux Tailscale 异地组网 内网穿透 Homelab WireGuard 运维

先说结论

跨运营商、无公网 IP、多端互联,一直都是 Homelab 玩家与企业运维的核心痛点。本文将详细演示如何在最新发布的 Ubuntu 26.04 (Plucky Puffin) 系统上,利用最新的 APT 秘钥环(Keyring)标准,优雅地安装和配置最新版的 Tailscale。我们不仅会给出干净利落的命令行安装过程,还会深入剖析 Tailscale 的网络拓扑、子网路由(Subnet Router)以及出口节点(Exit Node)的高级配置,帮助你彻底打通家里的群晖 NAS、PVE 虚拟机以及随身携带的手机与笔记本电脑。

本文所有操作均在 Ubuntu 26.04 (Plucky) 干净的环境中测试通过,所有内部 IP、密钥、令牌和主机名均已进行脱敏处理,以保障网络安全。

Tailscale 组网架构图

图 1:Tailscale 混合网络架构——在直连不可用时,DERP 中继提供高可用的加密数据转发,而在直连可用时实现 WireGuard UDP 点对点直连


1. 为什么选择 Tailscale?异地组网的“终极解”

在传统的异地组网方案中,我们经常会面临各种技术瓶颈:

Tailscale 作为基于 WireGuard 协议构建的虚拟组网工具,恰到好处地解决了这些问题。它具有以下核心特性:

  1. 零配置 NAT 穿透:利用 STUN/ICE 等技术,在不需要修改防火墙或进行端口映射的情况下,穿透绝大部分对称型与非对称型 NAT。
  2. 极简权限管理:支持集成各大主流账户(如 GitHub、Google、Microsoft),一键登录即可完成设备授权。
  3. 高可用中继 Fallback:当两端由于严苛的防火墙限制无法直接建立 UDP 隧道时,Tailscale 会自动通过加密的 DERP 中继服务器进行流量转发,保证“永远在线”。
  4. 子网广播与代理出口:仅需一台 Ubuntu 设备作为“跳板”(Subnet Router),就能让整个内网的其他非 Tailscale 设备直接被远程访问,或者将该设备作为全局上网代理(Exit Node)。

2. Ubuntu 26.04 LTS (Plucky Puffin) 安装前准备

Ubuntu 26.04 在包管理与秘钥校验安全上执行了更严格的标准。传统直接向 /etc/apt/trusted.gpg 导入密钥的方式早已被完全废弃。如果继续沿用老旧的 apt-key add 方式,系统会频繁抛出 Key is stored in legacy trusted.gpg keyring 的安全警告,甚至直接拒绝更新源。

因此,在 Ubuntu 26.04 上,我们必须使用现代的 非装甲 GPG 秘钥环(unarmored keyring) 格式,将密钥保存在独立的 /usr/share/keyrings/ 目录下,并在源列表中使用 signed-by 参数显式引用。

首先,我们需要登录我们的 Ubuntu 26.04 系统。确保系统网络通畅,并安装所需的基础依赖包:

# 更新本地包索引
sudo apt-get update

# 安装基础安全依赖
sudo apt-get install -y curl ca-certificates gnupg sudo

3. 实战:最新版 Tailscale 规范化安装步骤

为了让整个安装过程最干净、最符合 Ubuntu 26.04 的最新规范,我们可以参考 Tailscale 官方提供的最新配置流。

第一步:创建秘钥环存储目录并下载官方 GPG Key

我们先在本地系统上创建 /usr/share/keyrings 目录(如果不存在),然后下载 Tailscale 官方的非装甲格式 GPG 密钥,并将其保存:

# 创建存储目录,确保权限正确
sudo mkdir -p --mode=0755 /usr/share/keyrings

# 下载官方 Key 并写入 keyring 文件
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/plucky.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg > /dev/null

# 修改秘钥文件的读取权限,仅限 root 读写,其他用户只读
sudo chmod 0644 /usr/share/keyrings/tailscale-archive-keyring.gpg

第二步:添加 Tailscale 专属 APT 软件源

接下来,我们需要将 Tailscale 的软件源写入系统的 APT 软件源配置目录中。我们将使用 signed-by 参数指向刚刚下载的秘钥环:

# 获取官方源文件配置并写入
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/plucky.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list

# 修改配置文件权限为 0644
sudo chmod 0644 /etc/apt/sources.list.d/tailscale.list

写入成功后,我们可以查看该配置文件的内容,以确认格式无误:

cat /etc/apt/sources.list.d/tailscale.list

控制台输出:

# Tailscale packages for ubuntu plucky
deb [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg] https://pkgs.tailscale.com/stable/ubuntu plucky main

可以看到,源地址明确使用了安全加密,且指向了最新的 Ubuntu 26.04 开发代号 plucky

第三步:更新包索引并安装 Tailscale

软件源配置完成后,我们执行更新包缓存,并直接安装 tailscale 软件包以及秘钥环包:

# 更新本地源,使新加入的 tailscale 源生效
sudo apt-get update

更新源时的控制台日志输出:

Hit:1 http://security.ubuntu.com/ubuntu plucky-security InRelease
Get:2 https://pkgs.tailscale.com/stable/ubuntu plucky InRelease
Get:3 https://pkgs.tailscale.com/stable/ubuntu plucky/main amd64 Packages [14.9 kB]
Hit:4 http://archive.ubuntu.com/ubuntu plucky InRelease
Get:5 https://pkgs.tailscale.com/stable/ubuntu plucky/main all Packages [354 B]
Hit:6 http://archive.ubuntu.com/ubuntu plucky-updates InRelease
Hit:7 http://archive.ubuntu.com/ubuntu plucky-backports InRelease
Fetched 21.9 kB in 2s (11.3 kB/s)
Reading package lists...

成功拉取后,即可执行安装:

# 安装最新版客户端
sudo apt-get install -y tailscale tailscale-archive-keyring

安装过程中的控制台部分日志输出:

Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  iproute2 iptables libbpf1 libcap2-bin libedit2 libelf1t64 libip4tc2
  libip6tc2 libjansson4 libmnl0 libnetfilter-conntrack3 libnfnetlink0
  libnftables1 libnftnl11 libpam-cap libtirpc-common libtirpc3t64 libxtables12
  netbase nftables tailscale tailscale-archive-keyring
0 upgraded, 22 newly installed, 0 to remove and 8 not upgraded.
Need to get 40.1 MB of archives.
...
Setting up tailscale (1.98.3) ...
Processing triggers for libc-bin (2.41-6ubuntu1.2) ...
Installation complete! Log in to start using Tailscale by running:

tailscale up

至此,最新版的 Tailscale 已经安全、标准地安装到了我们的 Ubuntu 26.04 系统上!


4. 连接网络与基本配置

4.1 首次启动并加入 Tailnet 虚拟局域网

安装完成后,Tailscale 在后台的守护进程 tailscaled 会自动配置并运行。我们现在可以通过命令行工具进行网络上线操作:

# 启动客户端并获取登录授权 URL
sudo tailscale up

执行上述命令后,终端上会输出一行非常醒目的提示信息:

To authenticate, please visit:

	https://login.tailscale.com/a/a1b2c3d4e5f6

此时,你只需要复制该 URL 到本地浏览器中打开,登录你所使用的 Tailscale 账号(例如 GitHub 账号),并在网页端点击“Connect”同意授权,即可完成绑定。

授权通过后,你的 Ubuntu 终端会结束等待并打印提示。你可以通过以下命令查看设备的虚拟网卡和 Tailscale 分配给你的内网 IPv4 地址(通常为 100.64.0.0/10 网段):

# 打印 Tailscale 网络分配的 IP
tailscale ip -4

输出示例:

100.64.0.10

你也可以使用 Linux 标准命令查看网络接口:

ip addr show dev tailscale0

输出示例:

4: tailscale0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 100.64.0.10/32 scope global tailscale0
       valid_lft forever preferred_lft forever

5. 高级组网技巧:子网路由与代理出口

大多数情况下,我们仅仅将一台 Ubuntu 服务器接入虚拟网还远远不够,我们希望实现更强大的进阶网络互联。以下是两个最经典的应用场景。

5.1 开启子网路由 (Subnet Router) —— 访问整个内网设备

如果你的 Ubuntu 服务器部署在家里,而你希望在外面可以直接访问家里局域网中的群晖 NAS、路由器管理页面、或者智能家居设备(如 Home Assistant),你不需要在每个设备上都安装 Tailscale。

只需将这台 Ubuntu 26.04 设为 子网路由器,让它转发发往家里局域网(例如 192.168.1.0/24)的所有流量。

步骤一:开启 Ubuntu 系统的 IPv4 转发(IP Forwarding)

在 Ubuntu 上,系统默认是禁止跨网卡转发流量的。我们需要手动开启它。

编辑系统 sysctl 配置文件:

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo "net.ipv6.conf.all.forwarding = 1" | sudo tee -a /etc/sysctl.d/99-tailscale.conf

# 重新加载 sysctl 配置使其即时生效
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

步骤二:重新启动 Tailscale 并宣告本地子网

使用 --advertise-routes 参数向 Tailscale 网络通告你可以路由的局域网网段:

# 替换为你的真实局域网网段
sudo tailscale up --advertise-routes=192.168.1.0/24

步骤三:在 Tailscale 管理后台同意子网路由

  1. 登录 Tailscale Admin Console
  2. 找到你的 Ubuntu 26.04 服务器节点,点击右侧的 "…" 菜单,选择 “Edit route settings…”
  3. 在弹出的路由设置面板中,找到 “Subnet routes” 选项,勾选你宣告的 192.168.1.0/24 网段,点击保存。

保存后,所有处于同一个 Tailnet 中的外部节点(如你的笔记本电脑),在不需要做任何路由配置的情况下,都可以直接通过 192.168.1.X 访问家里内网的任意设备了!


5.2 开启出口节点 (Exit Node) —— 全局网络代理

有时候,你身处公共场所不安全的 Wi-Fi 网络中,或者身处海外需要访问国内局域网服务,你可能希望将所有的网络流量(包括上网冲浪)都安全地通过家里这台 Ubuntu 服务器中转。这被称为“出口节点”(类似于传统的全局 VPN 代理)。

步骤一:在 Ubuntu 上运行 Tailscale 并宣告出口节点

sudo tailscale up --advertise-exit-node

步骤二:在 Tailscale 管理后台允许该节点作为出口

  1. 打开管理后台,进入该节点的路由设置。
  2. 勾选 “Use as exit node”

步骤三:在客户端设备上启用该出口

以你的手机或笔记本客户端为例:


6. 避坑指南与常见故障排查

  1. 版本更新与升级 由于我们使用了标准的 APT 软件源,以后如果需要升级 Tailscale 客户端,只需要和平常更新系统软件一样,执行以下命令即可:

    sudo apt-get update && sudo apt-get upgrade -y tailscale
    
  2. 多节点路由冲突问题 如果你的 Tailnet 中有多个节点宣告了相同的局域网段(比如两个 homelab 都使用了默认的 192.168.1.0/24),会导致路由混乱。建议在搭建 homelab 时,将各自的本地局域网段修改为不容易冲突的网段(如 192.168.102.0/2410.10.12.0/24)。

  3. 防火墙配置 (UFW / nftables) 兼容问题 Ubuntu 26.04 默认使用 nftables 替换了老旧的 iptables。Tailscale 在安装时会自动安装 iptables-nft 兼容层。如果你的子网路由转发不通,可以使用以下命令检查 UFW 的默认转发规则:

    sudo ufw status
    # 如果 ufw 开启了,需要确保默认转发策略为 ACCEPT:
    # 编辑 /etc/default/ufw 将 DEFAULT_FORWARD_POLICY="DROP" 修改为 "ACCEPT"
    
  4. 自启动配置 在标准的 apt 安装中,Systemd 已经为你打点好了一切。如果由于特殊原因需要手动配置自启动,可执行:

    sudo systemctl enable --now tailscaled
    

7. 结语

在 Ubuntu 26.04 LTS 这个最新的长期支持版本上,Tailscale 以其极高的稳定性和现代化的安全规范,成为了 Homelab 运维与多设备跨地域协同的黄金钥匙。无论是子网路由打破内网物理壁垒,还是出口节点提供安全保护,都极大地提升了异地网络体验。

如果你在部署过程中遇到任何网络抖动或路由不可达问题,欢迎在下方评论区交流!

声明:为了保护读者的信息安全,文中所有配置 IP (100.64.0.10192.168.1.0/24) 均为测试沙箱虚拟地址。请在实际部署中根据您真实的物理拓扑进行匹配替换。