Openwrt-安装tailscale及组网优化
参考文档 在 OpenWrt 上使用 Tailscale - 唐长老日志
[[20251114-PVE安装FRP和Tailscale组网]]
[[20251115-tailscale组网]]
GitHub - chenmozhijin/turboacc: 一个适用于官方openwrt(22.03/23.05/24.10) firewall4的turboacc
文章基于大佬文章参考并结合实践所写.
注意
R2S软路由/硬路由的 CPU 根本跑不动 WireGuard 的高强度加密。 除非你的软路由是x86或别的性能较好设备
为什么放弃是正确的?
-
算力差距:
-
Tailscale 使用 ChaCha20 算法加密。
-
路由器的 CPU(通常是 ARM 架构,如 MT798x 或 IPQ系列)处理加密流量的极限通常就在 20Mbps - 50Mbps (即 2~5MB/s) 左右。一旦跑满,CPU 占用率飙升至 100%,甚至会影响家里其他设备上网。
-
电脑/NAS CPU(通常是 x86 架构,或者苹果 M 系列)拥有强大的指令集,处理这个速度可以达到 1000Mbps 以上,CPU 占用率可能还不到 5%。
-
-
木桶效应:
有 400M 的宽带,有高性能的 NAS,有高端笔记本。但是让一个“孱弱”的路由器充当了所有流量的加密解密网关。它瞬间成了那个最短的木板,把速度锁死在了 3MB/s。
最佳替代方案:让终端自己跑 (Client-to-Site)
既然目标主要是让笔记本电脑访问 NAS,最完美的方案是去中心化:
1. 笔记本电脑直接安装 Tailscale 客户端
不要让路由器做中转了,直接在 Windows 上运行 Tailscale。
-
优势:
-
利用电脑 CPU: 笔记本的 CPU 极其强大,轻松跑满 400M 带宽。
-
路由器解脱: OpenWrt 只需要做它最擅长的事——转发 UDP 数据包(NAT)。这对于路由器来说零负载,因为它不需要拆包解密。
-
IPv6 直连: 既然 OpenWrt 已经配置好了 IPv6 中继,笔记本直接获得的 IPv6 地址可以直接和 NAS 建立 P2P 连接。
-
2. 访问方式
在笔记本上开启 Tailscale 后:
-
访问 NAS IP: 直接访问
123.123.123.123(Tailscale IP)。 -
访问内网 IP: 因为 NAS 已经开启了子网路由 (
--advertise-routes=192.168.50.0/24),笔记本上的 Tailscale 会自动学习到这条路由。直接访问192.168.50.201也是通的!
进阶方案:如果家里其他“终端”也要访问 NAS
如果家里的电视、打印机(无法安装 Tailscale 的设备)也需要访问异地 NAS,需要一个高性能的子网路由网关。
不要用 OpenWrt 路由器做网关,用局域网下别的设备, 例如PVE中的UbuntuServer!
-
如果是跑在 x86 机器或者高性能盒子上的 Docker,它的性能远超路由器。
-
做法:
-
在 Ubuntu 上开启 IP 转发和子网路由 (
--advertise-routes=192.168.6.0/24)。 -
在 OpenWrt 上添加一条静态路由:
-
目标:
192.168.50.0/24 -
网关:
UbuntuServer 的局域网 IP
-
-
-
效果: 流量路径变为
电视 -> OpenWrt(指路) -> Ubuntu(加密) -> 互联网 -> NAS。性能会有巨大提升。
配置
配置过程
1. 安装 Tailscale
需要先在软件包中安装 Tailscale, tailscale up 需要设置 --netfilter-mode=off 来禁用tailscale的防火墙设置。
这一步直接通过软件包商店安装就行, 或查看参考文章进行安装。
Tailscale up 命令示例
tailscale up --accept-routes --accept-dns=false --advertise-exit-node --advertise-routes=192.168.6.0/24 --netfilter-mode=off
这个命令用于启动 Tailscale,并配置一些特定的选项。以下是每个选项的解释:
tailscale up: 启动 Tailscale。--accept-routes: 接受其他节点通过 Tailscale 网络提供的路由。--accept-dns=false: 不接受 Tailscale 网络提供的 DNS 设置。--advertise-exit-node: 将当前节点作为出口节点进行广告,使其可以作为其他节点的互联网出口。--advertise-routes=192.168.40.0/24: 将当前节点的 192.168.40.0/24 子网进行广告,使其可以通过 Tailscale 网络访问。--netfilter-mode=off: 关闭 netfilter 模式,不对流量进行过滤。
这个命令配置了 Tailscale 以便在网络中共享特定的路由和出口节点,同时不接受外部的 DNS 设置。

并且在管理页面允许访问:

2. 添加接口
通过 LuCI 创建一个新的非托管接口:网络→接口→添加新接口
-
名称:tailscale
-
协议:Unmanaged(不配置协议)
-
设备:tailscale0

3. 创建防火墙
在 LuCI 中创建新的防火墙区域:网络→防火墙→区域→添加
-
名称: tailscale
-
入站数据: ACCEPT (default)
-
出站数据: ACCEPT (default)
-
转发: ACCEPT
-
IP 动态伪装: on
-
MSS 钳制: on
-
涵盖的网络: tailscale
-
允许转发到目标区域:选择 LAN(以及其他内部区域或 WAN,如果计划使用此设备作为出口节点)
-
允许源区域转发:选择 LAN(以及其他内部区域或如果不想将 LAN 流量路由到其他 Tailscale 主机,则留空)

在连接跟踪设置 TAB中,允许“无效”流量: on (测试:只有开启这个开关,Tailscale从外部才能访问)

单击保存并应用
到这一步, 以及配置成功, 但是还不能和异地连接.
强制唤醒连接
第一步:强制唤醒连接 (Wake up)
OpenWrt 现在的状态是“昏睡”的。需要踢它一脚,强制它去和异地设备握手。
在 iStoreOS 的终端 (SSH) 里,输入:ping Tailscale中另一端设备的地址 ,并等待一会
ping 123.123.123.123
-
观察: 它能通吗?
-
如果 通了:请立即再次输入
tailscale status,看看nas的状态是不是变成了active,并且后面有没有出现offers: ...。 -
如果 不通:说明 OpenWrt 连 NAS 的 Tailscale 内网 IP 都连不上,防火墙或网络有问题。
-
请 SSH 登录iStoreOS 的终端 (SSH) ,输入:
tailscale status
Tailscale 为了不弄乱 OpenWrt 原本的路由设置(防止冲突),它非常聪明地把自己的路由规则写在了一张“私有路由表”里(通常是 table 52)。
如何看到这条“隐形”的路由?
请在 iStoreOS 终端里输入以下命令,就能看到它了:
ip route show table 52
或者查看所有表的路由:
ip route show table all | grep 192.168.50
最后在笔记本电脑浏览器中输入nas的局域网地址,等待一会就能访问。
效果
配置成功后,就可以在路由和子网的任意一台机器访问到Tailscale中的机器,Tailscale子网中的机器。
路由表

组网优化
设置upnp宣告速度
设置为100000,
这里的“下载速度”和“上传速度”并不是用来限制你路由器总网速的(不是限速功能),而是“宣告”功能。
它的具体含义:
-
信息通报: 当局域网内的设备(例如迅雷、BitTorrent 下载软件、Xbox/PS5 游戏机)通过 UPnP 协议向路由器申请端口映射时,它们有时会顺便问路由器一句:“咱们的宽带有多大?”
-
影响应用策略: 路由器会把这里填写的数值回复给这些软件。
-
如果填得太小(比如截图里的默认值 1024KB/s,约等于 8Mbps),某些“老实”的软件可能会以为你家网速很慢,从而主动降低自己的连接数或上传下载速率,以防止网络拥堵。
-
如果填得很大(或者填 0),软件就会放开手脚跑满带宽。
总结: 目前的默认值(1024 和 512)对于光纤宽带来说太小了。虽然现代大多数软件可能会忽略这个参数自己测速,但为了避免某些软件“误判”导致降速,建议把这两个数字改大,填成实际带宽的数值即可。
-

本文来自博客园,作者:舟清颺,转载请注明原文链接:https://www.cnblogs.com/zqingyang/p/19242609

浙公网安备 33010602011771号