
1. 路由表到底是干什么的?
可以简单理解为:
- 路由表决定了本机发出数据时,应该通过哪个网卡(接口)、哪个 IP 地址,送往目标地址。
- 路由表只在数据发出时生效,接收数据时不会再走路由表。
发送过程:
当程序发起连接请求时,系统查询路由表,找到最合适的“出站路径”,然后将数据包发出去。
接收过程:
返回的数据包,是根据你发送请求时使用的源 IP 返回的。只要你的网卡绑定了这个 IP,系统就能正确接收,无需再经过路由表查找。
总结一句话:
路由表只影响发送路径,而不影响接收路径。
2. route add
命令格式详解
手动添加一条路由时,通常会用到 route add
命令,基本格式如下:
route add <目标地址> mask <子网掩码> <下一跳网关> [metric 跃点数] [if 接口编号]
各参数含义:
- 目标地址:你想要访问的 IP 或网段。
- 子网掩码:定义匹配范围,
255.255.255.255
代表单个 IP。 - 下一跳网关:数据包应该送给哪个网关。
- metric(跃点数):优先级,数字越小优先级越高(可选)。
- if(接口编号):指定使用哪块网卡发出(可选)。
如果不指定 if
,系统会根据网关地址自动选择一个可达的网卡。
示例
route add 8.8.8.8 mask 255.255.255.255 192.168.100.1
含义是:
- 访问 8.8.8.8 的请求
- 通过 192.168.100.1 这个网关转发出去
- 让系统自动选择合适的接口发送
如果想明确指定接口,可以加上 if
:
route add 8.8.8.8 mask 255.255.255.255 192.168.100.1 if 9
接口编号可以通过 route print
命令查看。
3. 在哪些场景下需要手动管理路由表?
虽然日常办公用不到,但在企业、运维、开发环境中,手动添加或删除路由表是很常见的操作。以下列举几个实际场景。
场景一:服务器多网卡分流
有些服务器有两张网卡:
- 一张连内网,用来访问数据库
- 一张连外网,用来访问互联网
希望:
- 内网流量走内网网卡
- 外网流量走公网网卡
这时候就需要手动添加路由,指定内网地址走内网接口。
场景二:VPN 分流访问
连接 VPN 后,不希望所有流量都走 VPN(否则速度会变慢),只希望访问公司内网的流量走 VPN,其它访问仍走本地网络。
这时需要删除默认路由,并且只为内网网段添加专门的路由条目。
场景三:虚拟机或容器网络桥接配置
当宿主机配置了多个 IP,而虚拟机或 Docker 容器需要访问特定网段时,可能要手动补充路由,保证数据走对的路径。
场景四:流量走跳板机或透明代理
如果公司设置了跳板机或代理服务器,需要手动指定某些 IP 段通过代理转发。
场景五:解决多网卡冲突问题
插了两根网线后,可能因为多个默认网关导致网络异常。这种情况下需要手动调整或删除错误的默认路由。
4. 一个小总结
可以这么理解:
- 平时上网,就像开导航走系统推荐的路线。
- 遇到特殊需求,比如避开拥堵、走高速、走免费路,就需要自己手动改路线(配置路由表)。
掌握好 route add
、route delete
、route print
这些基本指令,可以让你在网络环境中自由地控制流量走向,大大提升故障排查与运维能力。