一、 核心地基:解决 OpenWrt 流量劫持与不通问题
在 OpenWrt 环境下,Tailscale 经常会被其他网络组件“按在地上摩擦”,核心解决思路就两步:指对路、戴面具。
1. 彻底驯服 MWAN3(防止流量被强塞给宽带出口)
只要装了 MWAN3/多线负载,去往 Tailscale 虚拟网段和公司内网的流量极易被劫持。
- 操作路径:网页后台 -> 网络 -> 负载均衡 (MWAN3) -> 规则。
- 添加两条“免死金牌”规则:
Tailscale_Bypass:目标地址填100.64.0.0/10,策略选默认 (default)。Company_Bypass:目标地址填10.0.0.0/8(涵盖公司大网段),策略选默认 (default)。
- 关键动作:把这两条规则拖到列表的最最顶部,保存并应用。
2. 防火墙出站伪装 (SNAT)
无论是在家里想科学分流,还是在公司想连通内网,数据包从隧道钻出来的那一刻,必须换上当地路由器的合法 IP 面具。
- 原生优雅解法(推荐):网页后台 -> 网络 -> 防火墙 -> 常规设置 -> 区域。找到
tailscale区域,将“允许转发到目标区域”勾选上对应的出口网络(比如家里的wan/eth1,或者公司的wan)。 - 底层暴力解法(SSH 临时生效):Bash
# 允许转发并强行伪装面具 nft insert rule inet fw4 forward iifname "tailscale0" accept nft insert rule inet fw4 srcnat iifname "tailscale0" masquerade
二、 异地组网:家里(路由 A)无缝访问公司(路由 B)
目标:坐在家里不用开任何客户端,直接访问公司 10. 内网。x.x.x
1. 公司路由 B(带路党):宣告内网网段
- SSH 执行:
tailscale set --advertise-routes=10.0.0.0/8。 - 云端盖章:登录 Tailscale Admin Console -> 找到路由 B ->
Edit route settings-> 勾选刚才宣告的子网。
2. 家里路由 A(接收方):接收路线并固化路由表
- SSH 接收指令:
tailscale set --accept-routes - 修复 OpenWrt 路由表丢失 Bug:
- 网页后台 -> 网络 -> 路由 -> 静态 IPv4 路由。
- 接口:
tailscale0 - 路由类型:
unicast(单播) - 目标:
10.0.0.0/8(公司大网段) - 网关:留空不填。保存应用。
三、 企业级进阶:原生 Split DNS (局域网域名分离)
目标:在家里直接输入 oa.corp.com 访问公司系统,且绝对不与 Passwall 发生冲突。
- 避坑铁律:绝对不要开启 Tailscale 的 MagicDNS!
- 原生解法:利用 OpenWrt 自带的
dnsmasq精准指路。- 网页后台 -> 网络 -> DHCP/DNS -> 常规设置。
- 找到 DNS 转发。
- 添加规则:
/公司的域名后缀/10.128.10.20(例如/corp.com/10.128.10.20)。 - 原理:只有访问公司域名时,才去敲公司内部 DNS 服务器(10.128.10.20)的门,其余全部走 Passwall 正常解析。
四、 状态诊断与网络测速工具箱
网络不通或者想摸底性能时,随时掏出这三板斧:
1. 测谎仪:排查流量去向
- 命令:
ip route get [目标IP](例如ip route get 10.128.10.20) - 结果应该是
dev tailscale0。如果是dev eth1,立刻去查 MWAN3 规则或静态路由表。
2. 状态查询:看隧道通不通
- 命令:
tailscale status - 看连接是
Direct(直连打洞成功,速度极快) 还是Relay(官方服务器中转,限速 2~5Mbps)。
3. 极限压榨测速 (iPerf3)
- 服务端(接收方):
iperf3 -s - 客户端(发送方):
iperf3 -c [服务端Tailscale_IP] -R -P 4 -t 20-R:反向测速(测对方的上行宽带)。-P 4:开启 4 个并发线程。-t 20:持续轰炸 20 秒。