笔记本连着 WiFi 上网,网线插到公司内网的交换机上,内网系统 10.20.8.31 打不开,浏览器一直转圈。
原因是默认网关只有一个。WiFi 的网关抢到了默认路由,所有流量都往那边走,去 10.20 的包也一样。得单独给内网指一条路。
先确认网关和接口
管理员命令提示符里输入 route print,看 IPv4 路由表。0.0.0.0 那一条是默认路由,后面的接口地址能看出走的是无线还是有线。记下内网网卡自己的 IP 和网关。
加一条静态路由
route add 10.20.0.0 mask 255.255.0.0 10.20.0.1 -p第一段是目标网段,mask 是子网掩码,后面是内网网关。-p 表示永久,重启还在;不加的话重启就没了,适合临时排查。
加没加进去,route print 看一眼就知道。删掉用 route delete 10.20.0.0。
metric 是干什么的
同一个目标有多条路时,系统比 metric,小的优先。有线网卡的自动 metric 通常比 WiFi 低,但有些驱动会算反,结果还是走无线,手动指定 metric 1 能压过默认值。
反过来,加了路由之后外网断了,多半是掩码写大了,把不该走的流量也带进内网。10.20.0.0/16 和 10.0.0.0/8 差很多,别顺手写 /8。
内网有好几个网段时,把掩码写准,一条 /16 通常就能覆盖,不用一段一段加。公司换过网段的话,旧路由记得删掉,不然两条会互相抢。
Linux 和 macOS
Linux 用 ip route add 10.20.0.0/16 via 10.20.0.1 dev eth0,要持久化得写进配置文件,不同发行版位置不一样。macOS 用 sudo route -n add -net 10.20.0.0/16 10.20.0.1。
这类问题八成不是网络坏了,是路由选错了。加一条精确的静态路由,比拔掉 WiFi 体面得多。