阿里云ECS + Tailscale无缝集成指南:告别内网访问异常

一、主要异常表现

  安装并启动Tailscale后,你可能会遇到以下一种或多种情况:

  1. SSH连接闪断或卡顿:如果你是通过SSH连接到ECS的,在启动Tailscale的瞬间,当前的SSH会话可能会卡住,甚至断开连接。重新连接后可能正常,也可能偶尔还会出现延迟。
  2. 无法通过内网IP访问ECS上的服务:在ECS内部或用同一VPC内其他机器访问该ECS的内网IP(例如 172.16.0.10)上的服务(如Web服务、数据库、Redis等)时,出现:
    • 连接超时
    • 响应极慢
    • 直接无法建立连接
  3. ECS无法访问同一VPC内其他机器的内网服务:从安装了Tailscale的这台ECS上,去访问同VPC下其他机器的内网IP,发现访问失败。
  4. ECS无法访问阿里云内网服务:无法访问阿里云的内网API端点(如 oss-cn-hangzhou-internal.aliyuncs.com)或其他需要通过内网访问的云服务。

  关键特征:所有这些异常都发生在内网(VPC)流量上,而通过公网IP的访问以及Tailscale虚拟组网后的IP的访问通常是正常的。


二、根本原因

  问题的核心在于 路由冲突 和 策略路由

  1. Tailscale的默认行为:Tailscale安装后,为了让你能通过其他Tailscale节点访问这台ECS,它会自动修改系统的路由表和防火墙规则。它会添加一条默认路由针对对等节点路由,将所有出口流量(或目标为其他Tailscale节点的流量)通过Tailscale的虚拟网卡(如 tailscale0)发送。
  2. 阿里云VPC的特殊性:阿里云的VPC内部网络依赖其自身的内部路由和DNS系统。ECS的内网IP(172.16.0.10)在VPC内是有特定路由规则的。
  3. 冲突发生:当Tailscale的路由规则(优先级较高)介入后,系统在尝试访问同一个VPC内的另一个内网IP(例如 172.16.0.11)时,可能会错误地判断该流量不应该走物理网卡(eth0),而应该走Tailscale的虚拟网卡(tailscale0)。但由于目标地址 172.16.0.11 并不在Tailscale的虚拟网络中,导致流量“走错了路”,最终无法到达目的地。

  简单来说:系统本来去邻居家(同VPC机器)应该走“小区内部道路”(eth0),但Tailscale给它装了个“智能导航”(路由规则),这个导航错误地引导车子先开上了“私人高架桥”(tailscale0),结果发现高架桥不通往那个邻居家,导致无法到达。


三、解决方案:一键修复

sudo tailscale up --netfilter-mode=off --accept-dns=false

转载:感谢您对路丁路个人博客网站平台的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源鹭丁路”。https://ludinglu.com/jiaocheng/644.html
上一篇