zoukankan      html  css  js  c++  java
  • Linux 基于策略的路由

    Linux 基于策略的路由(Linux Policy Routing)

    Linux 有传统的基于数据包目的地址的路由算法,和新的基于策略的路由算法
    新算法优点:支持多个路由表,支持按数据报属性(源地址、目的地址、协议、端口、数据包大小、内容等)选择不同路由表


    # 查看规则命令,后面可跟其它参数,默认为 show(list) 显示全部
    ip rule

    系统默认有3条记录
    0: from all lookup local
    32766: from all lookup main
    32767: from all lookup default

    各部分解释
    xx: 第一列数字是优先级,小的数字优先级高
    lookup [xxx] : 表示搜索xxx路由表,1-252之间的数字或名称
    中间部分内容:如 from all, 这是规则

    整行的意思就是,如果一个数据包符合规则(源地址、目的地址、协议、端口、数据包大小、内容等),则使用指定路由表


    # 系统最多支持255个路由表。文件 /etc/iproute2/rt_tables
    # 可以看到系统保留的表及对应名称,253:default 254:main 255:local
    # 可以自由添加自定义名称
    # 查看路由表命令,参数可用数字或名称
    ip route list table 101
    ip route list table main
    ip route list cache

    # 清除表或内存缓存
    ip route flush table 101
    ip route flush cache


    # 示例

    ##清空一个路由表
    ##添加一条路由
    ##添加这个表的默认路由
    ##添加规则使用这个表,如果没有指定优先级,则使用比现在规则最小数字
    ip route flush table 100
    ip route add 192.168.1.0/24 dev eth0 src 192.168.1.240 table 100
    ip route add default dev eth0 table 100
    ip rule add from 192.168.1.242 table 100 [pre 12345]


    # 示例2 (Linux 多个网卡使用相同网段的IP地址设置)
    ## Linux 系统带4个网卡,连接同一交换机,设置同一网段的IP,
    ## eth0-eth3 IP分别是 192.168.1.240-243
    ## 默认情况下 route -n 的结果是按 eth up 的顺序决定的,
    ## IP 实际上都全部指向第一块 UP 的网卡,可以在其它机器上 ping 这4个IP,使用 arp -a 查看到
    ## 全部 IP 都关连到相同的 MAC 地址
    ## 这样的结果就是保留第一条网线,拔掉其它网线,其它机器还是能连通这4个IP
    ## 意味着4个网卡,设置了4个相同网段的IP,但是数据流全部通过第一个网卡传输

    ## 执行以下命令
    ip route flush table 100
    ip route flush table 101
    ip route flush table 102
    ip route flush table 103

    ip route add default dev eth0 table 100
    ip route add default dev eth1 table 101
    ip route add default dev eth2 table 102
    ip route add default dev eth3 table 103

    ip rule add from 192.168.1.240 table 100
    ip rule add from 192.168.1.241 table 101
    ip rule add from 192.168.1.242 table 102
    ip rule add from 192.168.1.243 table 103

    ip route flush cache
    ## 在其它机器上 ping 这4个IP ,使用 arp -a 查看到
    ## IP 关连的 MAC 已经不相同了。
    ## 拔掉任意一条网线,其它机器就会连不上对应的 IP
    ## 这就表示不同 IP 使用各自的网卡传输数据了。

  • 相关阅读:
    【应用】Linux内存调试工具:valgrind
    Python UnboundLocalError: local variable 'xxx' referenced before assignment 解决方法
    MYSQL连接时错误码2059解决办法
    Python encode()、decode()方法详解
    genymotion自动化使用
    论文数据集
    Native Apps、Web Apps和Hybrid Apps
    C# 中如何进行私有(private)函数测试
    Windows10 计划任务开始失败
    如果系统盘后面是恢复盘,如何扩充系统盘
  • 原文地址:https://www.cnblogs.com/gaozhengwei/p/7098024.html
Copyright © 2011-2022 走看看