1. 工具安装

yum install iproute

查看工具是否安装

ip -V

2. ip rule 和 ip route

ip命令中和策略路由相关的OBJECT有 rule 和 route。

查看所有的 rule

ip rule show
优先级  判断条件  动作    表ID 
0: from all lookup local // 任何源地址的包,都查询,local表
32766: from all lookup main
32767: from all lookup default
  local:路由表local包含本机路由及广播信息。
例如,在本机上执行ssh 127.0.0.1时,就会参考这份路由表的内容,
在正常情况下,只要配置好网卡的网络设置,
就会自动生成local路由表的内容,我们应该也不必修改其内容。
main:使用传统命令route -n所看到的路由表就是main的内容。
Linux系统在默认情况下使用这份路由表的内容来传输数据包,
因此,其内容极为重要,在正常情况下,只要配置好网卡的网络设置,
就会自动生成main路由表的内容。
default:最后是default路由表,这个路由表在默认情况下内容为空;
除非有特别的要求,否则保持其内容为空即可。

查看route

ip route show table main      // 显示 表main 的 route
default via 172.17.0.1 dev eth0     // 其他包,发给 172.17.0.1 主机,通过 设备 eth0
169.254.0.0/16 dev eth0 scope link metric 1002 // 目的地址为 169.254.0.0/16 网段的包,使用 eth0 设备发出
172.17.0.0/20 dev eth0 proto kernel scope link src 172.17.0.12 // 目的地址为 172.17.0.0/20 网段的包,通过 eth0 发出。发出的源接口的IP地址是 172.17.0.12

一个包,先查看策略 rule,根据优先级 和 判断条件 找到 路由表,再按照 路由表的路由规则,获得下一跳 IP地址和输出接口,又通过ARP表,获得目的MAC地址和源MAC地址,发包

3.  rule 的添加与删除

3.1 添加规则

                 判断条件               表ID         优先级
ip rule add from 192.168.3.1 table 10 prio 199 // 添加规则,源地址为192.168.3.1的包,使用表10

如果不显示添加优先级,默认优先级数字从32766 (也就是main table) 依次递减,即优先级越来越高。

其他添加示例

ip rule add to 168.95.1.1 table 10 // 目的地址是 168.95.1.1 使用 table 10
ip rule add dev eth2 table 1 // dev eth2 输入的数据,使用 table 1
ip rule add dev eth3 table 3 // dev eth3 输入的数据,使用 table 3

fwmark 和 iptables

iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 80 -j MARK --set-mark 1 // eth3输入的HTTP协议数据,标记为 mark 1
iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 25 -j MARK --set-mark 2 // eth3 输入的SMTP协议数据,标记为 mark 2
iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 110 -j MARK --set-mark 2 // eth3 输入的POP协议数据,标记为 mark 2
iptables -t mangle -A FORWARD -i eth3 -j MARK --set-mark 3 // eth3 输入的其他数据,标记为 mark 3
ip rule add fwmark 1 table 1 // fwmark 1 的数据,使用 table 1
ip rule add fwmark 2 table 2
ip rule add fwmark 3 table 3

3.2 删除规则

ip rule del prio 10
ip rule del from 192.168.1.0/24
ip rule del table 1
ip rule del from 192.168.1.0/24 table 1 prio 10

删除规则,可以使用 优先级,源地址,目的地址,路由表 等信息作为判断条件。

4.1 添加表

ip route add 192.168.1.0/24 dev eth1 table 10   // 任意添加一条路由,以创建表 10. 新建的表10里的路由条目为空

4.2 添加路由

ip route add 192.168.2.0/24 via 10.10.15.50 table main    // 添加,目的地址为 192.168.2.0/24网段的包,网关为 10.10.15.50。添加到表 main

添加路由前,必须保证表已经存在,否则只是创建表。

4.3 删除路由

ip route del default table 10
ip route del 192.168.1.0/24 table 10 // 在表10中,删除目的地址为 192.168.1.0/24 网段的路由

ip rule 策略路由的更多相关文章

  1. Linux系列—策略路由、ip rule、ip route

    早期在管理Linux系统的网络时,常使用ifconfig及route之类的命令,不过如果你准备开始使用Linux强大的基于策略的路由机制,那么,就请不要使用这类工具了,因为这类工具根本无法用于功能强大 ...

  2. Linux下ip route、ip rule、iptables的关系(转)

    1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...

  3. ip route,ip rule, iptables和docker的端口映射

    iptables 默认5个表, 不可增加其他表 raw 用于配置数据包,raw 中的数据包不会被系统跟踪. filter 是用于存放所有与防火墙相关操作的默认表. nat 用于 网络地址转换(例如:端 ...

  4. ip rule实现源IP路由,实现一个主机多IP(或多网段)同时通(外部看是完全两个独立IP)

    利用ip rule实现基于源地址区分路由表,实现一个主机多IP网段同时通.(外部的一个主机无论访问哪个网段都可以访问通)实际应用:创建路由表table200ip route add 192.168.1 ...

  5. TCP/IP卷一没提到的策略路由

    策略路由 tcp/ip书上介绍了选路和动态路由,没有提及策略路由,应该是因为那个年代还不存在策略路由吧,但是这是个很有用的东西. 背景 昨天领导做了一个虚拟机,里面配了两个网络172.16.50.33 ...

  6. ip route rule 路由策略 高级路由 捆绑 网桥

    http://lwfs.net/2005/11/28/10/ #!/bin/bash IP0= IP1= GW0= GW1= NET0= NET1= DEV0=eth0 DEV1=eth1 # com ...

  7. ip策略路由

    ip route 只是基于目的地址的路由选择 ip rule 路由策略,控制路由选择,可根据源地址,源IP等进行路由选择   路由策略由选择符合操作组成 ip rule add   添加策略 ip r ...

  8. 路由知识之ip route 命令中的疑惑

    1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...

  9. Linux 双线策略路由的三种实现方式总结+端口映射

    Linux 双线策略路由的三种实现方式总结+端口映射 Linux 双线策略路由的三种实现方式总结+端口映射 网络环境 服务器(网关): eth0 为LAN口,IP为 LAN_IP = 192.168. ...

随机推荐

  1. h5的第一份翻译

    <!DOCTYPE html>DOCTYPE DOC文本文档documentTYPE 类型html hyper超,超级的:text文本:markup标记:language语言<htm ...

  2. C语言/C++编译环境的设置!有的人还没开始就卡住了!

    本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器. 文本编辑器 这将用于输入您的程序.文本编辑器包括 Windows Notepad. ...

  3. 编程语言拟人:来自C++、Python、C语言的“傲娇”自我介绍!

    软件工程领域,酷爱编程的人很多,但另一些人总是对此避之不及.而构建软件无疑会让所有人压力山大,叫苦连连.   来看看这些流行编程语言的"内心独白",JAVA现实,C++傲娇,Rus ...

  4. go 不停模拟 写日志

    package main import ( "os" "errors" "math/rand" "time" " ...

  5. spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)

    一,网站哪些情况下需要发送电子邮件? 作为一个电商网站,以下情况需要发邮件通知用户: 注册成功的信息 用邮箱接收验证码 找回密码时发链接 发送推广邮件 下单成功后的订单通知 给商户的对账单邮件 说明: ...

  6. centos8安装kafka(单机方式)

    一,下载kafka 1,官网地址 http://kafka.apache.org/downloads.html 2,下载 [root@localhost source]# wget http://mi ...

  7. C#中string类的几个方法(indexof、lastindexof、substring)(转)

    String.IndexOf String.IndexOf 方法 (Char, Int32, Int32) 报告指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检查指定数量的字符位置 ...

  8. log4j日志级别怎么搞

    日志的级别之间的大小关系如右所示:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF Log4j建 ...

  9. Python ( 学习 基础篇第一部 )

    目录 注释 注释的分类 注释的注意点 变量 变量的概念 变量的声明 变量的命名 变量的交换 变量的缓存机制 常量 进制 进制的转换 原码 反码 补码 六大数据类型 Number 的四大类 字符串 st ...

  10. LeakCanary检测内存泄漏

    内存泄漏原因: 线程造成的内存泄漏 Handler造成的内存泄漏 单例导致内存泄露 静态变量导致内存泄露 非静态内部类导致内存泄露 未取消注册(BroadcastReceiver )或回调导致内存泄露 ...