必须先将自定义路由表编号和名称写入/etc/iproute2/rt_tables,格式为“数字 空格 表名”,数字建议≥100且不可重复或使用系统保留值(0、253、254、255),表名仅支持小写字母、数字和下划线。

自定义路由表编号必须先写入 /etc/iproute2/rt_tables 文件,格式为“数字 空格 表名”,且数字建议 ≥100、不能重复、不可使用系统保留值(0、253、254、255)。
编号不是随意指定的 ID,而是路由策略数据库(RPDB)中表的索引值。Linux 内核通过这个数字识别路由表,ip route 和 ip rule 命令中的 table 参数实际接受的是该数字或其对应名称(需提前注册)。
正确添加自定义路由表编号
- 编辑
/etc/iproute2/rt_tables:sudo nano /etc/iproute2/rt_tables
- 在文件末尾追加一行(注意:只能用空格分隔,不能用 Tab 或等号):
100 tab_eth0 101 tab_eth1
- 表名只能含小写字母、数字和下划线;
tab-eth0、my-table这类含短横线或点的名称会失败。
✅ 合法示例:100 eth0_main、105 lan_route、200 backup_net
❌ 非法示例:100 tab-eth0(含短横线)、100 "eth0"(带引号)、100 eth0:main(含冒号)
编号选择注意事项
- 系统已占用关键编号:
-
0→unspec(未指定) -
253→default -
254→main(route命令默认操作的表) -
255→local(内核自维护,含本地地址、广播等高优先级路由)
-
- 自定义推荐从
100起,避开1–99(部分发行版或工具可能预占) - 不同表编号必须唯一,重复会导致
ip route add table X报错RTNETLINK answers: No such file or directory
验证是否生效
- 查看当前所有注册表名与编号:
cat /etc/iproute2/rt_tables
- 尝试向新表添加一条路由(不报错即编号已识别):
ip route add 192.168.10.0/24 dev eth0 table tab_eth0 ip route show table tab_eth0 # 应显示刚加的路由
注意:修改
rt_tables后无需重启系统或服务,但已有 shell 会话中未执行过的ip命令会立即识别新名称;已存在的路由或规则不会自动迁移,需手动补全。











