什么是路由
在Linux系统中,路由(Routing)是指确定数据包在网络中从源主机到目的主机所经过路径的过程。它是网络层的核心功能之一,负责指导数据包如何在不同的网络间正确传输。每个数据包都有一个目的地IP地址,路由器和主机通过查看自身的路由表来决定应当将数据包发送到哪个下一个跃点(即下一跳IP地址),直到数据包到达最终目的地。
路由表的内容及结构
路由表是一系列规则的集合,每个规则(或称为路由条目)包含以下主要字段:
- 目标网络地址(Destination):这可以是具体的主机地址,也可以是网络地址(子网掩码一起指定范围)。
- 子网掩码(Netmask):用于标识目标地址的有效网络部分。
- 网关(Gateway):也称为下一跳(Next Hop),这是数据包离开当前网络到达另一个网络时必须经过的IP地址。
- 接口(Interface):本地主机用于发送数据包的实际网络接口(如eth0、eno1等)。
- 特殊标志(Flags):如是否为主路由(U)、是否可用(A)、是否为默认路由(G)等。
路由类型
- 直连路由(Direct Route):指向本地主机直接相连的网络设备的路由,通常是本机所在的网络段。
- 静态路由(Static Route):手动配置的固定路由,管理员明确指定数据包去往某个网络或主机时应通过的下一跳。
- 动态路由(Dynamic Route):通过路由协议(如RIP、OSPF、BGP等)自动学习并更新的路由,适用于大型网络环境。
路由示例
添加静态路由
命令行中添加一条静态路由的示例:
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
这条命令表示将所有目标地址属于192.168.2.0/24网络的数据包,通过网关192.168.1.1,经由接口eth0转发。
查看路由表
可以通过ip route
或route -n
命令查看当前路由表:
$ ip route show
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
以上输出表明:
- 默认路由(
default
):所有未知网络的目标数据包都将通过网关192.168.1.1发出,走eth0接口。 - 直连路由(
192.168.1.0/24
):属于同一网络段(子网掩码/24表示)的数据包直接通过eth0接口发送,源地址是192.168.1.100。
路由选择过程
当一个数据包到达时,Linux内核会遍历路由表,寻找最匹配目标地址的路由条目。选择的原则通常是:
- 首先匹配精确的主机路由(目标地址为单个主机)。
- 若无,则匹配最长前缀匹配的网络路由(CIDR格式的网络地址)。
- 若仍未找到合适路由,则依据默认路由(default gateway)转发。
通过这样的机制,Linux实现了高效准确的数据包转发,确保了网络间的通信畅通。
更多精彩内容请关注☄公众号: Coder无霸哥
不要让我们追赶知识, 要让知识追赶我们~