V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wsgzao
V2EX  ›  程序员

使用 rt_tables 巧妙配置 Linux 多网卡多路由实现动态路由

  •  
  •   wsgzao ·
    wsgzao · 2015-12-17 12:59:47 +08:00 · 3410 次点击
    这是一个创建于 3266 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

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

    rt_tables 是一种更加简单灵活的动态路由实现方法


    更新记录

    2015 年 12 月 17 日 - 初稿

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

    扩展阅读


    静态路由表和动态路由的区别

    通常我们维护静态路由表会手工填写所有 IP 地址段的路由规则,使用命令直接临时生效或者写入配置文件永久生效,先以 Windows 和 Linux 常用命令行方法为例

    --Windows 静态路由
    --键入 route -p add [目标] [mask <网络掩码>] [网关] [metric <度量值>] [if <接口>]
    route print
    route delete
    route -p add 172.16.19.0 mask 255.255.255.0 198.15.0.1
    注意关闭 windows 防火墙
    
    #Linux 静态路由
    --RHEL
    vi /etc/sysconfig/network
    default via 192.168.3.1 dev eth0
    10.211.6.0/24 via 192.168.3.1 dev eth0
    10.0.0.0/8 via 10.212.52.1 dev eth1
    
    --SuSE
    vi /etc/sysconfig/network/routes
    default 192.168.3.1 - -
    10.0.0.0 10.212.52.1 255.0.0.0 eth1
    10.211.6.0 192.168.3.1 255.255.255.0 eth0
    

    这种办法针对少量的规则还可以轻松应对,但规则一旦增加麻烦也就接踵而至,网段地址不断变化就必须及时更新路由表,否则其他用户就无法访问。如果可以根据用户访问进来的路径设定动态路由就会方便很多,而 rt_tables 就是为此而生。

    第 1 条附言  ·  2015-12-18 11:49:09 +08:00
    2015 年 12 月 18 日 - 修正动态路由为策略路由描述,完善内容,感谢 @extreme
    http://wsgzao.github.io/post/iproute2/
    11 条回复    2015-12-18 15:52:17 +08:00
    extreme
        1
    extreme  
       2015-12-17 13:38:50 +08:00   ❤️ 1
    #刷新 net_192 路由表
    说清空不是更好理解吗?
    #添加回环地址
    真可笑,这句话什么意思
    为什么不说添加一个路由规则到 net_192 表,这条规则是 net_192 这个路由表中数据包默认使用源 IP 172.31.192.201 通过 ens4f0 走网关 172.31.192.254 。
    #从 172.31.192.201 过来的,走 net_192 路由
    为什么不说来自 172.31.192.201 的数据包,使用 net_192 路由表的路由规则

    写教程不解释每个命令各个参数及其作用,就丢个稀里糊涂的介绍,是你不知道还是你觉得大家都知道?
    你这样配写教程文章吗?
    extreme
        2
    extreme  
       2015-12-17 13:40:20 +08:00
    一时激动说多了,等被喷。
    julyclyde
        3
    julyclyde  
       2015-12-17 14:21:48 +08:00
    lz 还没搞清楚输入命令和编辑文件的重大区别呢,居然把 windows 里键入命令和 Linux 里编辑文件相提并论
    jasontse
        4
    jasontse  
       2015-12-17 14:24:03 +08:00 via iPad
    原来动态路由是这意思啊,大开眼界。
    那策略路由是什么呢?
    wsgzao
        5
    wsgzao  
    OP
       2015-12-17 15:40:47 +08:00 via Android
    @extreme 我写出来就是要不断学习和完善,我没有说自己的理解是准确的,我相信大家的知识面比我更广更有说服力
    wsgzao
        6
    wsgzao  
    OP
       2015-12-17 15:43:35 +08:00 via Android
    @julyclyde 我只是按照习惯写,语句表述有误,后面会统一修改
    e1eph4nt
        7
    e1eph4nt  
       2015-12-17 17:34:32 +08:00
    1. 这是策略路由
    2. iproute2 命令跟 route 命令混用很奇怪,建议都用 iproute2
    wsgzao
        8
    wsgzao  
    OP
       2015-12-17 19:47:27 +08:00 via Android
    @e1eph4nt 学习了,我再去 redhat 看看原文如何解释的
    maoyipeng
        9
    maoyipeng  
       2015-12-18 09:44:13 +08:00 via iPhone
    wsgzao
        10
    wsgzao  
    OP
       2015-12-18 11:45:58 +08:00
    @extreme 已按照你的写法更新,只是 flush 我可能习惯理解刷新缓存,不过也无妨啦,有问题或者更好的办法欢迎继续分享哈

    @maoyipeng 谢谢,已增加链接
    dandycheung
        11
    dandycheung  
       2015-12-18 15:52:17 +08:00
    赞楼主的态度。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1000 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:15 · PVG 05:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.