Loading... ## 背景 Tailscale子网路由可以打通内外网,让外网的设备可以通过内网IP访问内网的服务。 这两天花了点时间折腾好了,故记录留档,以备后续查看。 ## 部署 我最开始用LXC容器部署的Tailscale,但是这玩意开启路由转发之后,延迟会飙升到300ms以上,所以放弃了这个方案。 现在使用KVM虚拟机部署Tailscale,操作系统是CentOS8,使用官方提供的安装命令部署Tailscale: ```shell curl -fsSL https://tailscale.com/install.sh | sh ``` 部署完成后,启动Tailscale,按照提示将此虚拟机加入Tailscale私有网络: ```shell tailscale up ``` 然后可以尝试使用本地设备ping虚拟机的taislcale虚拟IP,能通说明tailscale已经正常运行。 接下来还需要开启ip转发,优化转发性能: ```shell # 开启 IPv4 转发 echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf # 开启 IPv6 转发 echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf # 使配置生效 sudo sysctl -p # 优化 UDP GRO 转发性能(eno1 替换为你的实际网卡名) sudo ethtool -K eno1 rx-udp-gro-forwarding on rx-gro-list off ``` 配置防火墙规则,让子网路由的流量正常通过: ```shell # 信任 Tailscale 虚拟网卡 firewall-cmd --permanent --zone=trusted --add-interface=tailscale0 # 重载防火墙配置 firewall-cmd --reload ``` 重启 Tailscale,转发子网 ```shell # 停止 Tailscale tailscale down # 重新启动 Tailscale 配置 snat 和 子网路由 tailscale up --snat-subnet-routes=true --advertise-routes=192.168.5.0/24 ``` 至此,KVM虚拟机已经配置完成,接下来还需要在Tailscale控制台批准刚刚转发的子网路由。  批准完成后,应该就可以正常访问了。   ## 问题 现在还有个小问题,如果被转发的内网有Windows设备安装了Tailscale,会发现该设备无法使用内网ip访问web服务了,一直转圈超时。 这是因为目标设备收到请求后,可能也会因为路由优先级问题,将回包通过Tailscale网络发回,而不是直接发回给源设备。这就导致数据包在内网和Tailscale网络之间“迷路”,造成连接超时。 我们可以通过调低物理网卡路由跃点的方式解决这个问题。 以管理员身份打开 PowerShell,执行以下命令: ```powershell # 1. 查看所有 IPv4 接口及其索引 Get-NetIPInterface -AddressFamily IPv4 | Select-Object InterfaceIndex, InterfaceAlias, InterfaceMetric # 2. 找到物理网卡的 InterfaceIndex(例如 5),执行修改 Set-NetIPInterface -InterfaceIndex 5 -InterfaceMetric 1 -AddressFamily IPv4 # 3. 验证修改结果 Get-NetIPInterface -InterfaceIndex 5 -AddressFamily IPv4 | Select-Object InterfaceMetric ``` 至此,该设备应该就可以正常使用内网ip访问了。 最后修改:2026 年 07 月 11 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏