打印机在开启出口节点之前还能用,现在笔记本却看不到它了。选择出口节点会改变默认路由,因此客户端不再通过物理接口发送本地子网流量。这是预期行为,而不是发现机制失败。有一项有文档记载的设置可以恢复身边的网络,而工作重点是弄清它究竟恢复了哪个网络。

为什么开启出口节点后打印机会消失

出口节点把自己宣告为互联网流量的路由。客户端把默认路由指向该节点,节点再转发数据包,于是过去从咖啡馆 Wi-Fi 出去的流量,现在都从远端出去。本地目标默认不会被排除。因此同一 Wi-Fi 上的设备变得不可达,尽管笔记本仍关联着该网络。

数据包被路由进隧道并从远端出来,而那里并不存在那个局域网。发现协议最先失败,因为它们依赖广播或多播,而这些流量不会穿过出口路径。随后保存的打印队列会以看似驱动损坏的方式失败。

该设置恢复的是笔记本身边的局域网

本地网络设置针对的是客户端身边的网络,而不是出口节点背后的网络。如果笔记本在咖啡馆 Wi-Fi 上,而出口节点在家,该设置会恢复对咖啡馆一侧设备的访问。它不会打开家里的局域网,也不会建立通往办公室的路由。 出口节点文档 把 --exit-node-allow-lan-access 称为开关;通过 tailscale set 或 tailscale up 传入,取决于你的客户端配置使用哪一个。

当身边的网络确实有你需要的资源时才开启。在访客网络上,先问一问本地有什么东西值得访问。

该设置不会让身边设备变得可信,也不会绕过它们自己的访问控制。接受整个咖啡馆任务的打印机,仍然是接受整个咖啡馆任务的打印机。把这个设置当作路由便利,而不是安全边界。

访问远程办公室是另一套机制

访问不运行 Tailscale 的家庭 NAS 需要子网路由器。该设备把私有前缀宣告进 tailnet,管理员必须先批准该路由,客户端才能使用。出口节点在那条路径上不起任何作用。

自行运行 Tailscale 的设备已经有 tailnet 地址。它不需要局域网设置,开启该设置也不会让它出现。

把三套机制分开。出口节点改变互联网流量的去向,子网路由器把可达范围扩展到私有前缀,而本地网络访问恢复的是笔记本所连接的物理局域网。把它们混在一起,会得到看起来正确却什么都不路由的配置。在更改之前,先写下你要改的是哪一个。

先测试地址,再看发现列表

开启本地访问后,用地址和端口测试设备,而不是通过发现菜单。空的打印机列表不是完整的测试,因为发现失败的原因可能与单播可达性无关。从你需要的地址和服务开始。

tailscale status
ping -c 2 192.168.1.50
nc -vz 192.168.1.50 9100

按顺序读取三个输出。 tailscale status 显示客户端是否仍选中出口节点,ping 证明地址可达,端口检查证明服务在监听。如果地址能用而保存的主机名不能用,问题在名称解析。如果两者都不能用,先检查所选路由、目标的服务及其防火墙,再改动客户端。

按网络分别决定,改动后重新测试

在你信任邻居且需要该资源的网络上开启本地访问。在唯一目标是公共出口的不可信网络上,保持关闭。该设置跟随网络,因此在家里的局域网和咖啡馆之间移动的笔记本,需要为每种情况给出有意识的答案。

每当网络或所选出口节点变化时,重新测试该资源。公共浏览和本地可达是两项独立的检查,能响应的打印机并不能说明浏览器走了哪条路径。记录哪个设置对哪个网络开启,以免之后的更改悄悄把它撤销。配置文件里的一行可以避免同一张工单再次出现。

相关文章