linux路由表的查看和含义

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


 

<think>好的,用户想了解如何在Linux查看路由表。我需要分步骤解释,确保他能够理解不同的命令输出含义。首先,我应该介绍route命令,虽然它比较旧,但依然可用。然后重点放在ip route上,因为这是现在推荐的工具。还要提到netstat,不过可能已经过时了。需要详细说明每个命令的使用示例输出字段的意义,比如目标网络、网关、子网掩码、接口等。另外,可能用户需要知道如何添加或删除路由,所以可以简要提到ip route adddel的用法。最后,要确保语言清晰,结构合理,避免使用复杂术语,让新手也能明白。检查是否有遗漏的部分,比如metric标志的含义,这些对于理解路由表也很重要。确保所有命令用正确的格式,比如代码块用反引号,但根据用户要求,可能不需要markdown,所以直接中文描述即可。需要确认是否覆盖了常见的使用场景,如默认路由、特定网络的路由查看等。这样用户就能全面了解如何查看管理路由表了。</think>在 Linux 系统中查看路由表是网络配置故障排查的重要操作,以下是详细说明: --- ### 一、常用命令及示例 #### 1. `ip route` 命令(推荐) ```bash $ ip route show ``` **输出示例**: ``` default via 192.168.1.1 dev eth0 proto static metric 100 10.0.0.0/24 dev docker0 proto kernel scope link src 10.0.0.1 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100 ``` - **字段解析**: - `default`:默认路由(即网关) - `via 192.168.1.1`:数据包通过此网关转发 - `dev eth0`:使用的网络接口 - `metric 100`:路由优先级(数值越小优先级越高) --- #### 2. `route` 命令(传统方式) ```bash $ route -n ``` **输出示例**: ``` Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 ``` - **关键标志**: - `U`:路由已启用 - `G`:使用网关 - `H`:目标为主机(非网络) --- #### 3. `netstat` 命令(旧版兼容) ```bash $ netstat -rn ``` 输出格式与 `route -n` 类似,但已逐渐被 `ip route` 替代。 --- ### 二、核心概念解析 1. **目标网络(Destination)** - 格式为 `IP/子网掩码`,如 `192.168.1.0/24` 2. **网关(Gateway)** - `0.0.0.0` 表示直连网络,无需网关 3. **接口(Interface)** - 数据包发送的物理/虚拟网卡(如 eth0、wlan0) --- ### 三、典型操作场景 #### 1. 查看特定网络的路由 ```bash $ ip route get 8.8.8.8 8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 1000 ``` #### 2. 添加临时路由 ```bash $ sudo ip route add 10.10.0.0/24 via 192.168.1.2 dev eth0 ``` #### 3. 删除路由 ```bash $ sudo ip route del 10.10.0.0/24 ``` --- ### 四、路由表持久化 通过编辑 `/etc/network/interfaces`(Debian系)或 `/etc/sysconfig/network-scripts/route-eth0`(RHEL系)可实现路由永久生效。 --- 通过以上工具命令,您可以清晰掌握 Linux 系统的网络流量走向。如需更高级功能(如策略路由),可研究 `ip rule` 命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值