如何在CentOS 7中阻止内核自动添加子网路由
如何在CentOS 7中阻止内核自动添加子网路由
我完全懂你的烦恼——明明已经把所有子网路由都规划到自定义的100和200路由表里了,结果每次重启系统,内核就自作主张把这些子网路由又塞回main表,把你的配置搞得一团糟。这其实是CentOS 7内核的默认行为,咱们可以通过以下两种方法彻底解决这个问题:
方法一:修改网卡配置,直接阻止内核生成路由
这个方法是从源头切断内核添加路由的可能,最彻底:
- 找到对应VLAN接口的配置文件,比如VLAN10的配置在
/etc/sysconfig/network-scripts/ifcfg-VLAN10,同理VLAN20和VLAN30的配置文件也在这个目录下 - 打开每个配置文件,添加一行配置:
IPADDR_NO_DYNAMIC_ROUTING="yes" - 保存文件后,重启网络服务让配置生效:
或者直接重启系统也行。之后内核就不会再自动把该子网的路由添加到main表了。systemctl restart network
方法二:开机后自动清除main表的内核路由
如果方法一没生效(比如某些特殊的VLAN配置场景),可以用这个兜底方案,通过启动脚本自动清理:
- 创建一个自定义启动脚本,比如
/etc/rc.d/init.d/clear-main-routes,内容如下:#!/bin/bash # 清除main表中由内核自动添加的子网路由 ip route flush table main proto kernel - 给脚本添加执行权限:
chmod +x /etc/rc.d/init.d/clear-main-routes - 设置脚本开机自启:
这样每次系统启动完成后,这个脚本会自动把main表里那些内核偷偷加上的路由清掉,保证main表符合你的预期。chkconfig --add clear-main-routes
额外注意事项
别忘了确保你的自定义路由表100和200里已经正确配置了对应的静态路由,比如:
ip route add 192.168.10.0/24 dev VLAN10 table 100 ip route add 192.168.20.0/24 dev VLAN20 table 200 ip route add 192.168.30.0/24 dev VLAN30 table 100 # 根据你的实际需求调整路由表编号
这些静态路由可以写到/etc/rc.local文件里,或者专门的路由配置文件中,确保开机时能自动加载。
备注:内容来源于stack exchange,提问作者Peet
相关产品推荐
相关产品推荐

