当前位置: 首页 > news >正文

Linux 中路由表的匹配规则

Linux 中路由表的匹配规则

Linux 内核使用最长前缀匹配 (Longest Prefix Match, LPM) 原则来处理路由表的匹配。这是一种高效的路由查找算法,确保数据包被转发到最具体的路由条目。路由表存储在内核中,通常通过 ip route show(或旧版 route -n)命令查看。以下详细讲解匹配规则、优先级和示例。

1. 路由表的基本结构

每个路由条目(route entry)包含以下关键字段:

  • 目标 (Destination):目标 IP 地址的前缀(如 192.168.1.0/24),表示匹配的网络范围。
  • 网关 (Gateway/Next Hop):下一跳 IP 地址(如果为本地网络,可为空)。
  • 接口 (Interface):出接口(如 eth0)。
  • 度量值 (Metric):路由的优先级(越小越优先,默认 0-255)。
  • 源 (Source):可选,源 IP 地址。
  • 范围 (Scope):如 global(全局)、link(链路)等。

示例路由表输出(使用 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 
10.0.0.0/8 via 192.168.1.254 dev eth0 metric 200

2. 匹配规则详解

Linux 路由查找过程是确定性的,按以下步骤进行:

步骤 1: 目标地址匹配

  • 前缀匹配:内核将数据包的目标 IP 与路由表的每个条目比较,选择最长前缀匹配的条目。
    • 前缀长度(CIDR,如 /24 表示 24 位匹配)越长,优先级越高。
    • 示例:目标 IP 192.168.1.50
      • 匹配 192.168.1.0/24(24 位匹配)。
      • 忽略 192.168.0.0/16(16 位匹配,虽然也匹配但前缀短)。
      • 如果无精确匹配,使用默认路由 0.0.0.0/0(0 位匹配)。
  • 多表支持:Linux 支持多个路由表(如 main、local、default),通过 ip rule 规则选择表。默认使用 main 表。

步骤 2: 度量值比较(如果多个匹配)

  • 如果有多个条目具有相同最长前缀,内核选择度量值 (metric) 最小的
    • Metric 来自路由协议(如 DHCP、静态路由),用于负载均衡或备份路由。
    • 示例:两个 192.168.1.0/24 条目,metric 100 和 200,选择 100。

步骤 3: 接口和范围检查

  • 接口可用性:确保出接口(如 eth0)已 up(使用 ip link show 检查)。
  • 范围 (Scope):优先 global > link > host。如果 scope 为 host,仅匹配本地地址。
  • 策略路由 (Policy Routing):通过 ip rule show 的规则(如基于源 IP、TOS)决定使用哪个表。

步骤 4: ARP/NDP 解析(链路层)

  • 一旦找到下一跳,内核使用 ARP(IPv4)或 NDP(IPv6)解析 MAC 地址。
  • 如果下一跳是本地网络,直接发送;否则,通过网关。

3. 特殊规则

  • 默认路由default0.0.0.0/0 是兜底条目,用于未知目标。
  • 本地路由:local 表处理环回(lo)和本地接口地址,不参与转发。
  • 多路径 (ECMP):如果多个等价路由(相同 metric),内核轮询或哈希分发流量。
  • IPv6 差异:类似 IPv4,但使用 ip -6 route show,前缀如 2001:db8::/32
  • 内核缓存:路由查找结果缓存(fib_trie 树结构),加速后续包。

4. 示例:手动测试匹配

  1. 查看路由表

    ip route show table main
    
  2. 添加测试路由(临时):

    sudo ip route add 192.168.2.0/24 via 192.168.1.254 metric 50
    
  3. 测试 ping(观察使用哪个路由):

    ping 192.168.2.10  # 应使用新路由
    traceroute 192.168.2.10  # 查看路径
    
  4. 删除路由

    sudo ip route del 192.168.2.0/24
    

5. 注意事项与调试

  • 工具ip route get <IP> 模拟查找(显示匹配条目)。
  • 日志:启用 net.ratelimit=0 sysctl 查看内核路由日志。
  • 常见问题:路由循环(高 metric 备份失效)、不对称路由(入站/出站不同表)。
  • 高级:使用 tc(Traffic Control)或 nftables 细粒度控制。
http://www.dtcms.com/a/467317.html

相关文章:

  • ios移动网站开发工具网易企业邮箱密码格式要求
  • 山东网站建设空间做思维导图的网站
  • 哈尔滨网站托管网页设计分为几个部分
  • SpringBoot 集成 LangChain4j RAG PostgreSQL
  • 寻找郑州网站优化公司上海自助建站
  • 瓜果蔬菜做的好的电商网站wordpress 自定义路由
  • EOM公式推导
  • 网站建设qinnet个股期权网站开发
  • 网站如何做好优化wordpress下载慢
  • 通信工程网站建设在线一键扒站源码php
  • 免费推广网站哪家好有哪些付费wordpress
  • 管理约束 · 开篇概述(一)
  • 电子商务网站建设培训小结北京模板开发建站
  • 源码之家网站国家企业信用公示信息系统入口
  • 华为OD机试C卷 - 对称美学 - 递归 - (Java C++ JavaScript Python)
  • 手怎么搭建网站泉州网站制作推广
  • 填空 前三章
  • 乐清网站制作优化邓亚萍20亿做网站
  • 进程的控制
  • 电脑网站微信支付怎么做的企业建设网站公司有哪些
  • 欧美做电影 迅雷下载网站网站工商备案查询
  • 深圳办公室装修哪家好正规的网站优化推广公司
  • 网站硬件方案全椒有做网站的吗
  • 提供做网站公司移动开发软件
  • 南阳卧龙区网站建设哪家好wordpress页面权限设置
  • 做网站win7好用么广州建网站比较有名的公司
  • 我的全栈学习之旅:FastAPI (持续更新!!!)
  • 做电影网站要怎么拿到版权资源下载网站建设
  • 佛山找企业的网站苏州实力做网站公司有哪些
  • 网站技术策划人员要求怎么搞到网站