zoukankan      html  css  js  c++  java
  • centos7使用rt_tables巧妙配置多网卡多路由实现策略路由

     路由表和策略路由的区别

      通常我们维护静态路由表会手工填写所有IP地址段的路由规则,使用命令或者写入配置文件永久生效,以常见的操作系统Windows/Linux/AIX为例

    #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
    
    #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.211.6.0 192.168.3.1 255.255.255.0 eth0
    10.0.0.0 10.212.52.1 255.0.0.0 eth1
    
    #AIX静态路由
    smitty mkroute
    172.20.14.0/24 gw 172.23.14.254
    这种办法针对少量的规则还可以轻松应对,但规则一旦增加麻烦也就接踵而至,网段地址不断变化就必须及时更新路由表,否则其他用户就无法访问。如果可以根据用户访问进来的路径设定策略路由就会方便很多,而rt_tables就是为此而生

    rt_tables

    rt_tables简单来说就是通过给表的命名使得管理简单化

        大部分人习惯直接将路由表优先级号码直接作为表的名称来使用,这样做的好处是非常直观和简明的表达了表所在优先级的位置,但是当表的优先级结构出现变动时,我们对巨大的路由表的修改就显得很烦琐和费事了。

    在/etc/iproute2/目录下,有这么一个文件rt_tables,只要对它进行改动,我们将很容易的完成路由表优先级结构的变动。(数值越小优先级别越高)

    当路由表的优先级发生变化的时候,我们只需要编辑/etc/iproute2/rt_tables这个文件就可以直接改变路由表的优先级次序。

    [root@peter-host ~]# vim /etc/iproute2/rt_tables 
    #
    # reserved values
    #
    255     local
    254     main
    253     default
    0       unspec
    #
    # local
    #
    #1      inr.ruhep

    Linux最多可以支持255张路由表,其中有3张表是内置的:

    表255 本地路由表(Local table) 本地接口地址,广播地址,已及NAT地址都放在这个表。该路由表由系统自动维护,管理员不能直接修改。

    表254 主路由表(Main table) 如果没有指明路由所属的表,所有的路由都默认都放在这个表里,一般来说,旧的路由工具(如route)所添加的路由都会加到这个表。一般是普通的路由。

    表253 默认路由表 (Default table) 一般来说默认的路由都放在这张表,但是如果特别指明放的也可以是所有的网关路由。

    表 0 保留

    因为VPC网络没有其他网段,所以此处就以同网段的示例:

    原有网卡eth0

    [root@peter-host network-scripts]# cat ifcfg-eth0 
    BOOTPROTO=dhcp
    DEVICE=eth0
    ONBOOT=yes
    TYPE=Ethernet
    USERCTL=no
    IPV6INIT=yes
    DHCPV6C=yes

     新增网卡eth1,ip为自动获取的

     从其他机器ping这两个ip,只有eth0网卡可以通信,eth1不可以

     1、编辑路由策略

     #编辑rt_tables
      echo "251 net_251" >> /etc/iproute2/rt_tables
      echo "252 net_252" >> /etc/iproute2/rt_tables

    # 查看
    [root@peter-host ~]# vim /etc/iproute2/rt_tables # reserved values # 255 local 254 main 253 default 0 unspec

     #
     # local
     #
     #1 inr.ruhep

    #################添加下面两行(数值越小优先级别越高)
    251     net_251
    252     net_252

     2、添加路由规则

    #清空net_251的路由表
    ip route flush table net_251
    # 添加一个路由规则到 net_251 表,这条规则是 net_251 这个路由表中数据包默认使用源 IP 192.168.0.33 通过 eth0 走网关 192.168.0.1
    ip route add default via 192.168.0.1 dev eth0 src 192.168.0.33 table net_251
    #来自 192.168.0.33 的数据包,使用 net_251 路由表的路由规则
    ip rule add from 192.168.0.1 table net_251

     #清空net_252的路由表
      ip route flush table net_252
     # 添加一个路由规则到 net_252 表,这条规则是 net_252 这个路由表中数据包默认使用源 IP 192.168.0.207 通过 eth1 走网关 192.168.0.1
      ip route add default via 192.168.0.1 dev eth0 src 192.168.0.207 table net_252
     #来自 192.168.0.207 的数据包,使用 net_252 路由表的路由规则
      ip rule add from 192.168.0.1 table net_252

    #添加默认网关
    route add default gw 192.168.0.1

     3、如果需要自启动生效可以写进配置文件也可以加入rc.local

    vim /etc/rc.local
    ip route flush table net_251
    ip route add default via 192.168.0.1 dev eth0 src 192.168.0.33 table net_251
    ip rule add from 192.168.0.33 table net_251
    
    ip route flush table net_252
    ip route add default via 192.168.0.1 dev eth1 src 192.168.0.207 table net_252
    ip rule add from 192.168.0.207 table net_252
    
    route add default gw 192.168.0.1

     4、给文件添加 执行权限使其开机执行

    chmod u+x /etc/rc.d/rc.local

     5、重启系统

    6、在其他主机上测试ping这两个ip是否可以通信,此时就可以正常使用了

    查看路由表:

     网关

  • 相关阅读:
    github提交用户权限被拒
    vue数据响应式的一些注意点
    总结一下做移动端项目遇到的坑
    react-router
    promise-async-await
    递归函数
    Linux基础
    所有的数据处理都是map-reduce
    Mac下配置JAVA_HOME
    MySQL高级
  • 原文地址:https://www.cnblogs.com/fengdejiyixx/p/12389641.html
Copyright © 2011-2022 走看看