Tailscale 子网路由轻松上手:打造无缝网络连接 作者: Shine 时间: 2025-07-28 分类: Linux 今天我们来聊聊如何使用 Tailscale 的 `--advertise-routes=192.168.15.0/24,192.168.40.0/24` 参数来配置子网路由,以及客户端该如何使用它。 ## 什么是 Tailscale 和子网路由? Tailscale 是一个基于 WireGuard 的 VPN 工具,它能让你轻松构建一个安全的私有网络(Tailnet),让不同地点的设备像在同一个局域网里一样互相访问。而子网路由(Subnet Router)是 Tailscale 的一个强大功能,允许你将本地网络的子网(如家里的局域网)“分享”给 Tailnet 里的其他设备,即使这些设备不在同一个物理网络中。 通过设置 `--advertise-routes=192.168.15.0/24,192.168.40.0/24`,你可以让 Tailscale 把这两个子网的流量路由到你的 Tailnet,远程设备就能访问这些子网里的资源,比如 NAS、打印机或者其他服务。听起来是不是很酷?让我们一起来配置吧! ## 前提准备 在开始之前,确保你已经: 1. **注册了 Tailscale 账户**:访问 [Tailscale 官网](https://tailscale.com/) 注册并登录。 2. **安装了 Tailscale 客户端**:在需要配置子网路由的设备(如你的家用服务器或路由器)以及其他客户端设备(如手机、笔记本电脑)上安装 Tailscale。 3. **有管理权限**:确保你有权限在 Tailscale 管理控制台(Admin Console)中操作。 4. **了解你的网络**:确认你要分享的子网地址,比如这里我们用的是 `192.168.15.0/24` 和 `192.168.40.0/24`。 准备好了吗?让我们开始动手! ## 配置子网路由 假设你有一台 Linux 服务器(也可以是 Windows 或 macOS,但我们以 Linux 为例),它连接着你家里的局域网,里面有设备运行在 `192.168.15.0/24` 和 `192.168.40.0/24` 两个子网上。我们要把这台服务器设置为子网路由器,让 Tailnet 里的其他设备可以访问这些子网。 ### 步骤 1:启用 IP 转发 Tailscale 的子网路由需要设备支持 IP 转发。Linux 系统上,我们需要做一些简单的配置: ```bash # 启用 IPv4 转发 echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf # 如果需要支持 IPv6(本例中我们只用 IPv4,可以跳过) echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf # 应用配置 sudo sysctl -p /etc/sysctl.d/99-tailscale.conf ``` 这些命令确保你的服务器可以转发网络流量。如果你的系统没有 `/etc/sysctl.d` 目录,可以直接写入 `/etc/sysctl.conf`。 ### 步骤 2:设置子网路由 接下来,我们在这台服务器上运行 Tailscale 的命令,告诉它要分享哪些子网: ```bash sudo tailscale up --advertise-routes=192.168.15.0/24,192.168.40.0/24 ``` 这条命令做了什么? - `--advertise-routes` 参数告诉 Tailscale 这台设备要“广播”两个子网:`192.168.15.0/24` 和 `192.168.40.0/24`。 - 如果你的设备已经通过 `tailscale up` 登录过,可以用 `tailscale set` 更新路由: ```bash sudo tailscale set --advertise-routes=192.168.15.0/24,192.168.40.0/24 ``` ### 步骤 3:批准子网路由 设置好路由后,你需要到 Tailscale 的管理控制台([login.tailscale.com](https://login.tailscale.com))批准这些路由: 1. 登录 Tailscale 管理控制台,进入 **Machines** 页面。 2. 找到刚刚配置的服务器(会有一个 “Subnets” 标签)。 3. 点击右侧的菜单(三个点),选择 **Edit route settings**。 4. 勾选 `192.168.15.0/24` 和 `192.168.40.0/24`,然后点击 **Save**。 如果你的 Tailnet 配置了 `autoApprovers`,这一步可以自动完成,无需手动批准。想了解更多,可以参考 [Tailscale 文档](https://tailscale.com/kb/1019/subnets/)。[](https://tailscale.com/kb/1019/subnets) ### 步骤 4:验证子网路由 配置完成后,验证一下路由是否生效: 1. 在服务器上运行: ```bash tailscale status ``` 确认设备在线,并且可以看到 Tailscale 的 IP 地址(通常是 `100.x.x.x` 格式)。 2. 从另一台 Tailnet 设备(比如你的笔记本电脑)尝试 ping 子网内的设备: ```bash ping 192.168.15.1 ``` 如果能收到回复,说明子网路由已经工作啦! ## 客户端如何使用 现在,你的子网路由已经配置好,Tailnet 里的其他设备该怎么访问这些子网呢?很简单! ### 客户端配置 1. **确保客户端已连接 Tailnet**: 在你的手机、笔记本电脑或其他设备上,运行 Tailscale 客户端并登录。可以用以下命令检查: ```bash tailscale status ``` 2. **启用子网路由**: - 在 **Linux** 上,默认不自动接受子网路由,需要运行: ```bash tailscale up --accept-routes ``` - 在 **Windows** 和 **macOS** 上,子网路由默认启用,无需额外配置。 - 在 **Android** 或 **iOS** 上,打开 Tailscale 应用,进入设置,启用 “Use Tailscale subnets” 选项。[](https://superuser.com/questions/1889154/why-am-i-unable-to-use-local-ip-with-tailscale-subnet-router) 3. **访问子网资源**: 现在,你可以直接用 IP 地址访问子网内的设备,比如: - 访问 `192.168.15.10` 上的 Web 服务:打开浏览器,输入 `http://192.168.15.10`。 - SSH 到 `192.168.40.5`:运行 `ssh user@192.168.40.5`。 ### 小贴士 - **DNS 配置**:如果你的子网设备使用的是本地 DNS(比如 Pi-hole),你可能需要在 Tailscale 管理控制台的 **DNS** 页面添加本地 DNS 服务器的 Tailscale IP,并启用 “Override local DNS” 选项,确保 DNS 查询走 Tailnet。[](https://fullmetalbrackets.com/blog/comprehensive-guide-tailscale-securely-access-home-network/) - **性能注意事项**:Windows 的子网路由性能可能不如 Linux,因为它使用的是用户空间网络栈。如果需要高性能,推荐用 Linux 设备作为子网路由器。[](https://www.reddit.com/r/Tailscale/comments/vqdgfy/here_is_the_howtoconfigure_tailscale_subnet/) - **防火墙**:确保子网路由器的防火墙允许转发流量。如果使用 `firewalld`,可以运行: ```bash sudo firewall-cmd --add-masquerade --permanent sudo firewall-cmd --reload ``` ## 遇到问题怎么办? 配置过程中可能会遇到一些小问题,别慌!这里是几个常见问题和解决办法: - **无法 ping 子网设备**:检查子网路由器是否在线,路由是否在管理控制台被批准,还要确认目标设备的防火墙没有阻止 Tailscale 的流量。 - **DNS 解析失败**:确保 Tailscale 的 DNS 设置正确,或者尝试直接用 IP 地址访问。 - **路由冲突**:如果你的本地网络和 Tailnet 有重叠的 IP 范围,可以调整 `--advertise-routes` 为更具体的子网(如从 `/24` 改为 `/25`)来避免冲突。[](https://tailscale.com/kb/1023/troubleshooting) 如果还有其他问题,可以去 [Tailscale 社区](https://tailscale.com/contact/support) 或 Reddit 的 r/Tailscale 寻求帮助,那里有很多热心的用户和专家。[](https://www.reddit.com/r/Tailscale/comments/vqdgfy/here_is_the_howtoconfigure_tailscale_subnet/) ## 总结 通过 Tailscale 的 `--advertise-routes=192.168.15.0/24,192.168.40.0/24` 参数,你可以轻松把家里的子网分享到 Tailnet,让远程设备无缝访问本地资源。整个过程就像搭积木一样:启用 IP 转发、设置路由、批准路由、客户端启用子网访问,简单几步就搞定! 希望这篇教程能帮到你!如果你有任何问题,或者想分享你的 Tailscale 使用心得,欢迎在评论区告诉我。让我们一起探索 Tailscale 的更多可能性,打造一个超级便捷的私有网络吧!🚀 标签: Tailscale