上周在公司,我开了代理的 TUN 模式,准备专心写稿。结果要打印一份文件时,打印机死活连不上;想从 NAS 上拖个素材,NAS 也ping不通。我第一反应是公司网络出问题了,折腾了半小时才发现:真凶是 TUN 把局域网流量也接管了。
插图来源:Storyset
事情经过#
TUN 模式的原理是虚拟出一张网卡,接管整台机器的流量(TUN 和系统代理的区别看这里)。好处是所有软件都走代理,坏处是——包括你本想直连的局域网设备。
打印机、NAS、路由器后台,地址都是 192.168.x.x 这种内网地址。TUN 接管后,这些请求被一股脑发给了代理服务器,代理服务器当然不知道你家的打印机在哪,于是全部超时。
解决办法:局域网直连#
几乎所有客户端都支持"局域网直连"或"Bypass LAN"一类的选项,位置一般在 TUN 设置或路由设置里:
- 打开客户端的 TUN / 虚拟网卡设置
- 找到"绕过局域网"“Bypass LAN"或类似选项,打开它
- 有些客户端需要手动写规则:
192.168.0.0/16、10.0.0.0/8、172.16.0.0/12走直连
设完之后,内网设备直连,外网走代理,互不干扰。
举一反三:还有哪些要直连#
- 公司内网 OA、ERP 系统
- 智能家居 App(连家里摄像头、灯泡的)
- 投屏(AirPlay、Miracast 走的是局域网)
- 联机打游戏的主机(PS / Switch 局域网联机)
这些本质上都是"内网流量”,一律直连。分应用代理的思路可以参考这篇按应用分流,原理相通。
后续:我现在的 TUN 配置#
吃一堑长一智,我现在的 TUN 配置是这样的:
- 开机自启客户端,但 TUN 默认不开——需要用的时候再手动开
- TUN 的直连规则里常驻:三个内网段(192.168/16、10/8、172.16/12)+ 公司内网域名
- 打印、传文件、投屏前,先看一眼 TUN 是不是开着
这套流程跑了几个月,再没出过幺蛾子。TUN 本身是好东西,错的只是"无脑全开"。
还有两个细节:第一,直连规则改完要重启客户端才生效,别改完直接试,试了没用又怀疑人生。第二,如果打印机是固定 IP(比如 192.168.1.100),可以直接在规则里写单 IP 直连,比整个网段更精确,误伤更少。对了,直连规则建议导出备份一份存在备忘录里,万一哪天重装客户端,一分钟就能恢复。
教训#
TUN 虽好,但接管的是一整台机器,开之前先想清楚有没有内网设备要直连。办公室、校园网这种环境更复杂,这篇办公室网络指南值得一看。这次踩坑让我养成了习惯:每次开 TUN,先检查一遍直连规则,再开始干活。