精华内容
下载资源
问答
  • route命令详解 千次阅读
    2020-12-16 23:44:12

    route命令详解


    在网络中,route命令用来显示、添加、删除和修改网络的路由。


    1.route命令的格式

    route [-f] [-p] [Command] [Destination] [mask Netmask] [Gateway] [metric Metric] [if Interface]


    2.route-参数的含义:

    route -f:用于清除路由表。

    route -p:用于创建永久路由。

    route Comman:主要有print(打印路由)、ADD(添加路由)、DELETE(删除路由)、CHANGE(修改路由)4个常用命令。

    route Destination:表示到达的目的IP地址。

    route MASK:表示子网掩码的关键字。

    route Netmask:表示具体的子网掩码,如果不进行设置,系统默认设置成255.255.255.255(单机IP地址),添加掩码时要注意,特别是要确认添加的是某个IP地址还是IP网段,如果代表全部出口子网掩码可用0.0.0.0。

    route Gateway:表示出口网关。

    route interface:表示特殊路由的接口数。

    route metric:表示到达目的网络的跳数。


    3.window系统下的route命令:

    (1)要显示路由表:

    route print

    (2)要显示网络中以192开始的路由,可以输入:

    route print 192.*

    (3)要添加默认网关为地址为192.168.12.1的默认路由,可以输入:

    route add 0.0.0.0 mask 0.0.0.0 192.168.12.1

    (4)要添加目标地址为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1的路由,可以输入:

    route add 10.41.0.0 mask 255.255.0.0 10.27.0.1

    (5)要添加目标地址为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1的永久路由,可以输入:

    route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1

    (6)要添加目标地址为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1,跃点数为5的路由,可以输入:

    route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 5

    (7)要添加目标地址为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址为10.27.0.1,接口索引为0x3的路由,可以输入:

    route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3

    (8)要删除目标地址为10.41.0.0,子网掩码为255.255.0.0的路由,可以输入:

    route delete 10.41.0.0 mask 255.255.0.0

    (9)要删除IP路由表中以10.1开始的所有路由,可以输入:

    route delete 10.*

    (10)要将目标地址为10.41.0.0,子网掩码为255.255.0.0,下一个跃点地址由10.27.0.1更改为10.27.0.25,可以输入:

    route change 10.41.0.0 mask 255.255.0.0 10.27.0.25


    4.window系统下route命令高级进阶(实现双网卡同时使用:有线网卡上内网,无线网卡上外网)

    在做项目的时候,经常可能会用到外网与内网切换使用,插拔网线切换内外网非常麻烦,我们举一个例子来实现外网与内网在电脑上同时使用(一个通过有线网卡联网,一个通过无线网卡联网)。

    实例:

    有一台笔记本,有两个网卡,一个有线网卡,一个无线网卡都连上了内网和外网,其中外网的网关是49.222.151.207,内网的网关是10.168.1.1,如何实现双网卡同时使用有线网卡上内网、无线网卡上外网?

    第一步:设置无线网卡为默认路由网关。

    步骤:进入网络适配器,依次点击“无线网络连接属性”-“Internet协议(TCP/IP)”-“属性”-“高级”,手动添加无线路由网关,添加自己的外网网关为49.222.151.207,跃点数为“1”,是最高优先级。这一步设置后,如果有线网连接,无线网连接同时存在的话,所有的数据都是经由无线网卡处理的。

    第二步:使用route print命令查看一个0.0.0.0的网络目标分别映射你的内外网的网关。

    C:\Users\Administrator>route print
    网络目标         网络掩码         网关        接口       跃点数
    0.0.0.0         0.0.0.0          10.168.1.1      10.168.1.143  45
    0.0.0.0         0.0.0.0          49.222.151.207  10.168.1.143  46

    当然,这里你也可以对当前的路由进行删除

    C:\Users\Administrator>route delete 0.0.0.0
    操作完成!

    第三步:通过route命令将所有网段添加到外网网卡,设置为默认路由,即所有的ip都走外网。

    C;\Users\Administrator>route add 0.0.0.0 mask 0.0.0.0 49.222.151.207
    操作完成!

    用route print 命令来查看路由表,查看路由是否添加成功。

    C:\Users\Administrator>route print
    网络目标    网络掩码   网关   接口     跃点数
    0.0.0.0    0.0.0.0   10.168.1.1      10.168.1.143  45
    0.0.0.0    0.0.0.0   49.222.151.207  10.168.1.143  46

    第四步:通过route命令将内网网段添加到内网网卡,内网使用,即10.168.0.0这个ip段走内网。

    C:\Users\Administartor>route add 10.168.0.0 mask 255.255.0.0
    操作完成1

    用route print 命令来查看路由表,查看路由是否添加成功。

    C:\Users\Administrator>route print
    网络目标    网络掩码   网关    接口   跃点数
    0.0.0.0     0.0.0.0  49.222.151.207   10.168.1.143   50
    10.168.0.0  255.255.0.0  10.168.1.1   10.168.1.143   51

    整个设置过程的含义是对于所有IP地址访问,都从49.222.151.207网关走;

    但是对于0.168.0.0开头的地址访问,从10.168.1.1走。

    这样实现了不插拔网线的方式来切换网络。

    更多相关内容
  • Linux系统中的route命令能够用于IP路由表的显示和操作。它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口,如eth0。当使用”add”或者”del”参数时,路由表被修改,如果没有参数,则显示...
  • CHNROUTE_AUTO 此仓库提供了中国网络(chnroute)的原始路由表,包括ipv4和ipv6。 受信任的数据由APNIC( 。 此提供的数据旨在填补分解后的,并将每小时更新一次。 如何使用chnroute_auto数据 您可以在任何需要的...
  • route命令怎么查看网关及路由信息?win7系统中想要查看网关及路由信息,该怎么查看呢?我们可以使用route命令查看,下面我们就来看看详细的教程,需要的朋友可以参考下
  • Route.js 允许在浏览器中特定 url 下执行 JavaScript 代码 设置 在 HTML 标记中包含 Route.js 脚本: < script src =" js/route.min.js " > </ script > 用法 在您的应用程序代码中,像这样使用route...
  • chnroute.txt文件生成器 使用shell生成chnroute.txt文件。 用法 Usage: ./chnroute.sh [-l] [-m merge.txt] [output.txt] -l: add local domain ip address -m: merge file from merge.txt -s: slient mode ...
  • 此资源有两个文件,含 nginx-upstream-jvm-route 和 nginx 对应版本,都是tar.gz文件。 安装方法网上很多就不写了,亲测可用。 不用担心版本不匹配造成安装失败,再浪费积分去到处下载尝试的烦恼。 此资源有两个文件...
  • CentOS7操作系统已经默认采用iproute2工具集中的网络工具了,自己学习时也走了不少弯路,偶尔发现这篇文章总结的很好,分享给大家。
  • 好用的route,以及 telnet包 已经在centos6, 7上测试过完美运行一键安装!将压缩包解压后里面有两个rpm安装包直接安装就好!
  • OP-Route(Open Programming Route,开放可编程路由)是控制器根据自己的选路规则 优选出来的,并通过NETCONF接口下发给转发设备的路由,转发设备收到该OP-Route 后保存在路由表中,最后BGP引入该OP-Route并进行发布...
  • CCNP-ROUTE_300-101

    2018-01-29 21:59:12
    CCNP Routing and Switching ROUTE 300-101 Official Cert Guide
  • 一、Iproute2简介 Iproute2是一个在Linux下的高级网络管理工具软件。实际上,它是通过rtnetlink sockets方式动态配置内核的一些小工具组成的,从Linux2.2内核开始,Alexey Kuznetsov 实现了通过rtnetlink sockets...

    一、Iproute2简介

    Iproute2是一个在Linux下的高级网络管理工具软件。实际上,它是通过rtnetlink sockets方式动态配置内核的一些小工具组成的,从Linux2.2内核开始,Alexey Kuznetsov 实现了通过rtnetlink sockets用来配置网络协议栈,它是一个现代的强大的接口。

    centos安装iproute2命令:

    yum install -y iproute
    ip -V

    二、iproute2常用命令

    在这里插入图片描述
    net-tools和iproute2的大致对比:

    net-toolsiproute2功能
    netstat -r/route -nip route show查看路由信息
    route addip route add添加路由
    route delip route del删除路由
    ifconfigip link显示up状态(激活状态)的网卡信息
    ifconfig -aip addr show显示所有网卡的信息,包含未up的
    ifconfig -sip -s link显示摘要信息
    ifconfig -helpip -help查看帮助
    ifconfig eth0 upip link set eth0 up启动网卡
    ifconfig eth0 downip link set eth0 down停掉网卡
    netstatss监控工具
    netstat -lss -l查看listen监听状态的连接信息
    iptunnelip tunnelip隧道
    netstat -g/ipmaddrip maddr多播地址管理
    arp -naip neigharp地址解析信息ip->mac地址

    三、路由(ip rule、ip route)

    3.1、路由策略(ip rule)

    基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。

    ip rule 命令:

    Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 添加;del 删除; llist 列表)

    3.1.1、添加规则
    1)Source IP

    根据来源端IP来决定数据包参考哪个路由表发送出去。以下两个示例分别指出,如果数据包的来源端IP是192.168.182.10,就参考路由表10;如果来源端IP为192.168.182.0/24网段的IP,就参考路由表20。

    ip rule add from 192.168.182.10 table 10  
    ip rule add from 192.168.182.0/24 table 20 
    

    2)Destination IP

    根据目的端IP来决定数据包参考哪个路由表发送出去。以下两个示例分别指出,如果数据包的目的端IP是192.168.183.1,就参考路由表10;如果目的端IP是192.168.183.0/24网段的IP,就参考路由表20。

    ip rule add to 192.168.183.1 table 10  
    ip rule add to 192.168.183.0/24 table 20 
    

    3.1.2、示例:

    # 添加路由表
    echo '1024    tab1' >> /etc/iproute2/rt_tables
    # 通过路由表 tab1 路由来自源地址为192.168.182.0/24的数据包,优先级220
    ip rule add from 192.168.182.0/24 table tab1 prio 220
    # 把源地址为192.168.182.247的数据报的源地址转换为192.168.182.130,并通过表tab1进行路由
    ip rule add from 192.168.182.247 nat 192.168.182.130 table tab1 prio 320
    
    # 删除
    ip rule del from 192.168.182.0/24 table tab1 prio 220
    ip rule del from 192.168.182.247 nat 192.168.182.130 table tab1 prio 320
    

    在这里插入图片描述

    我们执行ip rule show命令所显示内容的第一个字段就是优先级别(prio),数字越小,代表优先级别越高,也代表这条规则可以排得越靠前,如此数据包在进行条件匹配时,就会越早匹配到这条规则,从输出的数据中,默认优先级别0、32766及32767已被占用,因此,在添加规则时,如果没有特别设置优先级别,那么,优先级别默认会从32766开始递减,如32765、32764……,如果我们需要特别设置优先级别,可以在ip rule add命令的最后加上prio XXX参数。

    3.2、路由表 (使用 ip route 命令操作静态路由表)

    所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径。路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。路由表根据其建立的方法,可以分为动态路由表静态路由表

    linux 系统中,可以自定义从 1-252个路由表,其中,linux系统维护了4个路由表:

    0: 系统保留表
    253: defulte table 没特别指定的默认路由都放在改表
    254: main table 没指明路由表的所有路由放在该表,**默认表**
    255: locale table 保存本地接口地址,广播地址、NAT地址 由系统维护,用户不得更改
    

    备注:我们使用ip route list 或 route -n 或 netstat -rn查看的路由记录,也都是main表中记录。

    路由表的查看可有以下二种方法:

    ip route list table table_number
    ip route list table 1204
    ip route list table table_name
    ip route list table tab1
    

    路由表序号和表名的对应关系在 /etc/iproute2/rt_tables 文件中,可手动编辑。路由表添加完毕即时生效,下面为实例(最好把默认路由最后添加):

    ip route add 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab1
    ip route add default via 192.168.182.2 dev ens33 proto static metric 100 table tab1
    

    默认路由需要特别注意,走默认路由的话会导致非同一子网内的访问失败

    3.3、route 命令里面的metric是做什么用的?

    metric 为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。

    路由算法使用了许多不同的metric以确定最佳路径。复杂的路由算法可以基于多个metric选择路由,并把它们结合成一个复合的metric。常用的metric如下:
    1)路径长度

    【路径长度】是最常用的路由metric。一些路由协议允许网管给每个网络链接人工赋以代价值,这种情况下,路由长度是所经过各个链接的代价总和。其它路由协议定义了跳数,即分组在从源到目的的路途中必须经过的网络产品,如路由器的个数

    2)可靠性

    可靠性,在路由算法中指网络链接的可依赖性(通常以位误率描述),有些网络链接可能比其它的失效更多,网路失效后,一些网络链接可能比其它的更易或更快修复。任何可靠性因素都可以在给可靠率赋值时计算在内,通常是由网管给网络链接赋以metric值。

    3)延迟

    路由延迟指分组从源通过网络到达目的所花时间。很多因素影响到延迟,包括中间的网络链接的带宽、经过的每个路由器的端口队列、所有中间网络链接的拥塞程度以及物理距离。因为延迟是多个重要变量的混合体,它是个比较常用且有效的metric。

    4)带宽

    带宽指链接可用的流通容量。在其它所有条件都相等时,10Mbps的以太网链接比64kbps的专线更可取。虽然带宽是链接可获得的最大吞吐量,但是通过具有较大带宽的链接做路由不一定比经过较慢链接路由更好。例如,如果一条快速链路很忙,分组到达目的所花时间可能要更长。

    5)负载

    负载指网络资源,如路由器的繁忙程度。负载可以用很多方面计算,包括CPU使用情况和每秒处理分组数。持续地监视这些参数本身也是很耗费资源的。

    6)通信代价

    通信代价是另一种重要的metric,尤其是有一些公司可能关系运作费用甚于性能。即使线路延迟可能较长,他们也宁愿通过自己的线路发送数据而不采用昂贵的公用线路。

    四、ip route基本用法

    4.1、显示ip地址

    ip a
    ip address show
    ip addr show dev ens33
    ip a sh ens33
    

    4.2、列出规则,查看表

    ip rule
    ip rule list
    ip rule show
    

    4.3、增加/删除/清空规则

    # 增加规则
    ip rule add from 192.168.1.10 table 10  
    ip rule [del|delete]
    ip rule del from 192.168.1.10 table 10
    # 清空所有规则,没有参数
    ip rule flush
    

    4.4、列出路由

    ip route list
    ip route show
    ip route
    # 显示所有路由表的路由
    ip route show table all
    

    4.5、查看指定网段的路由

    ip route list 192.168.182.0/24
    

    4.6、添加路由

    ip route add 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab1
    # 添加默认路由
    ip route add default via 192.168.182.2 dev ens33 proto static metric 100 table tab1
    

    4.7、删除路由

    ip route del 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab1
    ip route del default via 192.168.182.2 dev ens33 proto static metric 100 table tab1
    

    4.8、清空指定网络的路由

    # 清空默认表路由
    ip route flush
    # 清空指定表路由
    ip route flush table tab1
    # 模糊匹配清空路由
    ip route flush 192.168.182.0/24 
    #这个是清理所有192.168.182.0/24相关的所有路由,
    #有时候设置错网关存在多条记录,就需要一次性清空相关路由再进行添加
    

    五、路由分类之动态路由

    动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。它是与静态路由相对的一个概念,指路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文。

    常见的动态路由协议有以下几个:

    路由信息协议(RIP)、OSPF(Open Shortest Path First开放式最短路径优先)、IS-IS(Intermediate System-to-Intermediate System,中间系统到中间系统)、边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。

    六、ip route结合iptables做高级路由策略

    1、创建路由表tab2

    echo '1025    tab2' >> /etc/iproute2/rt_tables
    

    2、添加 ip rule 规则

     ip rule add  fwmark 3  table tab2 
    

    (fwmark 3是标记,table tab1是路由表tab1。 意思就是凡是标记了 3 的数据使用tab1 路由表)
    3、添加路由规则

    ip route add 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab2
    # 添加默认路由
    ip route add default via 192.168.182.2 dev ens33 proto static metric 100 table tab2
    

    4、使用iptables给相应的数据打上标记:

     iptables -A PREROUTING -t mangle -i ens33 -s 192.168.182.130-192.168.182.180 -j MARK --set-mark 3
    

    因为mangle的处理是优先于 nat 和fiter表的,所以相应数据包到达之后先打上标记,之后再通过ip rule规则。对应的数据包使用相应的路由表进行路由,最后读取路由表信息,将数据包送出网关。

    七、traceroute命令使用

    7.1、简介

    traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在 Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

    7.2、命令格式:

    traceroute [-dFlnrvx][-f<存活数值>][-g<网关>…][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

    命令参数:

    -d 使用Socket层级的排错功能。
    
    -f 设置第一个检测数据包的存活数值TTL的大小。
    
    -F 设置勿离断位。
    
    -g 设置来源路由网关,最多可设置8个。
    
    -i 使用指定的网络界面送出数据包。
    
    -I 使用ICMP回应取代UDP资料信息。
    
    -m 设置检测数据包的最大存活数值TTL的大小。
    
    -n 直接使用IP地址而非主机名称。
    
    -p 设置UDP传输协议的通信端口。
    
    -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
    
    -s 设置本地主机送出数据包的IP地址。
    
    -t 设置检测数据包的TOS数值。
    
    -v 详细显示指令的执行过程。
    
    -w 设置等待远端主机回报的时间。
    
    -x 开启或关闭数据包的正确性检验。
    
    7.3、简单使用

    1)不加任何参数

    $ traceroute www.baidu.com 
    

    输出:

    traceroute to www.baidu.com (183.232.231.174), 30 hops max, 60 byte packets
     1  gateway (192.168.182.2)  0.094 ms  0.077 ms  0.044 ms  0.079 ms
     2  * * * *
     3  * * * *
     4  * * * *
     5  * * * *
     6  * * * *
     7  * * * *
     8  * * * *
     9  * * * *
    10  * * * *
    11  * * * *
    12  * * * *
    13  * * * *
    14  * * * *
    15  * * * *
    16  * * * *
    17  * * * *
    18  * * * *
    19  * * * *
    20  * * * *
    21  * * * *
    22  * * * *
    23  * * * *
    24  * * * *
    25  * * * *
    26  * * * *
    27  * * * *
    28  * * * *
    29  * * * *
    30  * * * *
    

    说明:

    • 记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送3个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.baidu.com ,表示向每个网关发送4个数据包。
    • 有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
    • 有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加**-n 参数来避免DNS解析**,以IP格式输出数据。
      2)跳数设置(-m)
    $ traceroute -m 10 www.taobao.com
    

    输出:

    traceroute to www.baidu.com (183.232.231.174), 10 hops max, 60 byte packets
     1  gateway (192.168.182.2)  0.116 ms  0.095 ms  0.036 ms
     2  * * *
     3  * * *
     4  * * *
     5  * * *
     6  * * *
     7  * * *
     8  * * *
     9  * * *
    10  * * *
    

    3)显示IP地址,不查主机名(-n)

    $ traceroute -n -m 4 www.baidu.com
    

    输出:

    traceroute to www.baidu.com (183.232.231.174), 4 hops max, 60 byte packets
     1  192.168.182.2  0.079 ms  0.039 ms  0.037 ms
     2  * * *
     3  * * *
     4  * * *
    

    4)探测包使用的基本UDP端口设置8080(-p)

    $ traceroute -p 8080 -m 4 www.baidu.com
    

    输出:

    traceroute to www.baidu.com (183.232.231.174), 4 hops max, 60 byte packets
     1  gateway (192.168.182.2)  0.096 ms  0.042 ms  0.067 ms
     2  * * *
     3  * * *
     4  * * *
    

    5)绕过正常的路由表,直接发送到网络相连的主机(-r)

    $ traceroute -r www.baidu.com
    

    输出:

    traceroute to www.baidu.com (183.232.231.174), 30 hops max, 60 byte packets
    connect: Network is unreachable
    

    6)把对外发探测包的等待响应时间设置为3秒(-w)

    $ traceroute -w 3 -m 4 www.baidu.com
    

    输出:

    traceroute to www.baidu.com (183.232.231.174), 4 hops max, 60 byte packets
     1  gateway (192.168.182.2)  0.102 ms  0.065 ms  0.066 ms
     2  * * *
     3  * * *
     4  * * *
    
    展开全文
  • 配置route-map详解

    2013-08-28 21:12:01
    详解route-map,怎么使用route-map,怎么配置route-map,route-map的类型。
  • 前端MVC框架AngularJS路由视图所需资源Angular-route.js
  • Aroute使用

    千次阅读 2022-04-01 10:24:20
    Aroute使用 Aroute基本使用 你好! 这是Aroute的基本使用 1. 定义 由于公司项目进行了拆分,我司就用上了阿里的这个ARouter框架。对于为啥使用这个框架,我相信很多人知道原因,借用阿里的云栖社区的一段话:我们所...

    Aroute使用

    Aroute基本使用

    你好! 这是Aroute的基本使用

    1. 定义

    由于公司项目进行了拆分,我司就用上了阿里的这个ARouter框架。对于为啥使用这个框架,我相信很多人知道原因,借用阿里的云栖社区的一段话:我们所使用的原生路由方案一般是通过显式intent和隐式intent两种方式实现的,而在显式intent的情况下,因为会存在直接的类依赖的问题,导致耦合非常严重;而在隐式intent情况下,则会出现规则集中式管理,导致协作变得非常困难。而且一般而言配置规则都是在Manifest中的,这就导致了扩展性较差。除此之外,使用原生的路由方案会出现跳转过程无法控制的问题,因为一旦使用了StartActivity()就无法插手其中任何环节了,只能交给系统管理,这就导致了在跳转失败的情况下无法降级,而是会直接抛出运营级的异常。这时候如果考虑使用自定义的路由组件就可以解决以上的一些问题,比如通过URL索引就可以解决类依赖的问题;通过分布式管理页面配置可以解决隐式intent中集中式管理Path的问题;自己实现整个路由过程也可以拥有良好的扩展性,还可以通过AOP的方式解决跳转过程无法控制的问题,与此同时也能够提供非常灵活的降级方式。那么我就总结一下ARouter的使用方法

    2. 特点

    由于公司项目进行了拆分,我司就用上了阿里的这个ARouter框架。对于为啥使用这个框架,我相信很多人知道原因,借用阿里的云栖社区的一段话:我们所使用的原生路由方案一般是通过显式intent和隐式intent两种方式实现的,而在显式intent的情况下,因为会存在直接的类依赖的问题,导致耦合非常严重;而在隐式intent情况下,则会出现规则集中式管理,导致协作变得非常困难。而且一般而言配置规则都是在Manifest中的,这就导致了扩展性较差。除此之外,使用原生的路由方案会出现跳转过程无法控制的问题,因为一旦使用了StartActivity()就无法插手其中任何环节了,只能交给系统管理,这就导致了在跳转失败的情况下无法降级,而是会直接抛出运营级的异常。这时候如果考虑使用自定义的路由组件就可以解决以上的一些问题,比如通过URL索引就可以解决类依赖的问题;通过分布式管理页面配置可以解决隐式intent中集中式管理Path的问题;自己实现整个路由过程也可以拥有良好的扩展性,还可以通过AOP的方式解决跳转过程无法控制的问题,与此同时也能够提供非常灵活的降级方式。那么我就总结一下ARouter的使用方法

    3.使用

    1.配置app下build.gradle文件

        defaultConfig {
            applicationId "com.example.test"
            minSdk 21
            targetSdk 32
            versionCode 1
            versionName "1.0"
    
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    
            javaCompileOptions {
                annotationProcessorOptions {
                    arguments = [ moduleName : project.getName() ]
                }
            }
        }
    

    添加依赖

     implementation 'com.alibaba:arouter-api:1.2.2'
        annotationProcessor 'com.alibaba:arouter-compiler:1.1.3'
    

    2.初始化Aroute
    新建applicaiton 初始化aroute

    public class BaseApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            if (isDebug(getApplicationContext())){
                ARouter.openLog();
                ARouter.openDebug();
            }
            ARouter.init(this);
        }
    
    
        public static boolean isDebug(Context context) {
            try {
                ApplicationInfo info = context.getApplicationInfo();
                return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
            } catch (Exception e) {
                return false;
            }
        }
    }
    

    注意在AndroidMainfest.xml配置application

    <application
            android:name=".base.BaseApplication"
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/Theme.Test">
    

    3.配置跳转基本类

    /**
     * time 2022/4/1
     * sen
     * Aroute跳转基本类
     */
    public class Rroute {
        public static final String MAIN="/main/main";//首页
        public static final String ONE="/module/one";//模组首页
        public static final String TWO="/test/two";//测试首页
    }
    

    4.新建对应activity
    对应activity添加path

    @Route(path = Rroute.TWO)
    @Route(path = Rroute.ONE)
    
    

    5.实现跳转

          ARouter.getInstance().build(Rroute.ONE).navigation();
    

    编译即可,基本的跳转就是这样了

    6.传递数据
    发送数据,可以选择发送类型

    ARouter.getInstance().build(Rroute.TWO)
                            .withString("name","sen")
                            .withInt("age",25)
                            .withParcelable("data",new TestParcelable("sen",16))
                            .navigation();
    

    目标类
    利用Autowired注解

    @Autowired
        String name;
    
        @Autowired
        int age;
    
        @Autowired
        TestParcelable data;
    

    利用inject初始化传输的数值

            ARouter.getInstance().inject(this);
            textView.setText(name+"年龄"+age+"data"+data.getAge());
    
    
    展开全文
  • Linux系统route、ip route、ip rule简介

    千次阅读 2020-08-25 14:48:51
    一、相关概念 1. 路由(Routing) 路由是指设备从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。...Linux 2.x以上,路由表由1~2^31范围内的数字或文件/etc/iproute2/rt

    一、相关概念

    1. 路由(Routing)

    路由是指设备从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程

    2. 路由表(routing table)

    所谓路由表,指路由器或者其互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量表中包含的信息决定了数据转发的策略。路由表根据其建立的方法,可以分为动态路由表和静态路由表。

    Linux 2.x以上路由表由1~2^31范围内的数字或文件/etc/iproute2/rt_tables中的名称标识。其中,系统维护了4个路由表(0, 253, 254, and 255),其余管理员可自定义:

    0#表:系统保留表

    253#表:default table,是一个空表为一些后续处理保留的

    254#表:main table,所有没指明路由表的路由保存在该表

    255#表:local table,保存本地路由和广播路由,由系统维护

    路由表序号和表名的对应关系在/etc/iproute2/rt_tables 文件中,可手动编辑。

    3. 策略路由

    策略路由是指按照用户制定的策略进行路由选择,是一种比基于目标网络进行路由更加灵活的数据包路由转发机制它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。

    4. 路由选择

    当TCP/IP需要向某个IP地址发起通信时,它会对路由表进行评估,以确定如何发送数据包。评估过程如下:

    (1) TCP/IP使用需要通信的目的IP地址和路由表中每一个路由项的网络掩码进行相与计算,如果相与后的结果匹配对应路由项的网络地址,则记录下此路由项。

    (2) 当计算完路由表中所有的路由项后:

    (a) TCP/IP选择记录下的路由项中的最长匹配路由(网络掩码中具有最多“1”位的路由项)来和此目的IP地址进行通信。

    (b) 如果存在多个最长匹配路由,那么选择具有最低跃点数的路由项。

    (c) 如果存在多个具有最低跃点数的最长匹配路由,那么:均根据最长匹配路由所对应的网络接口在网络连接的高级设置中的绑定优先级来决定(一般有线(eth0) > 无线 (wlan0) > 移动信号(4G))。

    (d) 如果优先级一致,则选择最开始找到的最长匹配路由。(排在前面的路由)

    网络路由的优先级介于主机路由和默认路由之间,精度越高,优先级越高。

    二、route

    传统显示/操作内核IP路由表的工具(net-tools工具包的一部分),主要用途是通过接口设置到特定主机或网络的静态路由。

    1. 查看路由表信息

    -C

    显示路由缓存

    -v

    显示详细的操作

    -n

    显示数字地址,不尝试确定主机名,加快显示速度

    -e

    使用netstat格式显示路由表

    -ee

    使用更详细的信息显示路由表

    路由表输出项说明:

    Destination

    目标网络或目标主机

    Gateway

    网关地址”*”(如果未设置)

    Genmask

    目标网络的网络掩码255.255.255.255为主机,0.0.0.0为默认路由

    Flags

    路由标记,可能的标记包括

    U--路由是活动的

    H--主机路由

    G--网关路由

    R--恢复动态路由产生的表项

    D--由路由的后台程序动态创建

    M--由路由的后台程序修改

     ! --阻塞路由

    Metric

    路由距离,到达指定网络所需的跳跃数(linux内核没有使用

    Ref

    使用此路由的活动进程个数(linux内核没有使用)

    Use

    查找此路由的次数

    Iface

    该路由项对应的输出接口

    2. 操作静态路由

    命令格式:route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

    add

    添加路由

    del

    删除路由

    -net

    目标是一个网络

    -host

    目标是一个主机

    target

    目标网络或主机,可以是IP地址或网络主机名

    netmask NM

    添加网络路由时用到的网络掩码

    netmask匹配的位数越高该条路由匹配时的优先级也越高

    gw GW

    指定通过网关路由,后面接网关地址

    metric M

    设置路由的metric字段(路由跳数)它用在路由表里存在多个路由选择与转发包中的目标地址最为匹配的路由所选的路由具有最少的跃点数,故Metric值越小,优先级越高。

    dev If

    指定网络接口发送数据,如果dev If是最后一个选项,则dev可以省略

    3. 应用实例

    1)添加默认网关路由

    route add default gw 192.168.7.1

    2)删除默认网关路由

    route del default gw 192.168.7.1

    3)添加到指定网络的路由

    route add -net 224.0.0.0/8 ens33

    4)删除到指定网络的路由

    route del -net 224.0.0.0 netmask 255.0.0.0 ens33

    三、ip route

    配置内核路由表中静态路由的工具,是iproute2工具包的一部分,可以和ip rule工具组合配置策略路由。

    1. 命令格式

    常见命令格式如下:

    ip route { list | flush } SELECTOR
    ip route 操作命令 匹配条件 [ via [ FAMILY ] ADDRESS ] [ dev STRING ]

    ip route

    查看默认路由表(main)路由

    ip route {add|append}

    添加新路由

    ip route change

    更改路由,修改当前存在的路由

    ip route replace

    更改或添加新路由

    ip route {del|delete}

    根据条件(to、tos、preference和table关键字值)删除指定路由

    ip route {list|show}

    显示路由表的内容或匹配特定条件的路由,缺省为显示main表

    to SELECTOR--显示特定目的地的路由

    table TABLEID--显示指定表的路由,TABLEID为路由表的id或all(所有路由表)、cache(路由缓存)其中之一

    from SELECTOR--显示特定源的路由

    protocol RTPROTO--显示指定协议的路由

    scope SCOPE_VAL--显示指定作用域的路由

    type TYPE--显示指定类型的路由

    dev NAME--显示经过指定设备接口的路由

    via [ FAMILY ] PREFIX--显示通过特定下一跳路由的路由

    src PREFIX--显示通过特定上一跳路由的路由

    ip route flush

    删除特定条件的路由,参数同ip route show

    ip route get ADDRESS

    获取特定IP的路由包信息

    【附录】

    to TYPE PREFIX

    路由目的地址,TYPE缺省为unicast,PREFIX缺省为0/0

    metric NUMBER

    路由跳数

    preference NUMBER

    路由权重

    table TABLEID

    将要操作的路由表

    dev NAME

    发送接口名称

    via [ FAMILY ] ADDRESS

    下一跳路由的地址,该字段取决于路由类型

    src ADDRESS

    指定使用特定源地址(多IP或多网卡情况),只对该主机产生的网络包有效

    scope SCOPE_VAL

    目的地作用域,SCOPE_VAL可以是数值或字符串(/etc/iproute2/rt_scopes),缺省时网关单播路由为global,直接单播和广播路由为link,本地路由为host

    protocol RTPROTO

    路由协议标记,RTPROTO可以是数值或字符串(/etc/iproute2/rt_protos),缺省时为boot,常见的有如下几种:

    redirect--ICMP重定义创建

    kernel--内核自动配置创建

    boot--系统启动过程创建,路由进程启动后将被删除

    static--管理员手动创建

    ra--路由发现协议创建

    FAMILY := [ inet | inet6 | ipx | dnet | mpls | bridge | link ]

    TYPE := [ unicast | local | broadcast | multicast | throw | unreachable | prohibit | blackhole | nat ]

    TABLE_ID := [ local| main | default | all | NUMBER ]

    SCOPE := [ host | link | global | NUMBER ]

    RTPROTO := [ kernel | boot | static | NUMBER ]

    2. 应用实例

    1)显示路由

    示例一:显示指定路由表的路由

    ip route show table 10

    示例二:显示指定网段的路由

    ip route list 192.168.7.0/24

    示例三:显示所有路由表的路由

    ip route show table all

    2)添加路由表

    示例一:通过添加路由方式添加路由表

    ip route add 192.168.11.0/24 dev ens33 table 100

    注:table 100为不存在的路由表ID

    示例二:通过配置文件方式添加路由表

    echo "252 TEST" >> /etc/iproute2/rt_tables

    注:252 为路由表ID,TEST为路由表名

    3)添加路由

    命令格式:ip route add TARGET [via GW] [dev IFACE] [src SOURCE_IP] [table TABLEID]

    【注】TARGET可以是:

    主机路由:具体IP地址

    网络路由:NETWORK/MASK

    示例一:添加默认路由

    ip route add default via 192.168.7.1 table 10

    示例二:添加到指定网络的路由

    ip route add 192.168.11.0/24 via 192.168.7.1 metric 10 table 10

    示例三:添加到指定主机的路由

    ip route add 192.168.11.1 dev ens33

    4)追加路由

    ip route append 192.168.5.0/24 via 192.168.7.1

    5)修改路由

    方法一:

    ip route change 192.168.2.0/24 via 192.168.7.2

    方法二:

    ip route replace 192.168.3.0/24 via 192.168.7.2

    6)删除路由

    命令格式:ip route del TARGET [via GW] [dev IFACE] [src SOURCE_IP] [table TABLEID]

    示例一:删除指定表中默认路由

    ip route del default table 100

    示例二:删除特定网络路由

    ip route del 192.168.5.0/24 via 192.168.7.1

    示例三:删除指定表中特定网络路由

    ip route del 192.168.1.0/24 table 100

    7)清空路由表

    示例一:清空所有路由表

    ip route flush

    示例二:清空指定网络的路由

    ip route flush 192.168.2.0/24

    三、ip rule

    策略路由规则管理工具。Linux系统在启动时,内核会为路由策略数据库配置三条缺省的规则: 

    1)优先级:0,匹配任何数据包,查询路由表local(ID 255)。local表是一个特殊的路由表,包含本地和广播地址的高优先级控制路由,使用者不应删除或重写它

    2)优先级:32766,匹配任何数据包,查询路由表main(ID 254)。main表是包含所有非策略路由的常规路由表。管理员可以删除或用其他规则重写此规则

    3)优先级:32767,匹配任何数据包,查询路由表default(ID 253)。default表是一个空表,它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理,可以删除此规则

    1. 命令格式

    ip rule [ list | add | del | flush] SELECTOR ACTION

    常见操作如下:

    ip rule add

    插入新规则

    ip rule {del|delete}

    删除特定规则

    ip rule flush

    删除所有规则,没有参数

    ip rule show

    显示规则,list和lst等同于show,没有参数

    常见匹配条件如下:

    type TYPE (default)

    选择规则类型匹配,共有如下几种类型:unicast、blackhole、unreachable、prohibit、nat

    from PREFIX

    选择源地址前缀匹配

    to PREFIX

    选择目的地址前缀匹配

    iif NAME

    选择要匹配的接收设备

    oif NAME

    选择要匹配的发送设备

    fwmark MARK

    选择fwmark值匹配

    priority PREFERENCE

    指定此规则的优先级,每个规则都有唯一优先级,preference和order等同于priority

    table TABLEID

    规则匹配时要查找的路由表标识

    ACTION := [ table TABLE_ID ]

                       [ realms [SRCREALM/]DSTREALM ]

                       [ goto NUMBER ]

    TABLE_ID := [ local | main | default | NUMBER ]

    不要混淆路由表和策略:规则指向路由表,多个规则可以引用一个路由表,且某些路由表可以没有策略指向它。如果系统管理员删除了指向某个路由表的所有规则,这个表就没有用了,但是仍然存在,直到里面的所有路由都被删除,它才会消失。

    2. 应用实例

    1)显示规则

    命令格式:ip rule {show|list|lst}

    输出说明:

    a) 第一个字段表示规则的优先级,数字越小,表示优先级越高

    b) 第二个字段表示匹配条件

    c) 第三个字段表示表id,可能是表名或数值

    2)添加规则

    命令格式:ip rule add 匹配条件 [优先级] [表id]

    【注】表缺省为main;优先级缺省从main或自定义最低优先级序号开始,然后依次递减,即优先级越来越高

    示例一:添加IP段和目的IP策略路由

    ip rule add from 192.168.7.0/24 to 8.8.8.8 prio 10 table 200

    示例二:添加接收设备策略路由

    ip rule add dev ens33 table 1

    示例三:添加fwmark值策略路由

    ip rule add fwmark 1

    3)删除规则

    命令格式:ip rule del [匹配条件] [优先级] [表id]

    【注】匹配条件、表id、优先级可以同时指定其中一个或多个,如果缺省会按照优先级顺序,从最高优先级依次删除

    示例一:根据优先级删除

    ip rule del prio 10

    示例二:根据匹配条件删除

    ip rule del from 192.168.7.0/24 to 8.8.8.8

    示例三:根据路由表id删除

    ip rule del table 200

    示例四:根据匹配条件、表id和优先级删除

    ip rule del from 192.168.7.0/24 to 8.8.8.8 prio 10 table 200

    四、参考资料

    1. https://www.cnblogs.com/EasonJim/p/8424731.html

    2. https://blog.csdn.net/u011857683/article/details/83795435

    展开全文
  • route 命令详解

    万次阅读 2019-07-24 00:04:54
    一般使用route delete、route add、route print这三条命令可解决路由的所有功能。   2.1 打印路由信息  打印路由信息使用命令:route print。 ==================================================...
  • P1收到该消息后,发现request-URI中的URI不属于自己负责的域,而消息有Route头域,并且第一个Route头域中的URI正是自己,因此删除之,并且把消息转发给新的第一个Route头域中的URI,也就是P2: BYE sip:callee@...
  • AWS Route53 简介 笔记

    千次阅读 2020-03-27 10:55:48
    Route53简介 Amazon Route 53是一种高可用、高扩展性的云DNS服务。它为开发人员和企业提供一种非常可靠和经济的方法,把对用户友好的、易读的域名(比如aws.xiaopeiqing.com)转换为IP地址(例如120.79.65.207)。...
  • ROUTE: route addition failed

    千次阅读 2019-09-26 10:22:42
    ROUTE: route addition failed 1)报FlushIpNetTable failed on interface错误应对:以管理员身份运行OpenV-P-N2)报Warning: route gateway is not reachable on any active network adapters错误应对:以管理员...
  • Route Generator version 1.6 汉化版(动态旅行路线图), 下载一张地图,设定要走的线路即可生成动态旅行路线.avi文件
  • iproute2-cookbook 允许将 iproute2 安装为服务的 Chef 食谱... 流浪插件 要使用 Vagrantfile,您需要安装一些插件: vagrant plugin install vagrant-berkshelf vagrant plugin install vagrant-omnibus vagrant...
  • Linux route详解

    千次阅读 2021-03-13 01:26:45
    route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网...
  • Route 设置Linux路由表

    千次阅读 2021-01-27 06:00:18
    route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网...
  • route add命令如何使用

    千次阅读 2021-05-17 16:39:23
    route add命令用于在本地IP路由表中显示和修改条目,使用不带参数的ROUTE可以显示帮助,代码为【route [-f] [-p] [command [destination] [mask netmask] ....】。route add命令使用情况:一、具体功能该命令用于在...
  • 为什么选择 Amazon Route 53?1. 基本介绍2. Amazon Route 53 的优势域名解析迁移步骤1. 创建并配置托管区域2. 创建 DNS 解析记录3. 迁移域名到 Route 53总结 为什么要迁移域名? 最近和一个小伙伴聊天时,他说因为...
  • linux下route add route del 用法

    千次阅读 2020-12-24 02:42:27
    显示现在所有路由#routeroot@ubuntu:~# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface10.147.9.0 * 255.255.255.0 U...
  • CCNP ROUTE学习指南642-902(人民邮电出版,中文版,高清扫描,带详细书签,方便查阅。 全网唯一。
  • 本文详述了TwinCAT添加Route注意事项。其中包含了Windows防火墙设置,IP地址设定,TwinCAT AMS地址设定,及XP、CE系统Add Route密码等内容
  • SIP route与record_route SIP路由机制

    千次阅读 2019-04-16 14:19:28
    P1收到该消息后,发现request-URI中的URI不属于自己负责的域,而消息有Route头域,并且第一个Route头域中的URI正是自己,因此删除之,并且把消息转发给新的第一个Route头域中的URI,也就是P2:  BYE sip:callee@u2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 491,168
精华内容 196,467
关键字:

route