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

路由

路由

下面是基于官方 iproute2 手册、协议定义文件以及常见路由行为整理的 Linux 路由表字段大全(尽可能 100% 全),重点覆盖 protoscopetype、字段含义及常见值(包括自动 vs 手动来源)——这是一个系统级文档级别的总结,可作为运维 & 核心路由理解参考:


📌 一、路由条目核心字段结构(来自 ip-route(8) 手册)

Linux 路由条目大致由以下字段组成(详见官方 manpage):(man7.org)

[to PREFIX] [dev IFACE] [via NEXTHOP] [proto RTPROTO]
[scope SCOPE_VAL] [metric NUM] [table TABLEID] [type TYPE_VAL]
[src SRC_ADDR] [other optional flags…]
  • PREFIX:目的地址/前缀

  • dev IFACE:绑定网卡接口

  • via NEXTHOP:下一跳网关(非直连)

  • src:首选源地址

  • metric:路由优先级数字

  • table:路由表标识符(如 main, local, 自定义等)

  • type:路由类型

  • proto:路由来源协议标识

  • scope:路由作用域
    (字段定义详见 man 页)(man7.org)


📌 二、Protocol(proto)——路由来源标识

proto 表示 哪个实体创建了这条路由。如果未显式指定,ip 命令默认为 boot:(man7.org)

含义来源是否自动
kernel 内核自动添加 内核配置 & 地址上线 ✅自动
boot 启动时由系统脚本添加 系统启动网络配置 ⚠ 引导自动
static 手工静态路由 管理员通过 ip route add 或配置文件添加 ✋ 手动
redirect ICMP 重定向 内核根据 ICMP redirect 添加 ⬆ 自动
ra IPv6 Router Advertisement Router Discovery ⬆ 自动
dhcp DHCP 客户端添加(数字值) DHCP 客户端 ⚠ 自动但外部工具
其他数字或自定义 来源自 /etc/iproute2/rt_protos 可扩展 取决定义

📌 说明:RTPROTO 的名称和值是从文件 /etc/iproute2/rt_protos 映射来的,系统可自定义协议编号/名称(proto 字段也可以是数字)。(man7.org)

自动 vs 手动判断:

  • kernel, redirect, ra, dhcp自动由系统或网络组件产生

  • static手动由管理员配置

  • boot系统启动自动产生(在守护进程运行后可能被清理)


📌 三、Scope(作用域)

scope 决定路由的 有效性范围。Linux 默认有三个保留的作用域:(man7.org)

scope含义典型用途
host 仅在本机有效 本地接口地址(/32)
link 仅在本链路有效 直连网段(无需网关)
global 全球有效 默认路由、非直连路由
site IPv6 站点本地 IPv6 特殊场景(稀少)

📌 如果未显式指定 scopeip route 默认根据路径类型推断:

  • gatewayed unicast → global

  • direct unicast & broadcast → link

  • local host routes → host(man7.org)


📌 四、Type(类型)

type 用来指定路由的处理方式。一条路由具有一个 type(默认为 unicast):(DEV Community)

type含义
unicast 普通单播路由
local 本地地址路由
broadcast 广播地址路由
multicast 组播
blackhole 丢弃数据包
prohibit 禁止访问
unreachable 不可达
throw 强制让路由策略继续查找

📌 五、Routing Tables(路由表)

Linux 支持多张表,由 /etc/iproute2/rt_tables 定义:(man7.org)

表编号名称说明
0 unspec 未指定
255 local 系统本地地址 &广播路由
254 main 主路由表(默认)
253 default 默认表
1–252 用户可定义 策略路由表等

📌 六、完整路由条目典型组合(含 proto + scope)

✔ 内核自动生成(proto=kernel / redirect / ra)

192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
127.0.0.1/32 dev lo proto kernel scope host
fe80::/64 dev eth0 proto kernel scope link

(直连网段、本机/IPv6 链路本地)(Ubuntu 手册)

✔ 系统引导或网络初始化(proto=boot)

10.0.0.0/8 via 10.0.0.1 dev eth0 proto boot

✔ 管理员手动静态路由(proto=static)

ip route add 172.16.0.0/16 via 192.168.1.1 dev eth0 proto static

✔ DHCP 客户端添加(proto=dhcp)

default via 192.168.1.1 dev wlan0 proto dhcp src 192.168.1.100 metric 600

📌 七、哪些是 100% 自动 vs 手动

路由来源proto 值是否自动什么时候生成
本地地址 /broadcast kernel ✅ 自动 分配 IP 时内核自动
直连网络 kernel ✅ 自动 接口 up & IP 分配
IPv6 Router Advertised ra ✅ 自动 SLAAC/Router Advertisement
ICMP Redirect 添加 redirect ✅ 自动 收到 ICMP redirect
DHCP 客户端 dhcp ⚠ 自动 DHCP client 执行时
引导时静态 boot ⚠ 自动 系统启动脚本
管理员静态 static ✋ 手动 显式 ip route add

📌 八、实践技巧:查看路由详细信息

输出所有路由及源码协议细节:

ip route show table all
ip route show proto kernel
ip route show proto static

显示不同 scope 的路由:

ip route show scope link
ip route show scope host
ip route show scope global

📌 九、可自定义扩展

因为 protoscope 名称来自文本文件:

  • /etc/iproute2/rt_protos → 自定义协议标识

  • /etc/iproute2/rt_scopes → 可添加 scope 名称

内核不会限制这些名称,只要在映射文件中定义即可。(man7.org)


📌 参考官方定义来源

  • 官方 ip-route(8) 文档(完整字段 &默认行为定义)(man7.org)

  • rt_protos/rt_scopes 映射说明(用户可扩展)(man7.org)

  • Linux 路由行为概述(自动 vs 手动的行为解释)(CSDN博客)


如果你需要,我还能提供 /etc/iproute2/rt_protos/etc/iproute2/rt_scopes 模板清单(默认内容 +各协议编号) 以及一个 Mind‑Map 格式的可视化图表来体现字段之间的关系。