前言

linux修改默认路由表,一般情况下使用route增删查即可,但多网卡情况下,linux出网使用默认路由表,但被访问时,回包走的却不是,如果只添加route add/del回包下一跳很有可能还是添加之前的路由,原因很大可能是因为需要创建被访问网卡的路由表;如果遇到这样的情况,可以按照如下方式修改尝试。

以下情况设置为两个网卡的情况

不同段情况下

修改默认路由表

  • 新增新网关,删除旧网关
1
2
route add -net 0.0.0.0/0 gw 网关 dev 网卡名称
route del -net 0.0.0.0/0 gw 旧网关
  • 永久生效,写入开机自启文件
1
2
echo "route add -net 0.0.0.0/0 gw 网关 dev 网卡名称" >> rc.local
echo "route del -net 0.0.0.0/0 gw 旧网关" >> rc.local

创建路由表

创建两个路由表分别为:route-table1,route-table2

1
2
echo "10 route-table1" >> /etc/iproute2/rt_tables
echo "20 route-table2" >> /etc/iproute2/rt_tables

10和20分别为优先级,小的优先级大

添加路由规则

  • 每个网卡添加两条设置:格式说明如下:
1
2
ip route add default via 默认网关 dev 网卡名称 table 路由表名称
ip rule add from 网卡ip ip table 路由表名称
  • 永久
1
2
echo "ip route add default via 默认网关 dev 网卡名称 table 路由表名称" >> rc.local
echo "ip rule add from 网卡ip ip table 路由表名称" >> rc.local

同段情况下

需要修改的网卡正常修改路由即可,另外不需要修改的网卡改成静态即可,但有时可能环境问题导致还是需要像不同段那样创建路由表。