精华内容
下载资源
问答
  • linux路由表详解

    2013-03-24 12:39:58
    linux路由表详解,详细的路由结构和linux系统路由的设置等内容
  • -- 罗素1 路由原理从图示中可以看出:能够操作系统路由表的的有三个实体:路由守护程序 routed路由命令 routenetstat命令其中,netstat命令只能读取路由信息无法直接对系统路由表进行操作。增删路由表信息,只能由...

    乞丐并不會妒忌百萬富翁,但是他肯定會妒忌收入更高的乞丐。 -- 罗素

    1 路由原理

    route.png

    从图示中可以看出:能够操作系统路由表的的有三个实体:

    路由守护程序 routed

    路由命令 route

    netstat命令

    其中,netstat命令只能读取路由信息无法直接对系统路由表进行操作。

    增删路由表信息,只能由路由守护程序 routed与路由命令 route提供。两者的区别在于:

    守护程序 routed提供动态路由管理功能,即通过实际网络状况操作动态路由信息。

    路由命令 route 则提供了供系统管理员修改静态路由信息的接口。

    下面分别就:linux系统与mac系统进行命令对比介绍。

    2 路由表查询

    2.1 Linux

    # netstat

    $: netstat -rn

    Kernel IP routing table

    Destination Gateway Genmask Flags MSS Window irtt Iface

    0.0.0.0 172.16.15.253 0.0.0.0 UG 0 0 0 eth0

    169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0

    ...

    # ip route

    $: ip route list

    default via 172.16.15.253 dev eth0

    169.254.0.0/16 dev eth0 scope link metric 1002

    172.16.0.0/20 dev eth0 proto kernel scope link src 172.16.5.102

    ...

    ip 命令是一个非常强大网络管理命令,不仅仅是操作路由表。更多功能请参阅 man ip 或者 tldr ip 。

    2.2 MacOS

    $: netstat -rn

    该系统不支持ip命令。

    3 路由表操作

    3.1 Linux

    # 格式: ip route { add | del | change | append | replace } ROUTE

    # add

    $: ip route add 192.168.0.0/24 via 172.16.15.253 dev eth0

    # del

    $: ip route del 192.168.0.0/24 via 172.16.15.253 dev eth0

    # get 指定目的IP的路由信息

    $: ip route get 172.18.0.10

    172.18.0.10 dev br-6e39d6696d98 src 172.18.0.1

    cache

    3.2 MacOS

    不支持ip命令, 提供独立的route命令。更多帮助参考 man route

    # add

    $: sudo route add -net 192.168.0.0/24 192.168.255.9

    # del

    $: sudo route del -net 192.168.0.0/24 192.168.255.9

    # get 指定目的IP的路由信息, 支持域名查询

    $: route get www.google.com

    route to: 74.125.24.105

    destination: default

    mask: 128.0.0.0

    gateway: 192.168.255.5

    interface: utun1

    flags:

    recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire

    0 0 0 0 0 0 1500 0

    4 路由规则

    除了我们常说的系统路由表以外,系统中还有一个路由规则route rule的概念。

    IP Rule 子命令主要用于控制管理 ip 的路由规则。 所谓 rule 看起来更像是 table.

    这个规则主要管理控制的是路由表[IP Route Table]。即,所谓路由规则,就是路由表。

    不妨先看看,默认情况下,系统有哪些路由表:

    $: ip rule [list]

    0: from all lookup local

    32766: from all lookup main

    32767: from all lookup default

    默认情况下,系统提供了 local, main, default 三张路由表。

    再来看看这三张路由表的具体路由信息:

    local路由表,主要记录了本地

    $: ip route list table local

    broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1

    local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1

    local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1

    broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1

    broadcast 172.17.0.0 dev docker0 proto kernel scope link src 172.17.0.1

    ...

    main路由表,

    $: ip route list table main

    default via 192.168.0.253 dev eth0

    169.254.0.0/16 dev eth0 scope link metric 1002

    172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1

    ...

    可以和ip route的输出对比一下,可以看出ip route命令就是默认输出main路由表信息

    再看看default路由表, 可以看出,默认情况下,该表是空的。

    ip rule子命令作为管理路由表的规则,有什么具体意义呢?具体路由表中的路由信息又是如何路由的呢?

    再看看ip rule list的输出,不难发现,这三张路由表,又称为路由规则。只不过路由规则在路由表的基础上增加了优先级的概念。优先级可以从具体路由表条目前的数字得出。数字越低,优先级越高。

    4.1 自定义路由规则

    由此规则,我们就可以增加自己的路由规则.按照各自要求设置优先级,以及具体路由表。

    实际在操作ip rule时,我们常常是将数据包进行标记处理,通过对应标记来设置相应的路由表。

    4.1.1 对数据包进行标记

    例如,我们机器上有双网卡,eth0与eth1,我们对于所有服务进程发出的数据包,通过匹配具体服务的端口号进行标记,如下例子:

    对所有来源端口是8080的数据输出包进行标记处理,设置标记2

    $: iptables -t mangle -A OUTPUT -p tcp --sport 8080 -j MARK --set-mark 2

    4.1.2 对标记的数据包进行自定义路由

    既然数据包已经有了标记,既可以具体按标记设置路由规则了。同上的例子,我们首先增加一条路由规则。

    # 标记2的数据包按照2号路由规则表路由

    $: ip rule add priority 10000 fwmark 2 table 2

    再给2号路由规则表添加具体的路由信息:

    //取 eth1 的默认网关地址

    $: gateway=`netstat -rn | grep eth1 | grep H | awk '{print $2}'`

    // 添加一条默认路由,使用该规则的包,默认通过网卡eth1进行路由

    $: ip route add default via $gateway dev eth1 table 2

    4.2 查看路由规则信息

    $: ip route list table 2

    更多文章可直接访问个人BLOG:GitDiG.com

    展开全文
  • 查看 Linux 内核路由表  使用下面的 route 命令可以查看 Linux 内核路由表。  # route  Destination Gateway Genmask Flags Metric Ref Use Iface  192.168.0.0 * 255.255.255.0 U 0 0 0 eth0  ...
  • linux删除路由表条目I know the routing tables on Linux is in memory after being set. However, where are the routing table entries stored on disk? I mean where are the routing table is persistently ...

    linux删除路由表条目

    I know the routing tables on Linux is in memory after being set. However, where are the routing table entries stored on disk? I mean where are the routing table is persistently stored so that the routing table can be reloaded like the iptables (under /etc/sysconfig/iptables on Fedora/RHEL/CentOS Linuxes).

    我知道设置后Linux上的路由表已在内存中。 但是,路由表条目存储在磁盘上的什么位置? 我的意思是将路由表永久存储在哪里,以便可以像iptables(在Fedora / RHEL / CentOS Linuxes上的/etc/sysconfig/iptables下)一样重新加载路由表。

    If the system uses the /etc/rc.d/init.d/network script to manage the network, the static routing rules are stored in /etc/sysconfig/static-routes. This is the related script about applying the rules from static-routes in the network script file:

    如果系统使用/etc/rc.d/init.d/ network脚本来管理网络,则静态路由规则存储在/etc/sysconfig/static-routes 。 这是有关在network脚本文件中应用来自static-routes的规则的相关脚本:

    # Add non interface-specific static-routes.
        if [ -f /etc/sysconfig/static-routes ]; then
           grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
              /sbin/route add -$args
           done
        fi    
    

    The network script reads from /etc/sysconfig/static-routes the lines starting with “any” and passes the following arguments to the /sbin/route command.

    network脚本从/etc/sysconfig/static-routes读取以“ any”开头的行,并将以下参数传递给/sbin/route命令。

    For example: A line like this in static-routes:

    例如:在静态路由中这样的一行:

    any host 10.1.1.8 gw 8.9.10.11

    runs command:

    运行命令:

    route add -host 10.1.1.8 gw 8.9.10.11

    If the system uses NetworkManager to manage the network, the NetworkManager GUI tools provides a dialog to set the routing rules. In the “Editing config_name” dialog’s “IPv4 Settings” tab (for IPv4), there is a button “Routes” which will opens the form that you can configure the routing rules.

    如果系统使用NetworkManager来管理网络,则NetworkManager GUI工具将提供一个对话框来设置路由规则。 在“编辑config_name”对话框的“ IPv4设置”选项卡(对于IPv4)中,有一个“路由”按钮,它将打开您可以配置路由规则的表单。

    Answered by Peter M..
    彼得·M。的回答

    翻译自: https://www.systutorials.com/where-are-the-linux-routing-table-entries-stored-on-disk/

    linux删除路由表条目

    展开全文
  • 主要介绍了Linux路由表详细介绍的相关资料,希望通过本文大家能彻底了解Linux 路由表的知识,需要的朋友可以参考下
  • linux路由表的查看和含义

    万次阅读 2018-08-11 16:19:31
    1.关于路由表的一个例子解析 查看命令:netstat -rn 先执行带-r选项的netstat命令,列出路由表,然后以-n选项再次执行该命令,以数字格式打印出ip地址(我们这样做是因为路由表中的一些表项是网络地址,而不是主机...

    1.关于路由表的一个例子解析
    查看命令:netstat -rn

        先执行带-r选项的netstat命令,列出路由表,然后以-n选项再次执行该命令,以数字格式打印出ip地址(我们这样做是因为路由表中的一些表项是网络地址,而不是主机地址。如果没有- n选项,netstat命令将搜索文件/etc/networks并列出其中的网络名.。这样会与另一种形式的名字—网络名加主机名相混淆)。

    查看结果含义举例
      [root@localhost ~]# netstat -rn 
    Kernel IP routing table
    Destination           Gateway            Flags    Refcnt   Iface
    140.252.13.65        14.252.13.35    UGH        0       emd0 
    127.0.0.1               127.0.0.1           UH          1          lo0
    default                    140.252.13.33   UG          0       emd0
    140.252.13.32        140.252.13.34   U            4       emd0

        对于一个给定的路由器,可以打印出五种不同的标志:
        U 该路由可以使用。
        G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。标志G是非常重要的,因为由它区分了间接路由和直接路由(对于直接路由来说是不设置标志G的)。其区别在于,发往直接路由的分组中不但具有指明目的端的I P地址,还具有其链路层地址。当分组被发往一个间接路由时,ip地址指明的是最终的目的地,但是链路层地址指明的是网关(即下一站路由器)。在这个路由表例子中,有一个间接路由(设置了标志G),因此采用这一项路由的分组其ip地址是最终的目的地(140.252.13.65),但是其链路层地址必须对应于路由器140.252.13.35。
        H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。没有设置H标志说明目的地址是一个网络地址
    (主机号部分为0)。当为某个目的IP地址搜索路由表时,主机地址项必须与目的地址完全匹配,而网络地址项只需要匹
    配目的地址的网络号和子网号就可以了。
        D 该路由是由重定向报文创建的。
        M 该路由已被重定向报文修改。
            输出的第2行是环回接口,它的名字始终为lo0。没有设置G标志,因为该路由不是一个网关。H标志说明目的地址(127.0.0.1)是一个主机地址,而不是一个网络地址。由于没有设置G标志,说明这是一个直接路由,网关列给出的是外出ip地址。
           输出的第3行是默认路由。每个主机都有一个或多个默认路由。这一项表明,如果在表中没有找到特定的路由,就把分组发送到路由器140.252.13.33(sun主机)。这说明当前主机sdb利用这一个路由表项就可以通过internet经路由器sun(及其SLIP链路)访问其他的系统。建立默认路由是一个功能很强的概念。该路由标志( U G)表明它是一个网关,这是我们所期望的。

    2.路由表查看举例
    $ route
            Kernel IP routing table
            Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
            192.168.10.0    *               255.255.255.0   U     0      0        0 eth0
            192.168.56.0    *               255.255.255.0   U     0      0        0 eth1
            127.0.0.0       *               255.0.0.0       U     0      0        0 lo
            default         192.168.10.1    0.0.0.0         UG    0      0        0 eth0
            这台主机有两个网络接口,一个网络接口连到192.168.10.0/24网络,另一个网络 接口连到192.168.56.0/24网络。路由表的 Destination是目的网络地址,Genmask是子网掩码,Gateway是下一跳地址,Iface是发送接口,Flags中的U标志表示此条目有效(可以禁用某些条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机 接口直接相连的网络,不必经路由 器转发,因此下一跳地址处记为*号。
           如果要发送的数据包的目的地址是192.168.56.3,跟第一行的子网掩码做与运算得到 192.168.56.0,与第一行的目的网络地址不符,再跟第二行的子网掩码做与运算得到192.168.56.0,正是第二行的目的网络地址,因此从 eth1接口发送出去,由于192.168.56.0/24正是与eth1接口直接相连的网络,因此可以直接发到目的主机,不需要经路由器转发。
           如果要发送的数据包的目的地址是202.10.1.2,跟前三行路由表条目都不匹配,那么就要按缺省路由条目,从eth0接口发出去,首先发往192.168.10.1路由器,再让路由器根据它的路由表决定下一跳地址。

    3.route 命令添加静态路由
        设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:
            # route  [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
                    其中:
                    add : 添加一条路由规则                         del : 删除一条路由规则
                    -net : 目的地址是一个网络                   -host : 目的地址是一个主机
                    target : 目的网络或主机                       netmask : 目的地址的网络掩码
                    gw : 路由数据包通过的网关                   dev : 为路由指定的网络接口

        3种路由类型
        1)主机路由
           主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。例如,在下面的示例中,本地
    主机通过IP地址192.168.1.1的路由器到达IP地址为10.0.0.10的主机。
            Destination    Gateway       Genmask Flags     Metric    Ref    Use    Iface
            -----------    -------     -------            -----     ------    ---    ---    -----
            10.0.0.10     192.168.1.1    255.255.255.255   UH       0    0      0    eth0
            
        添加到主机的路由
            # route add -host 192.168.1.2 dev eth0 
            # route add -host 10.20.30.148 gw 10.20.30.40     #添加到10.20.30.148的网关10.20.30.40
        2)网络路由
           网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的示例中,本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。
            Destination    Gateway       Genmask Flags    Metric    Ref     Use    Iface
            -----------    -------     -------         -----    -----   ---    ---    -----
            192.19.12     192.168.1.1    255.255.255.0      UN      0       0     0    eth0
        添加到网络的路由
            # route add -net 10.20.30.40 netmask 255.255.255.248 dev eth0   #添加10.20.30.40的网络
               举例, 添加一条路由(发往192.168.62这个网段的全部要经过网关192.168.1.1)  
           # route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1  
            # route add -net 192.168.1.0/24 eth1
        3)默认路由
             当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。例如,在下面的示例中,默认路由是IP地址为192.168.1.1的路由器。
            Destination    Gateway       Genmask Flags     Metric    Ref    Use    Iface
            -----------    -------     ------- -----      ------    ---    ---    -----
            default       192.168.1.1     0.0.0.0    UG       0        0     0    eth0 
            添加默认路由
                # route add default gw 192.168.1.1


     

    展开全文
  • Linux 路由表

    2017-03-24 11:10:50
    Linux 路由表 =============================================================================== linux 路由表维护 查看 Linux 内核 路由表 使用下面的 route 命令可以查看 Linux 内核 路由表 ...

    Linux 路由表

    ===============================================================================

    linux 路由表维护

    查看 Linux 内核路由表

    使用下面的 route 命令可以查看 Linux 内核路由表。

    # route
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
    169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
    default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

    route 命令的输出项说明

    输出项 说明
    Destination 目标网段或者主机
    Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由
    Genmask 网络掩码
    Flags 标记。一些可能的标记如下:

    U — 路由是活动的

    H — 目标是一个主机

    G — 路由指向网关

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

    D — 由路由的后台程序动态地安装

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

    ! — 拒绝路由
    Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用)
    Ref 路由项引用次数(linux 内核中没有使用)
    Use 此路由项被路由软件查找的次数
    Iface 该路由表项对应的输出接口

    3 种路由类型

    主机路由

    主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。例如,在下面的示例中,本地主机通过IP地址192.168.1.1的路由器到达IP地址为10.0.0.10的主机。

    Destination    Gateway       Genmask        Flags     Metric    Ref    Use    Iface
    ----------- ------- ------- ----- ------ --- --- -----
    10.0.0.10 192.168.1.1 255.255.255.255 UH 0 0 0 eth0

    网络路由

    网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的示例中,本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。

    Destination    Gateway       Genmask      Flags    Metric    Ref     Use    Iface
    ----------- ------- ------- ----- ----- --- --- -----
    192.19.12 192.168.1.1 255.255.255.0 UN 0 0 0 eth0

    默认路由

    当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。例如,在下面的示例中,默认路由是IP地址为192.168.1.1的路由器。

    Destination    Gateway       Genmask    Flags     Metric    Ref    Use    Iface
    ----------- ------- ------- ----- ------ --- --- -----
    default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

    配置静态路由

    route 命令

    设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:

    # route  [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

    其中:

    • add : 添加一条路由规则
    • del : 删除一条路由规则
    • -net : 目的地址是一个网络
    • -host : 目的地址是一个主机
    • target : 目的网络或主机
    • netmask : 目的地址的网络掩码
    • gw : 路由数据包通过的网关
    • dev : 为路由指定的网络接口

    route 命令使用举例

    添加到主机的路由

    # route add -host 192.168.1.2 dev eth0:0
    # route add -host 10.20.30.148 gw 10.20.30.40

    添加到网络的路由

    # route add -net 10.20.30.40 netmask 255.255.255.248 eth0
    # route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
    # route add -net 192.168.1.0/24 eth1

    添加默认路由

    # route add default gw 192.168.1.1

    删除路由

    # route del -host 192.168.1.2 dev eth0:0
    # route del -host 10.20.30.148 gw 10.20.30.40
    # route del -net 10.20.30.40 netmask 255.255.255.248 eth0
    # route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
    # route del -net 192.168.1.0/24 eth1
    # route del default gw 192.168.1.1

    设置包转发

    在 CentOS 中默认的内核配置已经包含了路由功能,但默认并没有在系统启动时启用此功能。开启 Linux的路由功能可以通过调整内核的网络参数来实现。要配置和调整内核参数可以使用 sysctl 命令。例如:要开启 Linux内核的数据包转发功能可以使用如下的命令。

    # sysctl -w net.ipv4.ip_forward=1

    这样设置之后,当前系统就能实现包转发,但下次启动计算机时将失效。为了使在下次启动计算机时仍然有效,需要将下面的行写入配置文件/etc/sysctl.conf。

    # vi /etc/sysctl.conf
    net.ipv4.ip_forward = 1

    用户还可以使用如下的命令查看当前系统是否支持包转发。

    # sysctl  net.ipv4.ip_forward





    ===============================================================================

     

    Linux 路由表的结构与算法分析
    黄一文
     
    路由是网络栈的核心部分。路由表本身的设计很大情度上影响着路由的性能,并且好的设计能减少系统资源的消耗,这两方面尤其体现在路由表的查找上。目前的内核路由存在两种查找算法,一种为HASH算法,另一种为LC-trie算法,前者是目前内核使用的缺省算法,而后者更适用在超大路由表的情况,它在这种情况提高查找效率的同时,大大地增加了算法本身的复杂性和内存的消耗。综上,这两种算法各有其适用的场合,本文分析了基于2.6.18内核路由部分的代码在HASH算法上路由表结构的实现,并且在文章最后给出了一个简单的策略路由的应用。
     
    一、路由表的结构
           为了支持策略路由,Linux使用了多个路由表而不是一个,即使不使用策略路由,Linux也使用了两个路由表,一个用于上传给本地上层协议,另一个则用于转发。Linux使用多个路由表而不是一个,使不同策略的路由存放在不同的表中,有效地被免了查找庞大的路由表,在一定情度上提高了查找了效率。
     
           路由表本身不是由一个结构表示,而是由多个结构组合而成。路由表可以说是一个分层的结构组合。在第一层,它先将所有的路由根据子网掩码(netmask)的长度(0~32)分成33个部分(structfn_zone),然后在同一子网掩码(同一层)中,再根据子网的不同(如10.1.1.0/24和10.1.2.0/24),划分为第二层(struct fib_node),在同一子网中,有可能由于TOS等属性的不同而使用不同的路由,这就是第三层(structfib_alias),第三层结构表示一个路由表项,而每个路由表项又包括一个相应的参数,如协议,下一跳路由地址等等,这就是第四层(structfib_info)。分层的好处是显而易见的,它使路由表的更加优化,逻辑上也更加清淅,并且使数据可以共享(如structfib_info),从而减少了数据的冗余。
     

     

    struct fib_table *fib_tables[RT_TABLE_MAX+1]; // RT_TABLE_MAX 为255

           图1为一个路由表的总体结构。自上而下由左向右看,它首先为一个fib_table结构指针的数组,它被定义为:

     

     




    struct fib_table {
           unsigned char tb_id;
           unsigned tb_stamp;
           int           (*tb_lookup)(struct fib_table *tb, const struct flowi *flp, struct fib_result *res);
           int           (*tb_insert)(struct fib_table *table, struct rtmsg *r,
                         ……
           void        (*tb_select_default)(struct fib_table *table,
                                            const struct flowi *flp, struct fib_result *res);
     
           unsigned char tb_data[0];
    };

           每个fib_table结构在内核中表示一个路由表:

           +
    图1(引自[1])
    这个结构中包括这个表的ID,以及主要的一些用于操作路由表的函数指针,这里我们只关心最后一个域――tb_data[0],这是一个零长的数组,它在内核中也较为常见,它表示

     




    struct fn_hash {
    struct fn_zone *fn_zones[33];
    struct fn_zone *fn_zone_list;
    };

    指向这个结构的末尾。由图1可以看到,这个结构的末尾接着便是一个struct fn_hash结构,这个结构是随着fib_table结构一起分配的,所以fib_table->tb_data就是fn_hash。

     

    struct fn_zone {
           struct fn_zone          *fz_next; /* Next not empty zone */
           struct hlist_head     *fz_hash;       /* Hash table pointer      */
           int                                fz_nent;   /* Number of entries      */
     
           int                                fz_divisor;      /* Hash divisor              */
           u32                             fz_hashmask; /* (fz_divisor - 1)   */
    #define FZ_HASHMASK(fz)          ((fz)->fz_hashmask)
     
           int                                fz_order; /* Zone order         */
           u32                             fz_mask;
    #define FZ_MASK(fz)           ((fz)->fz_mask)
      
    };

           这个fn_zone域就是我们上面提前的结构,用于将路由根据子网掩码的长度分开成33个部分,其中fn_zones[0]用于默认网关。而fn_zone_list域就是将正在使用的fn_zone链成一个链表。接着再深入到struct fn_zone结构中:

     
    这个结构中有两个域比较重要,一个为fz_hash域,它指向一个HASH表的表头,这个HASH的长度是fz_divisor。并且这个HASH表的长度是可变的,当表长达到一个限定值时,将重建这个HASH表,被免出现HASH冲突表过长造成查找效率降低。
     
    为了提高查找的效率,内核使用了大量的HASH表,而路由表就是一个例子。在图1中可以看到,等长子网掩码的路由存放在同一个fn_zone中,而根据到不同子网(fib_node)的路由键值(fn_key),将它HASH到相应的链表中。

     




    struct fib_node {
           struct hlist_node     fn_hash;
           struct list_head       fn_alias;
           u32                fn_key;
    };

     
    这个键值其实就是这个子网值了(如10.1.1.0/24,则子网值为10.1.1),得到这个键值通过n =fn_hash()函数HASH之后就是这个子网对应的HASH值,然后就可以插入到相应的fz_hash[n]链表中了。冲突的fib_node由fn_hash域相链,而fn_alias则是指向到达这个子网的路由了。

     




    struct fib_alias {
           struct list_head       fa_list;
           struct rcu_head      rcu;
           struct fib_info        *fa_info;
           u8                  fa_tos;
           u8                  fa_type;
           u8                  fa_scope;
           u8                  fa_state;
    };

    当到达这个子网的路由由于TOS等属性的不同可存在着多个路由时,它们就通过fib_alias中fa_list域将这些路由表项链成一个链表。这个结构中的另一个域fa_info指向一个fib_info结构,这个才是存放真正重要路由信息的结构。

     




    struct fib_info {
           struct hlist_node     fib_hash;
           struct hlist_node     fib_lhash;
           ……
           int                  fib_dead;
           unsigned         fib_flags;
           int                  fib_protocol;
           u32                fib_prefsrc;
           u32                fib_priority;
           ……
    int                          fib_nhs;
           struct fib_nh          fib_nh[0];
    #define fib_dev              fib_nh[0].nh_dev
    };

     
    这个结构里面是一个用于路由的标志和属性,其中最重要的一个域是fib_nh[0],在这里,我们再次看到了零长数组的应用,它是通过零长来实现变长结构的功能的。因为,我们需要一个定长的fib_info结构,但是在这个结构末尾,我们需要的fib_nh结构的个数是不确定的,它在运行时确定。这样,我们就可以通过这种结构组成,在运行时为fib_info分配空间的时候,同时在其末尾分配所需的若干个fib_nh结构数组,并且这个结构数组可以通过fib_info->fib_nh[n]来访问,在完成fib_info的分配后将fib_nhs域置为这个数组的长度。
     
    另一方面,fib_info也是HASH表的一个应用,结构中存在着两个域,分别是fib_hash和fib_lhash,它们都用于HASH链表。这个结构在完成分配后,将被用fib_hash域链入fib_info_hash表中,如果这个路由存在首选源地址,这个fib_info将同时被用fib_lhash链入fib_info_laddrhash表中。这样,就可以根据不同目的实现快速查找了。
     
    Structfib_nh也是一个重要的结构。它存放着下一跳路由的地址(nh_gw)。刚刚已经提到,一个路由(fib_alias)可能有多个fib_nh结构,它表示这个路由有多个下一跳地址,即它是多路径(multipath)的。下一跳地址的选择也有多种算法,这些算法都是基于nh_weight,nh_power域的。nh_hash域则是用于将nh_hash链入HASH表的。

     




    struct fib_nh {
           struct net_device    *nh_dev;
           struct hlist_node     nh_hash;
           struct fib_info        *nh_parent;
           unsigned                nh_flags;
           unsigned char        nh_scope;
    #ifdef CONFIG_IP_ROUTE_MULTIPATH
           int                  nh_weight;
           int                  nh_power;
    #endif
    #ifdef CONFIG_NET_CLS_ROUTE
           __u32                   nh_tclassid;
    #endif
           int                  nh_oif;
           u32                nh_gw;
    };

     
    二、路由的查找
           路由的查找速度直接影响着路由及整个网络栈的性能。路由的查找当然首先发生在路由缓存中,当在缓存中查找失败时,它再转去路由表中查找,这是本文所关注的地方。
     
           上一节已经详细地描述了路由表的组成。当一个主要的IP层将要发送或接收到一个IP数据包时,它就要调用路由子系统完成路由的查找工作。路由表查找就是根据给定的参数,在某一个路由表中找到合适的下一跳路由的地址。
     
           上面已提到过,当一个主机不支持策略路由时,它只使用了两个路由表,一个是ip_fib_local_table,用于本地,另一个是ip_fib_main_table,用于接发。只有在查找ip_fib_local_table表时没有找到匹配的路由(不是发给本地的)它才会去查找ip_fib_main_table。当一个主机支持策略路由时,它就有可能存在着多个路由表,因而路由表的选择也就是查找的一部分。路由表的选择是由策略来确定的,而策略则是由应用(用户)来指定的,如能过iprule命令:

     




    ip rule add from 10.1.1.0/24 table TR1
    ip rule add iff eth0 table RT2

           如上,第一条命令创建了基于源地址路由的一条策略,这个策略使用了RT1这个路由表,第二条命令创建了基于数据包入口的一个策略,这个策略使用了RT2这个路由表。当被指定的路由表不存在时,相应的路由表将被创建。
     
           第二步就是遍历这个路由表的fn_zone,遍历是从最长前缀(子网掩码最长)的fn_zone开始的,直到找到或出错为止。因为最长前缀才是最匹配的。假设有如下一个路由表:

     




    dst                  nexthop               dev
            10.1.0.0/16        10.1.1.1                     eth0
            10.1.0.0/24           10.1.0.1               eth1

     
    它会先找到第二条路由,然后选择10.1.0.1作为下一跳地址。但是,如果由第二步定位到的子网(fib_node)有多个路由,如下:

     




    dst                  nexthop               dev
            10.1.0.0/24        10.1.0.1                     eth1
            10.1.0.0/24           10.1.0.2               eth1

     
    到达同一个子网有两个可选的路由,仅凭目的子网无法确定,这时,它就需要更多的信息来确定路由的选择了,这就是用于查找路由的键值(structflowi)还包括其它信息(如TOS)的原因。这样,它才能定位到对应一个路由的一个fib_alias实例。而它指向的fib_info就是路由所需的信息了。
    最后一步,如果内核被编译成支持多路径(multipath)路由,则fib_info中有多个fin_nh,这样,它还要从这个fib_nh数组中选出最合适的一个fib_nh,作为下一跳路由。
     
     
    三、路由的插入与删除
           路由表的插入与删除可以看看是路由查找的一个应用,插入与删除的过程本身也包含一个查找的过程,这两个操作都需要检查被插入或被删除的路由表项是否存在,插入一个已经存在的路由表项要做特殊的处理,而删除一个不存在的路由表项当然会出错。
           下面看一个路由表插入的例子:

     




    ip route add 10.0.1.0/24 nexthop via 10.0.1.1  weight 1
                                    nexthop via 10.0.1.2  weight 2
                                       table RT3

     
     
     
     
    这个命令在内核中建立一条新的路由。它首先查找路由表RT3中的子网掩码长为24的fn_zone,如果找不到,则创建一个fn_zone。接着,继续查找子网为10.0.1的fib_node,同样,如果不存在,创建一个fib_node。然后它会在新建一个fib_info结构,这个结构包含2个fib_nh结构的数组(因为有两个nexthop),并根据用户空间传递过来的信息初始化这个结构,最后内核再创建一个fib_alias结构(如果先前已经存在,则出错),并用fib_nh来创始化相应的域,最后将自己链入fib_node的链中,这样就完成了路由的插入操作。
     
    路由的删除操作是插入操作的逆过程,它包含一系列的查找与内存的释放操作,过程比较简单,这里就不再赘述了。
     
     
    四、策略路由的一个简单应用
           Linux系统在策略路由开启的时候将使用多个路由表,它不同于其它某些系统,在所有情况下都只使用单个路由表。虽然使用单个路由表也可以实现策略路由,但是如本文之前所提到的,使用多个路由表可以得到更好的性能,特别在一个大型的路由系统中。下面只通过简单的情况说明Linux下策略路由的应用。
    如图2,有如下一个应用需求,其中网关服务器上有三个网络接口。接口1的IP为172.16.100.1,子网掩码为255.255.255.0,网关gw1为a.b.c.d,172.16.100.0/24这个网段的主机可以通过这个网关上网;接口2的IP是172.16.10.1,子网掩码同接口一,网关gw2为e.f.g.h,172.16.10.0/24这个网段的主机可以通过这个网关上网;接口0的IP为192.168.1.1,这个网段的主机由于网络带宽的需求需要通过e.f.g.h这个更快的网关路由出去。
     
    图 2
     
    步骤一:设置各个网络接口的IP,和默认网关:

     




    ip addr add 172.16.100.1/24 dev eth1
    ip route add default via a.b.c.d dev eth1

           其它接口IP的设置和第一个接口一样,这时,如果没有其它设置,则所有的数据通过这个默认网关路由出去。
     
    步骤二:使子网172.16.10.0/24可以通过gw2路由出去

     




           ip route add 172.16.10.0/24 via e.f.g.h dev eth2

          

     
     
    步骤三:添加一个路由表 

     




           echo   “250 HS_RT” >> /etc/iproute2/rt_tables

     
     
    步骤四:使用策略路由使192.168.1.0/24网段的主机可以通过e.f.g.h这个网关上网
     

     




           ip rule add from 192.168.1.0/24 dev eth0 table HS_RT pref 32765
           ip route add default via e.f.g.h dev eth2
           iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j MASQUERADE

           
    步骤五:刷新路由cache,使新的路由表生效
     

     




    ip route flush cache 

    这样就可以实现了以上要求的策略路由了,并且可以通过traceroute工具来检测上面的设置是否能正常工作。
     
    ===============================================================================

    linux双网卡怎么设置我就不说了,我这里说的是linux双网卡的流量问题…
    可能这个问题很偏们..你们也许用不上..我还是要说..


    问题描述,一个linux主机,上面两个网卡..:)

    route -n的输出是这样的.


    Destination Gateway Genmask Flags Metric Ref Use Iface

     

    61.132.43.128 0.0.0.0 255.255.255.192 U 0 0 0 eth1

    127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo

    0.0.0.0 61.132.43.134 0.0.0.0 UG 0 0 0 eth0

     


    这里解释一下…第一行是说,你要访问61.132.43.128这个网段,掩码是255.255.255.192的话..从e
    th1这个网卡出去..
    第二行是关于本机的,访问自己从lo这个虚拟的本地网卡走..
    第三行是说你要去任何地方的话..从网关61.132.43.134出去.并且网卡是eth0

     

    到这里我们看到了..我们除了去61.132.43.128这个网络是从eth1走以外..去其他地方都是从eth0�
    �…

    这样是不是很浪费了双网卡??没错..是很浪费..因为不论你用那种监测工具查看流量..都是eth0有
    ..而其他网卡没有…天哪…为此我是煞费苦心..甚至怀疑网卡是不是坏了..因为在win2k上这种�
    虑槭遣豢赡芊⑸�..:)

    那我们怎么解决这个问题呢?有人也许会说给个不同网关让另一块网卡用其他网关不就可以..是这�
    鍪强梢�..但是问题是我的ip都是在同一个网段..那来的不同网关.?网关就一个61.132.43.134…

    还好linux系统给我们提供了一个很好的路由套件—iproute2

    我们来熟悉一下..iproute2由几个常见的命令..
    ip ro ls ip就是ip命令啦,ro就是route的所写,ls是list的缩写…
    整个命令就是列出系统的路由表..这个可和route
    -n的效果差不多..但是更为清楚系统的route是如何的..

    我们来看看吧:


    [root@localhost root]# ip ro ls

     

    61.132.43.128/26 dev eth1 proto kernel scope link src 61.132.43.136

    127.0.0.0/8 dev lo scope link

    default via 61.132.43.134 dev eth0

     

     


    是不是一样呢?由几个地方不同..第一条多了一个src,增加了对源数据包的选择,而且子网掩码也变
    成/26的形式..(参考ip地址的书籍)
    最后一个仍然是网关…


    现在我们只要稍稍动手把从61.132.43.136出来的流量让他不要从eth0出去..然他走eth1
    我们加一条自定义的路由表


    ip ro add default via 61.132.43.134 table 200

     

     


    这里只是加了一条默认路由到一个自定义的路由表200中,最大数值是255,但是你不要用255,因为那
    是系统默认用了..你用200以下就可以.
    具体的路由表在/etc/iproute2/rt_tables中

     

    查看刚才建立的路由表可以用ip ro ls table 200


    [root@localhost root]# ip ro ls table 200

     

    default via 61.132.43.134 dev eth1

     

     

    看到了吗?虽然我没有指定dev是什么.但是系统自动分配了一个eth1给这个路由表,因为eth0已经用
    在主路由表中了..
    这也说明了,的确不能在同一个路由表中由相同的网关..虽然可以设置,但是具体没什么作用.

    然后我们要用一个规则把,匹配的数据包引导到刚刚建立的路由表中..:)


    ip ru add from 61.132.43.136 table 200

     

     


    这里ru是rule的缩写.from是一个匹配的动作.就是所源地址是61.132.43.136的包..请走自定义路�
    杀�的设置..:)

     

    查看一下


    [root@localhost root]# ip ru ls

     

    0: from all lookup local

    32765: from 61.132.43.136 lookup 200

    32766: from all lookup main

    32767: from all lookup 253

     

     
    ip ro flush cache


    linux 下 双网卡 同网段,可以把IP_FORWARD 打开,这样一个网卡down掉数据会从另外一个网卡出去
    ===============================================================================
    linux路由表
    2010年08月18日 星期三 17:44

    宏CONFIG_IP_MULTIPLE_TABLES表示路由策略,当定义了该宏,也即意味着内核配置了“路由策略”。产生的最大的不同就是内核可以使用多达256张FIB。其实,这256张FIB在内核中的表示是一个全局数组:
            struct fib_table *myfib_tables[RT_TABLE_MAX+1];
    而宏RT_TABLE_MAX定义如下:
            enum rt_class_t
            {
                RT_TABLE_UNSPEC=0,
                RT_TABLE_DEFAULT=253,
                RT_TABLE_MAIN=254,
                RT_TABLE_LOCAL=255,
                __RT_TABLE_MAX
            };
            #define RT_TABLE_MAX (__RT_TABLE_MAX - 1)
        我们可以看到,虽然这张表多达256项,但枚举类型rt_class_t给出的表示最常用的也就三项,在系统初始化时,由内核配置生成的路由表只有RT_TABLE_MAIN,RT_TABLE_LOCAL两张。
       main表中存放的是路由类型为RTN_UNICAST的所有路由项,即网关或直接连接的路由。在myfib_add_ifaddr函数中是这样添加main表项的:对于某个网络设备接口的一个IP地址,如果目的地址的网络号不是零网络(网络号与子网号全为零),并且它是primary地址,同时,它不是D类地址(网络号与子网号占32位)。最后一个条件是:它不是一个环回地址(device上有flagIFF_LOOPBACK)。那么,就添加为main表项,如果是环回地址,则添加为local表的一个表项。
        在我们的系统中,有两个已开启的网络设备接口eth0和lo,eth0上配置的primaryIP地址是172.16.48.2,所以,相应的,main表中就只有一项。为main表添加路由项的时候,该路由项的目的地址是子网内的所有主机(把主机号部分字节清零),而对应于lo,在local表中也有一项,其类型为RTN_LOCAL(注:前一篇文章中的local表的hash8中的路由项表述有误,类型应该是RTN_LOCAL,而不是RTN_BORADCAST)。
       而其它的路由项全部归入local表,主要是广播路由项和本地路由项。在我们的系统环境下,local表共有7项,每个网络设备接口占三项。分别是本地地址(源跟目的地址一致),子网广播地址(主机号全为1),子网广播地址(主机号为零)。再加上一个lo的RTN_LOCAL项。
        现在我们再来看myfib_add_ifaddr函数的路由添加策略。对于一个传入的ip地址(结构structin_ifaddr表示),如果它是secondary地址,首先要确保同一个网络设备接口上存在一个跟其同类型的primary地址(网络号与子网号完全一致),因为,路由项的信息中的源地址全是primary的,secondary地址其实没有实际使用,它不会在路由表中产生路由项。然后,向local表添加一项目的地址是它本身的,类型为RTN_LOCAL的路由项;如果该ip地址结构中存在广播地址,并且不是受限广播地址(255.255.255.255),那么向local表添加一个广播路由项;然后,对符合加入main表的条件进行判断,如果符合,除了加入main表,最后,如果不是D类地址,还要加入两个广播地址(其实,已经跟前面有重叠,很多情况下不会实际触发加入的动作,只要记住,一个ip地址项对应最多有两个广播地址就可以了)。

     

    多路由表(multiple Routing Tables)

      传统的路由算法是仅使用一张路由表的。但是在有些情形底下,我们是需要使用多路由表的。例如一个子网通过一个路由器与外界相连,路由器与外界有两条线路相连,其中一条的速度比较快,一条的速度比较慢。对于子网内的大多数用户来说对速度并没有特殊的要求,所以可以让他们用比较慢的路由;但是子网内有一些特殊的用户却是对速度的要求比较苛刻,所以他们需要使用速度比较快的路由。如果使用一张路由表上述要求是无法实现的,而如果根据源地址或其它参数,对不同的用户使用不同的路由表,这样就可以大大提高路由器的性能。

      规则(rule

      规则是策略性的关键性的新的概念。我们可以用自然语言这样描述规则,例如我门可以指定这样的规则:

      规则一:“所有来自192.16.152.24的IP包,使用路由表10, 本规则的优先级别是1500”

      规则二:“所有的包,使用路由表253,本规则的优先级别是32767”

      我们可以看到,规则包含3个要素:

      什么样的包,将应用本规则(所谓的SELECTOR,可能是filter更能反映其作用);

      符合本规则的包将对其采取什么动作(ACTION),例如用那个表;

      本规则的优先级别。优先级别越高的规则越先匹配(数值越小优先级别越高)。

      策略性路由的配置方法

      传统的linux下配置路由的工具是route,而实现策略性路由配置的工具是iproute2工具包。这个软件包是由Alexey Kuznetsov开发的,软件包所在的主要网址为ftp://ftp.inr.ac.ru/ip-routing/。
    这里简单介绍策略性路由的配置方法,以便能更好理解第二部分的内容。详细的使用方法请参考Alexey Kuznetsov写的 ip-cfref文档。策略性路由的配置主要包括接口地址的配置、路由的配置、规则的配置。

      接口地址的配置IP Addr

      对于接口的配置可以用下面的命令进行:

    Usage: ip addr [ add | del ] IFADDR dev STRING

      例如:

    router># ip addr add 192.168.0.1/24 broadcast 192.168.0.255 label eth0 dev eth0

      上面表示,给接口eth0赋予地址192.168.0.1 掩码是255.255.255.0(24代表掩码中1的个数),广播地址是192.168.0.255

      路由的配置IP Route

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

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

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

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

      表 0 保留

      路由配置命令的格式如下:

     

    Usage: ip route list SELECTOR
    ip route { change | del | add | append | replace | monitor } ROUTE

     

      如果想查看路由表的内容,可以通过命令:

      ip route list table table_number

      对于路由的操作包括change、del、add 、append 、replace 、 monitor这些。例如添加路由可以用:

     

    router># ip route add 0/0 via 192.168.0.4 table main
    router># ip route add 192.168.3.0/24 via 192.168.0.3 table 1

     

    第一条命令是向主路由表(main table)即表254添加一条路由,路由的内容是设置192.168.0.4成为网关。

     

      第二条命令代表向路由表1添加一条路由,子网192.168.3.0(子网掩码是255.255.255.0)的网关是192.168.0.3。

      在多路由表的路由体系里,所有的路由的操作,例如网路由表添加路由,或者在路由表里寻找特定的路由,需要指明要操作的路由表,所有没有指明路由表,默认是对主路由表(表254)进行操作。而在单表体系里,路由的操作是不用指明路由表的。


    ===============================================================================

    ===============================================================================

    展开全文
  • Linux 路由表详解及 route 命令详解

    万次阅读 多人点赞 2018-05-26 23:44:40
    Linux 内核的路由表 通过 route 命令查看 Linux 内核的路由表: [root@VM_139_74_centos ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gatewa...
  • linux 路由表和路由寻址过程

    千次阅读 2018-11-06 22:16:05
    每一个linux系统中都具有IP路由表,它存储了本地计算机可以到达的网络目的地址范围和如何到达的路由信息。路由表是TCP/IP通信的基础,本地计算机上的任何TCP/IP通信都受到路由表的控制。         2 Linux ...
  • 如图,我的路由表情况如下,现在默认的网络会从enp3s0走,如果想调整一下路由的顺序, route del default route del default route add default gw 192.168.172.1 dev enp3s0 route add default gw 172.21....
  • 针对suse linux定制开发,主要解决手动添加路由信息重启后丢失的问题,使用该脚本增加修改路由可以一劳永逸,试用下吧,欢迎交流。 Usage: proute {add|del|refresh|show|sync} HOST Netmask Gateway Modify routing...
  • linux命令解析--理解ip路由和操作linux路由表
  • 嵌入式arm板linux路由表设置

    千次阅读 2019-03-17 10:42:53
    arm板的linux系统启动后,网卡起来了,用ifconfig查看网口信息如下: [root@HOSTNAME /]#ifconfig eth0 Link encap:Ethernet HWaddr 10:23:45:67:89:AB inet addr:192.168.2.88 Bcast:192.168.2.255 Mask:255.255...
  • linux 路由表功能解析

    千次阅读 2016-07-05 09:55:35
    本文,简单描述一下路由的作用....一台电脑主机有路由表,路由器也有路由表,一般来说,一台主机电脑如果只有一个网卡的话,应该会有最少两条路由信息,一条是公网路由,一条是局域网路由(它是不会经过路由器的
  • 路由距离,到达指定网络所需的中转数(linux 内核中没有使用) Ref 路由项引用次数(linux 内核中没有使用) Use 此路由项被路由软件查找的次数 Iface 该 路由表 项对应的输出...
  • Linux路由表的结构与算法分析 Linux路由表的结构与算法分析 Linux路由表的结构与算法分析
  • linux路由表,策略路由,路由查找

    千次阅读 2016-05-16 12:35:49
    路由表内核中路由表有2种:l 一个是缓存路由(fib),是自动学习生成自动管理的,用户没必要去干预,但是内核还是提供了方法让用户可以去清空它。但是用户不能设置它的项,但是可以根据这个缓存更新的原理从外部...
  • Linux路由表的配置

    2019-09-13 00:10:11
    1、路由表(table)从0到255进行编号,每个编号可以对应一个别名,编号和别名的对应关系在linux下放在/etc/iproute2/rt_tables这个文件里,一般0编号的table对应的别名为upspec,255编号对应的别名为local,254和253...
  • 使用下面的 route 命令可以查看 Linux 内核路由表。 # route Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0
  • linux 路由表

    2014-07-11 16:35:27
    linux 路由表 的一些相关资料 =============================================================================== linux 路由表维护 查看 Linux 内核路由表 使用下面的 route 命令可以查看 ...
  • linux路由表

    2017-07-25 18:20:00
    查看路由表 route -n 添加路由表 route add|del -net 192.168.9.112 netmask 1.0.0.0 gw 1.1.1.1 metric 1 转载于:https://www.cnblogs.com/javadongx/p/linux_route.html
  • 教你读懂Linux路由表

    千次阅读 2020-01-21 15:50:16
    很多网络问题都跟路由有关,那么首先必须学会看懂路由表,本文将讲述如何读懂路由及如何决策. 在命令行下输入route -n 或 netstat -rn,就可以打印本机的路由表,我的如下: Destination Gateway Genmask Flags...
  • linux路由表解析

    2018-01-08 16:11:00
    路由表的目的是对数据包中的目的地址在路由表中进行匹配,然后选定一个将该包发送出去的网口。 3 路由表的匹配规则 最长匹配,如果匹配不上就选择默认项了。   转载于:...
  • TCPIP linux路由表详解

    2019-01-23 10:11:10
    TCP/IP linux路由表详解 文章目录TCP/IP linux路由表详解Linux内核的路由表Linux内核的路由种类主机路由网络路由默认路由 Linux内核的路由表 通过route -n命令查看Linux内核路由表: [root@bogon ~]# route -n ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,054
精华内容 14,821
关键字:

linux路由表

linux 订阅