静态路由和策略路由的配置实践

2016-03-21 10:18:35 +08:00
 wsgzao
## 前言

一般在多网卡的网络访问关系中我们通常根据目标 IP 地址段来添加静态路由(static-routes),在主机系统配置层面这个需求一般都比较简单也不需要使用非常复杂的命令,说实话如果不是因为开发测试中心同事的乱入启发,我也不会发现还有策略路由这样一种灵活通用的配置方法来实现 Linux 多网卡多路由的设定,灰常感谢。

> 策略路由的出现在某些业务场景下可能更优于静态路由

---

## 更新记录

2016 年 03 月 18 日 - 更新静态路由配置和建议
2015 年 12 月 23 日 - 增加 Linux 添加静态路由最佳实践
2015 年 12 月 18 日 - 修正动态路由为策略路由描述,完善内容,感谢@extreme
2015 年 12 月 17 日 - 初稿

阅读原文 - http://wsgzao.github.io/post/static-routes/

扩展阅读

- Routing Tables - http://linux-ip.net/html/routing-tables.html
- linux 配置静态路由 - http://www.361way.com/linux-define-static-route/4053.html
- Linux 策略性路由应用及分析(iproute2) - http://tilt.lib.tsinghua.edu.cn/node/408
- Linux Advanced Routing & Traffic Control - http://lartc.org/
3377 次点击
所在节点    程序员
9 条回复
xuboying
2016-03-21 13:05:42 +08:00
请教楼主一个问题,有这么个场景,多个 gw ,配了几百条静态路由,部分走 gw_a ,部分走 gw_b ,当某个 gw 不通的时候希望能快速切换到另一个,现在的做法是删光所有路由,重新 add 一遍所有,能否通过策略路由简单实现呢?
xuboying
2016-03-21 13:07:18 +08:00
gw_a gw_b 都是可用网关,只是速度不同。
czz811
2016-03-21 13:48:41 +08:00
@xuboying 配置路由的管理距离,优先级高的那条路由失效后会自动切换到另一条
xuboying
2016-03-21 13:51:34 +08:00
@czz811 我没有运行任何动态路由协议,只有手工 ping 来确认 gw 是否有效,这种方式下如何告之系统某个 gw 失效?
wsgzao
2016-03-21 15:28:20 +08:00
@xuboying 这个业务场景我没有办法测试,你如果有测试机可以按照策略路由的方法实践一下
jasontse
2016-03-21 16:01:04 +08:00
@xuboying 同时添加两条 metric 各不相同的路由
mhycy
2016-03-21 16:41:49 +08:00
@xuboying
我所理解的情况是没法做两端心跳的情况下只能手工配置(就是你说的那样)
也许可以用子接口的方式实现
eth0.1 eth1.1 均为路由端口
eth0.2 eth1.2 心跳使用

如果 eth0.1/eth1.1 挂了,把端口 down 掉
正常情况下,路由不会向一个已关闭的端口发送数据(需要优先级策略)
xuboying
2016-03-21 18:48:08 +08:00
@wsgzao 测试环境不在公网上,是公司的测试机。验证路由只要用 ip route get x.x.x.x 看看 gw 对不对就行了。我的思路是 enable 一个 table ,或者 disable 一个 table ,或者优先某个 table, 不知道能否这么用
holyzhou
2016-03-21 23:15:59 +08:00
依稀记得好像我们把这个用在电信联通的源地址返回上 从哪个口进来从那个口出去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/265061

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX