route add添加静态路由
公司新换了一台核心交换机,添加网段从192.168.1.0/24改成了10.10.0.0/16。静态我坐在工位上,添加连上VPN,静态发现访问不了内网的添加ERP系统。ping了一下网关,静态通了,添加但ping ERP服务器,静态超时。添加查了一下路由表,静态发现Windows默认只往VPN隧道里塞了指向10.10.0.0/16的添加流量,而ERP服务器在192.168.50.0/24——这个网段根本没被隧道接管。静态
这时候route add就派上用场了。添加命令很简单:route add 192.168.50.0 mask 255.255.255.0 10.10.0.1。静态意思很直白:凡是添加去往192.168.50.0这个网段的数据包,都交给10.10.0.1这个网关转发。加了之后,再ping ERP,通了。
但这里有个坑。Windows的route add默认不持久化,重启后路由就消失了。如果你只是临时连一下内网,那无所谓。但要是你天天都要连,每次开机都得敲一遍命令,烦不烦?解决办法有两个:要么加-p参数,比如route add -p 192.168.50.0 mask 255.255.255.0 10.10.0.1,这样路由会写入注册表,重启后依然存在。要么你写个批处理脚本,开机自启跑一下。我一般选后者,因为改网络环境时,脚本删起来方便,不用去翻注册表。
再聊个实际场景。有一次我在客户现场调试设备,笔记本连着无线网(192.168.2.0/24),设备连着有线网(192.168.100.0/24)。Windows默认只走无线网关,有线网卡虽然插着,但数据包根本不过去。我加了route add 192.168.100.0 mask 255.255.255.0 192.168.100.1,结果还是不通。后来用route print一看,原来有线网卡自己的接口IP是192.168.100.50,网关192.168.100.1没配。Windows的路由表里,直连网段(on-link)其实已经有了,问题出在无线网卡也有一条192.168.100.0/24的路由,而且优先级更高。我删了那条冲突路由,再指定接口索引,才搞定。这里有个细节:route add后面可以加if 数字来指定网卡索引,比如route add 192.168.100.0 mask 255.255.255.0 192.168.100.1 if 12,索引用route print看。不加的话,系统可能把路由绑到错误的网卡上。
还有个容易忽略的点:route add添加的路由,metric值默认是1。但Windows会根据网卡速度自动计算metric,如果你有多个网关,系统可能优先走自动metric更小的那条,而不是你手动加的。这时候得手动指定metric,比如route add 192.168.50.0 mask 255.255.255.0 10.10.0.1 metric 5,数值越小优先级越高。否则你加了路由,数据还是从别的口出去,白忙活。
说实话,route add命令本身不复杂,复杂的是你得清楚自己网络拓扑。别指望一条命令解决所有问题。我见过有人图省事,直接route add 0.0.0.0 mask 0.0.0.0 某网关,把默认路由改了,结果整个网络瘫了。静态路由是精细活,能指定具体网段就别用0.0.0.0,能指定metric就别靠自动。
最后说个我自己的习惯:加完路由后,一定用tracert验证一下路径,别只看ping通就完事。有时候ping通是因为目标机器在同一二层网络,根本不需要路由转发。tracert能看出数据包实际走了哪几个跳,如果第一跳就是你指定的网关,那基本没问题了。如果第一跳是别的地址,赶紧回头看路由表,多半是优先级或者接口绑错了。
静态路由这东西,用好了是利器,用不好就是给自己挖坑。多花两分钟看清楚route print的输出,比瞎试命令强一百倍。
