Openwrt 下安装了 tailscale,然后手机使用手机网络测试 tailscale 连接,发现一直走的中转,而不是直连。

问题排查
第一步:检查手机和家庭网络 nat 类型
我就检查了,手机和家庭网络的 nat 类型,已经设置开放为了全锥形。那么就不是 nat 的问题。
因为我 OP上有 Clash,我就怀疑是 clash 将 tailscale 分流到了其他的节点而不是直连,导致实际是走不通nat的。
Clash 检查
我直接使用 zashboard,切换到日志模块,过滤 tailscaled 服务,发现走的是节点,而不是直连。
那么问题就很简单了。直接修改 clash 订阅或者在 clash 内配置覆写走直连。

覆写设置
覆写设置-规则设置-自定义规则【✅】
需要注意你的 tailcale 内显示的内网网络是多少,下面也修改为对应的网络。
rules:
- PROCESS-NAME,tailscaled,DIRECT
- PROCESS-NAME,tailscale,DIRECT
# 2. 域名直连
- DOMAIN-SUFFIX,tailscale.com,DIRECT
- DOMAIN-SUFFIX,tailscale.net,DIRECT
# 3. Tailscale 内网网段(100.64.0.0/10)
- IP-CIDR,100.64.0.0/10,DIRECT
- IP-CIDR,100.94.0.0/10,DIRECT
- IP-CIDR6,fd7a:115c:a1e0::/48,DIRECT
# 4. 打洞/通信端口(UDP)
- DST-PORT,3478,DIRECT
- DST-PORT,3300,DIRECT
- DST-PORT,41641,DIRECT验证
再次使用手机端打开 tailscale ping,如果显示 Direct Connection 那就是直连(p2p),说明没有问题。