🚀 完美解决:阿里云服务器部署 Tailscale 导致的 OSS / 内网服务连接超时
适用环境:
- 操作系统: 主流 Linux 发行版(Ubuntu 20.04+, Debian 10+, CentOS 7+ 等)
- Tailscale 版本: v1.x 及以上
- 症状: 安装 Tailscale 后,阿里云内部服务(如 OSS 内网备份、元数据服务、云助手等)出现
i/o timeout报错。
🔍 问题背景
Tailscale 默认使用保留的 CGNAT 网段 100.64.0.0/10 分配节点 IP。启动时,它会通过高优先级策略路由(ip rule 表 52)接管该网段的所有流量。
冲突点: 阿里云的大量核心内网服务(DNS、NTP、OSS 内网 Endpoint)恰恰也使用的是 100.100.x.x 或 100.115.x.x。这导致发往阿里云内网的数据包被错误地路由到了 Tailscale 的虚拟网卡(tailscale0),变成了“网络黑洞”,从而引发超时。
💡 解决思路
利用优先级更高的策略路由(Priority 5200),抢在 Tailscale 拦截之前,将目标为阿里云内网网段的流量强行“拨回”给服务器的真实物理网卡和默认网关。
🛠️ 修复步骤 (保姆级)
第一步:获取本机的真实网络信息
在动手之前,你需要查清楚服务器的内网网关和本机内网 IP。
在终端执行:
1 | ip route show default |
示例输出:default via 192.168.1.253 dev eth0 proto dhcp src 192.168.1.10 ...
请记录下这两个关键 IP:
- 网关 IP (
via后面的地址,例:192.168.1.253) - 本机 IP (
src后面的地址,例:192.168.1.10)
第二步:创建自动化修复脚本
我们将通过 /etc/rc.local 确保规则在每次重启后自动生效。脚本具备幂等性设计,多次执行不会产生冲突。
使用编辑器(如 vim 或 nano)编辑 /etc/rc.local,或直接运行以下命令块(⚠️ 务必将前两行替换为你刚才查到的 IP!):
1 | cat << 'EOF' | sudo tee /etc/rc.local |
第三步:赋予执行权限并使规则生效
依次执行以下命令:
1 | # 赋予脚本执行权限 |
第四步:最终验证
配置完成后,通过以下方式验证流量是否已成功绕过 Tailscale:
查询路由走向:
1
ip route get 100.115.33.43
预期输出应包含
via <YOUR_VPC_GATEWAY_IP> dev eth0。端口连通性实测:
1
telnet 100.115.33.43 443
如果显示
Connected to ...,表示网络冲突已彻底解决!