你有没有遇到过这种情况:公司内网能上,外网打不开;或者家里两台路由器接在一起,手机连A能上网,连B就只能刷本地页面?问题很可能出在网关和路由表没配对。
先搞清楚:网关和路由表是啥?
网关就像小区门口的保安,负责决定数据包该往哪送。比如你访问百度,电脑一看目标IP不在本地网段(比如192.168.1.x),就得把包交给网关——通常是路由器的LAN口地址(如192.168.1.1)。
路由表就是这张‘送件地图’,记录着:去哪个网段、走哪条路、下一跳是谁。Windows/Linux 都自带这张表,不用装软件,命令行就能看、能改。
Windows 查看和添加静态路由
按 Win+R,输入 cmd 回车,执行:
route print
你会看到一堆类似这样的行:
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 25
这表示:所有非本地流量(0.0.0.0/0),都发给网关 192.168.1.1,本机出口是 192.168.1.100。
假设你多加了一块网卡,连的是测试网段 10.0.2.0/24,网关是 10.0.2.1,但默认路由只认主网卡。这时要手动加一条:
route add 10.0.2.0 mask 255.255.255.0 10.0.2.1
加完再 route print,就能看到新路由了。注意:重启后会消失,如需永久生效,加 -p 参数:
route -p add 10.0.2.0 mask 255.255.255.0 10.0.2.1
Linux 下操作更直接
打开终端,用 ip route 查看:
ip route show
常见输出:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
要添加一条去 172.16.0.0/16 的路由,走另一台网关 192.168.1.254:
sudo ip route add 172.16.0.0/16 via 192.168.1.254
想删掉?换成 del:
sudo ip route del 172.16.0.0/16
永久保存需写入配置文件(如 Ubuntu 的 /etc/netplan/*.yaml 或 CentOS 的 /etc/sysconfig/network-scripts/route-eth0),不同发行版略有差异,但核心逻辑不变:告诉系统“某段IP,别瞎猜,就走这个门”。
一个小提醒
改路由表不是“越加越多越好”。曾有用户为绕过公司监控,一口气加了七八条自定义路由,结果微信发不出消息、钉钉收不到通知——因为某些App的服务器IP被误判成内网地址,被强行发去了错误网关。动手前,先用 ping 和 tracert(Windows)或 traceroute(Linux)确认路径是否合理。