TailScale启用 Tailscale Exit Node(出口节点)时如何本地网络绕过
TailScale如何绕过exit Node
要让特定的流量(如特定的IP地址、域名或本地网络)在启用 Tailscale Exit Node(出口节点)时不走出口节点(即使用本地网络绕过),可以通过 Tailscale 的 Split DNS 或 Split Tunneling 功能来实现。 以下是几种常见的方法:
方法一:使用 Split Tunneling(设置允许的子网)
这是实现“白名单”最直接的方法。通过将特定的网段从出口节点规则中排除,使其直接在本地网络中运行。 确定不需要走 Exit Node 的目标 IP/子网:例如,你本地的NAS是 192.168.1.50,你需要访问本地路由器 192.168.1.1。
在 Tailscale 控制台中修改路由: 登录 Tailscale Admin Console。 找到你的 Exit Node 机器,点击三个点 ... -> Edit route settings。 在 "Allowed IPs" 中,你可能默认配置了 0.0.0.0/0(代表所有流量走出口)。 关键操作:要让本地网络(如 192.168.1.0/24)不走出口,你需要将其从 0.0.0.0/0 中移除。如果你原本是通过 ACL 限制的,你需要设置一条 ACL 规则,允许你客户端本地网络访问本地。 简单做法:如果你的出口节点使用 -exit-node-allow-lan-access 标志启动,它应该会自动处理本地网络不走出口。
tailscale up --exit-node=<exit-node-ip> --exit-node-allow-lan-access
方法二:针对特定域名不走 Exit Node (Split DNS)
如果你想让特定的网站(例如工作邮箱 ://example.com)不通过出口节点,以避免因IP变更导致的鉴权问题,可以使用 Split DNS。 在 Tailscale 控制台 -> DNS。 在 Split DNS 下方,点击 Add nameserver。 添加一个特殊记录:将域名设置为你的目标域名(例如 example.com),并将 DNS 服务器设置为 127.0.0.1 或者你本地的 ISP DNS。 这样,当你访问 ://example.com 时,请求会直接在本地解析,从而可能直接走本地连接,而不是通过出口节点。
方法三:使用 --exit-node-allow-lan-access(针对本地网络)
如果你是使用命令行启动客户端的 Linux 用户,只需在启用 Exit Node 时添加一个参数即可:
tailscale up --exit-node=100.x.x.x --exit-node-allow-lan-access
这个参数告诉 Tailscale,尽管所有上网流量(0.0.0.0/0)都走 Exit Node,但物理局域网的流量(如路由器 192.168.1.1,家庭 NAS 192.168.1.x)仍保留在本地。
总结
需要本地局域网不走出口:使用 --exit-node-allow-lan-access。 需要特定网络 IP 不走出口:在 Exit Node 机器的路由设置中排除该子网。 需要特定域名不走出口:配置 Tailscale DNS 中的 Split DNS。
