Linux网络知识——路由表
路由表
1 定义与作用
- Linux路由表是一个内核数据结构,用于描述Linux主机与其他网络设备之间的路径,以及如何将数据包从源地址路由到目标地址。
- 路由表的主要作用是指导数据包在网络中的传输路径,确保数据包能够准确、高效地到达目标地址。
2 主要组成部分
- 目的网络:一个或多个IP地址段,指示要路由到的网络。
- 下一跳:数据包要经过的下一个路由器的地址。
- 子网掩码:用于将IP地址分为网络地址和主机地址两部分,帮助路由器进行路由选择。
- 接口:连接Linux主机和网络的物理设备或虚拟设备,每个接口都有一个唯一的标识符。
3 配置与管理
- 可以使用
route
命令或ip route
命令来显示、添加、删除和修改Linux路由表中的路由信息。 - 通过设置路由的优先级(度量值)和缺省路由,可以优化路由表的性能和数据传输效率。
4. 应用
4.1 使用ip route
命令添加路由
# ip route add default via <网关地址>
ip route add default via 192.168.1.1
# ip route add <目标网络>/<子网前缀长度> via <网关IP地址> dev <网络接口>
ip route add 192.168.0.0/24 via 192.168.1.1 dev eth0
4.2 使用ip route
命令删除路由
# 删除默认路由
ip route del default
# 删除网络路由
# ip route del <目标网络>/<子网前缀长度>
ip route del 192.168.0.0/24
5. 实例
172.18.0.0/20 dev eth0 proto kernel scope link src 172.18.9.28
目的网络:172.18.0.0/20
- 这部分指定了数据包的目的地是一个IP地址范围,从172.18.0.0到172.18.15.255(因为/20表示前20位是网络地址,剩下的12位是主机地址,所以总共可以表示4096个IP地址,但要从0开始算,并且要减去网络地址和广播地址,所以实际可用的IP地址范围是从1到4094,但在这个例子中我们关注的是整个子网)。
接口:dev eth0
- 这部分指明了数据包应该通过哪个网络接口发送出去。在这个例子中,
eth0
是第一个以太网接口。这意味着,如果数据包的目的地址匹配这个规则,它应该通过eth0
接口发送。
协议:proto kernel
- 这部分说明了路由条目是如何被添加到路由表中的。
proto kernel
意味着这个路由条目是由内核自动添加的,通常是因为网络接口的配置(如IP地址的分配)导致的。与之相对的是用户空间程序(如ip route
命令)添加的路由,它们通常会显示为proto static
。
作用域:scope link
- 这部分定义了路由条目的作用域。
scope link
意味着这个路由条目仅适用于直接连接的网络,也就是说,它不会通过路由器转发到其他网络。这是本地网络(也称为链路层网络)的路由。
源地址:src 172.18.9.28
- 这部分指定了当数据包从这个路由条目指定的接口发送出去时,应该使用的源IP地址。在这个例子中,源IP地址是172.18.9.28。需要注意的是,源地址通常不是路由决策的一部分(路由决策是基于目的地址的),但在某些情况下(如策略路由),可以基于源地址来选择路由。然而,在这个特定的路由条目中,
src
字段的存在可能意味着这是一个更复杂的路由规则的一部分,或者是用于确保从特定接口发送的数据包具有正确的源IP地址(尽管这通常是通过网络接口的IP配置来处理的)