返回技术博客

SKNK 中文技术指南

什么是 IP Prefix?CIDR、子网和 BGP 路由一次讲清

`/24`、`/48` 和 `/64` 到底是什么意思?这篇解释 IP Prefix、CIDR、子网和 BGP 路由的关系,以及为什么 ROA 和 Route Object 都围绕 Prefix 工作。

开篇定义: IP Prefix 是一段连续的 IPv4 或 IPv6 地址,以"网络地址/前缀长度"写出,例如 203.0.113.0/242001:db8:1234::/48。在 BGP 中,它是网络对外宣告可达地址范围的基本单位。

第一次见到 /48 这个写法,大多数人不是在教科书里,而是在 RIPE 门户的 ROA 表单上、申请 ASN 的表格里,或者对着一条 BGP 路由发呆的时候。地址后面那个斜杠和数字,看起来像无关紧要的格式;实际上它划定了这段地址的边界,也决定了路由器、过滤器和注册表分别怎么看待它。这篇文章只讲两件事:斜杠后面的数字到底是什么意思,以及 Prefix 在 CIDR、子网、BGP 这一堆概念里站在哪个位置。

1. 一行 Prefix,写了两件事

203.0.113.0/24 拆开只有两个部分:斜杠左边是网络地址,右边是前缀长度。网络地址是这段地址的起点,也是它的名字;前缀长度是"固定住了前多少位",位数一固定,范围大小就定了。

举个 IPv4 的例子:203.0.113.0/24 表示从 203.0.113.0203.0.113.255 这 256 个地址(203.0.113.0/24 是文档保留段 TEST-NET-3)。IPv6 的例子:2001:db8:1234::/48 表示前 48 位固定、从 2001:db8:1234:: 开始的一段范围——大到普通人的 IPv4 地址一辈子都用不完(2001:db8::/32 是 IPv6 的文档保留前缀)。

从这里能推出两件重要的事:

  • Prefix 从来不是一个 IP。一台服务器的地址只是这个范围里的一个点;Prefix 是围着整段范围画的那条边界。
  • 同一段地址可以有不同"画法"。2001:db8:1234::/48 里面装得下很多个 /64,而每一个 /64 自己也是一个 Prefix。

白脸小鹿把一条连续地址带的起始格子夹紧,固定 Prefix 的前半段,剩余范围继续向右延伸。

一个 Prefix 就是一段范围:地址起名字,长度定大小。

2. /24/48/64 怎么读

同一个 IP 协议内部,规则只有一句:斜杠后面的数字越小,范围越大。固定的位数越少,能放进去的地址就越多。

写法 协议 常见语境
/24 IPv4 常见的小型 IPv4 路由前缀,256 个地址
/48 IPv6 常见的组织级 IPv6 地址块
/64 IPv6 一个 IPv6 LAN 子网的标准大小

/64 这一行值得多说两句,因为 IPv6 和 IPv4 在这一点上差别很大:普通 IPv6 LAN 子网通常就是 /64,SLAAC 无状态自动配置也常以这个大小部署,所以正常不会再往下切。/48 是常见的组织级 IPv6 前缀——里面是 65,536 个 /64,规划空间很富裕。IPv4 没这个待遇,家庭和办公室网络通常就是个 /24 甚至更小,因为 IPv4 地址稀缺。

最容易犯的错,是把 203.0.113.0/242001:db8:1234::/48 摆在一起比大小。两个不同的地址族,数不在同一把尺子上,比地址数量没有意义。IPv6 具体怎么切,IPv6 子网划分详解有完整的计算过程。

3. IP、Prefix、子网、CIDR,四个词各自指什么

这四个词总在同一段话里出现,所以也总被混着用。四件事,四个角色:

它是什么 例子 会进公网路由表吗
IP 地址 一台设备或一个接口的具体地址 203.0.113.7 通常不会;除非显式宣告成 /32/128 主机路由
IP Prefix 一段有边界的地址范围 203.0.113.0/24 宣告了才会
子网 网络内部划分出来的一段 Prefix 192.168.1.0/24 通常不会
CIDR 用前缀长度表达地址范围、支持聚合路由的模型 斜杠写法的"出处" 不是条目,是一套方法

关系一句话:CIDR 是那套规则,Prefix 是规则下写出来的一个范围,子网是把 Prefix 用进网络规划时的叫法——写法一样,地位完全不同。192.168.1.0/24 是子网,正常运行下永远不上公网路由表;上游帮你路由的那段地址是 Prefix,BGP 聊的就是它。

4. 路由器为什么盯着 Prefix 看

路由器不可能记下全世界的每一个 IP——那张表早就爆了。它按 Prefix 转发:数据包到了,路由器找"覆盖目标地址、且最具体"的那条条目,从那里送出去。

规模化靠两个机制:

  • 路由聚合。 上游宣告一条宽的,而不是几千条细的。2001:db8::/32 一条顶掉里面所有的 /64,更具体的路由只在确实存在的地方出现。
  • 最长前缀匹配。 多条条目同时覆盖同一个地址时,最长(最具体)的赢。2001:db8::/322001:db8:1234::/48 同时在表里,去 2001:db8:1234::1 的包两条都匹配——路由器选 /48,因为它把范围圈得更死。

白脸小鹿打开一条从宽主路分出的窄支路闸门,把一个数据包送向更具体的路径。

路由器看的是前缀长度:更具体的条目,在它覆盖的范围内胜出。

这也是斜杠后面那个数字在运维里沉甸甸的原因。宣告得比授权更细——比如 ROA 的 maxLength/48,你宣告了 /52——验证可能直接判 Invalid;反过来永远只宣告粗的那条,又放弃了最长前缀匹配给你的精细度。宣告怎么在网络上传播、怎么被选择,BGP 基础讲得很细,这里只需要记住原则:路由跑在 Prefix 上,不跑在地址清单上。

5. Prefix、ASN、ROA、Route Object 各管一件事

这是本文和本站整个路由知识簇接上的地方,也是最值得保存的一张表:

东西 它解决的问题 它不会自动做到的事
Prefix 这是哪段地址 让地址自动可达
ASN 哪个网络在说话 分配一段地址
BGP Route 流量可以从哪里到达 Prefix 证明起源一定合法
ROA 哪个 ASN 被授权起源 Prefix 把路由发到公网
IRR Route Object 发布给过滤器使用的路由登记信息 建立 BGP Session

五层各自独立,每一层都可能单独对、单独错。你可能手里有一段 Prefix、没有 ASN、什么都没宣告过;也可能 ASN 有了、Session 起来了、路由被接受了,结果缺 ROA 或缺 Route Object,按上游的策略被拦在外面。每一行回答的问题都不一样,任何一行都推不出下一行。

细节分别看:什么是 ASN?讲身份层,什么是 ROA?讲授权记录,什么是 IRR Route Object?讲登记层。

6. Prefix 出现在数据库里,外网未必能访问

一段 Prefix 躺在注册表里,或者躺在你的 Excel 里,跟它在公网可达,是两件完全无关的事。真正上线需要四个条件凑齐:

  1. 你有起源授权。 地址直接持有,或者由赞助 LIR 提供;ROA、IRR 这些记录如果存在,要和你的计划对得上。
  2. 有上游愿意接收。 某个和你有 BGP 关系的网络愿意接受这条路由,并按它的过滤策略往外传。
  3. BGP 配置好,路由真的被导出。 决定导出什么的是你的路由器配置,不是哪个数据库。
  4. 验证和过滤通过。 路径上的网络可能检查 ROA 和 IRR 数据——不匹配时,即使 Session 健康,路由照样被拒。

这四步没有任何一步是自动的,也没有哪一步"必然带来"下一步。你完全可以手续齐全但没有路由;也完全可以路由在线但记录过期。数据库里的东西只描述意图和授权,可达性是路由系统的事,不是一条记录的事。

7. 最常见的五个误解

  • "/48 就是一个 IP。" 不是。/48 是一段范围,在 IPv6 里是一段巨大的范围。你家路由器 LAN 口用的地址只是里面的一个点。
  • "斜杠后的数字越大,地址块越大。" 反了。同一个协议内,位数越多范围越小:/64 小于 /48/48 小于 /32
  • "有了 Prefix,就代表公网已经能访问了。" 不能。登记不等于可达,中间还隔着宣告、接受、传播三步。
  • "ROA 是路由开关。" 不是。ROA 是授权记录,只说明"谁可以起源这段前缀";宣告、Session、上游接受都是另外的事。
  • "Route Object 就是正在转发的 BGP 路由。" 不是。Route Object 是登记数据,声明的是起源意图;BGP 路由是正在跑着的宣告,带着前缀和到达它的路径。一个在纸上,一个在路上。

8. 什么情况下才需要自己的 Prefix

直接给结论,分两半:

  • 单一云厂商上的普通网站或应用,大多数情况下用云厂商分配的地址就够了。 负载均衡、DNS、内网规划,厂商全包了,这是件好事。自己的 Prefix 只在你想自己掌控地址和路由的时候才变得重要。
  • 想申请自己的 ASN、持有可路由的 IPv6 地址块,需要两样硬东西:真实的 BGP 使用场景——多线接入、多站点宣告、自己跑 BGP 边缘,或者下游要求你起源自己的地址——以及愿意接收你宣告的上游。 两个条件都满足,才值得往下走;少一个,后面全是装饰。

如果这个触发条件是真的,怎么申请 IPv6 /48?讲拿地址,IPv6 /48 怎么通过 BGP 宣告?讲上线清单。角色分工说一句:SKNK 提供的是赞助与 RIPE 登记流程支持,包括资源分配、申请文书,以及 SKNK PA 资源的 RPKI ROA 管理;上游选择、BGP 配置和 IRR 记录维护由客户负责,除非另有书面约定。

FAQ

IP Prefix 和子网是一回事吗?

不完全是。子网是网络规划里被使用的一段 Prefix。每个子网都是 Prefix,但不是每个 Prefix 都被当子网用——有些 Prefix 存在的唯一意义就是被路由。

/0 表示什么?

一个位都不固定:整个地址空间。0.0.0.0/0 是全部 IPv4,::/0 是全部 IPv6。默认路由和过滤规则里经常见到它。

/24/48 大吗?

跨地址族没法比。203.0.113.0/242001:db8:1234::/48 在不同的地址空间里,拿地址数量硬比没有意义。同一个协议内规则成立:/24/32 大,/48/64 大。

每个 Prefix 都需要 ASN 吗?

不需要。私有使用——IPv4 的 RFC 1918、IPv6 的 ULA——完全不需要 ASN。只有要在 BGP 里起源一段前缀时,ASN 才登场。

我可以把任何 Prefix 宣告到 BGP 吗?

不可以。只能宣告你有权起源的范围,而且就算有权,上游也有最终决定权——它通常会拿 ROA、IRR 和自己的协议去核对。

Prefix 和 Route 到底差在哪?

Prefix 是一段地址范围,是个名词;Route 是这段范围加上到达它的路径和属性,是被宣告、被接受、被传播的那个东西。一个描述空间,一个描述流量怎么到那里。

结尾

Key Takeaways:

  • Prefix 是一段地址范围,不是单个 IP。
  • CIDR 解释了斜杠后的数字;子网是网络规划里被使用的一段 Prefix。
  • 路由器和 BGP 都工作在 Prefix 上:聚合让路由表保持精简,最长前缀匹配决定谁赢。
  • ASN、BGP、ROA、IRR 都围绕 Prefix 工作,但职责不同——身份、传播、授权、登记。
  • Prefix 被登记,不等于它已经在公网可达。

一句话总结: IP Prefix 是互联网路由里的地址范围;谁能宣告它、流量怎样到达它,则由 ASN、BGP 和路由安全记录共同决定。

继续阅读:

技术资料核对: RFC 4632(CIDR)RIPE Database 文档