
Hat
译者
⚠️ 注意
如果您发现了错误,欢迎 参与贡献。
💡 摘要 (Powered by OpenAI)
本文是 BIRD 用户指南的第六章第十五节,介绍了 BIRD 的路由通告协议 (RAdv),包括其在 IPv6 SLAAC 中的作用、丰富的接口/前缀/DNS 配置选项和触发机制,以便您更好地理解相关内容。
路由通告协议 (Router Advertisements, RAdv) 是路由器通告的实现,用于 IPv6 无状态自动配置 (SLAAC)。
IPv6 路由器以不规则的时间间隔(或作为对请求的应答)向连接的网络发送通告数据包。这些数据包包含本地网络的基本信息(如网络前缀列表),使网络主机能够自动配置网络地址并选择默认路由。
BIRD 实现了以下标准定义的路由器行为:
RAdv 协议仅支持 IPv6 通道。
RAdv 配置中有以下类别的定义:接口定义、前缀定义和 DNS 定义。
interface 模式 [, ...] { 选项 }
接口定义指定协议激活的接口集合,并包含接口级别的特定选项。详见 interface 通用选项。
prefix 前缀 { 选项 }
前缀定义允许修改宣告的前缀列表。默认情况下,宣告的前缀与分配给接口的网络前缀相同。对于每个网络前缀,查找匹配的前缀定义并使用其选项。如果未找到匹配项,使用默认选项。
前缀定义可为全局或接口级。接口级别的前缀定义是接口选项的一部分。前缀定义匹配采用首命中方式,接口级别定义先于全局定义被处理。网络前缀是前缀定义中前缀的子网时即视为匹配。
rdnss { 选项 }
RDNSS 定义允许指定一组宣告的递归 DNS 服务器及其选项。由于选项通常不必要,也有简写形式 rdnss 地址 仅指定一个 DNS 服务器。多个定义是累加的。RDNSS 定义在接口选项内部使用时也可为接口级别。默认情况下,接口同时使用全局和接口级别选项,但可通过 rdnss local 选项更改。
dnssl { 选项 }
DNSSL 定义允许指定一组宣告的 DNS 搜索域及其选项。与上述 rdnss 类似,多个定义是累加的,也可用作接口级别选项,且有简写形式 dnssl 域名 仅指定一个 DNS 搜索域。
custom option type 数值 value 字节串
自定义选项定义允许定义任意要宣告的选项。需指定选项类型号和选项的二进制负载。长度字段自动计算。与 rdnss 类似,多个定义是累加的,也可用作接口级别选项。
以下示例宣告符合 RFC 8781 的 PREF64 选项,前缀为 2001:db8:a:b::/96,生命周期 1 小时:
custom option type 38 value hex:0e:10:20:01:0d:b8:00:0a:00:0b:00:00:00:00;trigger 前缀
RAdv 协议可配置为根据路由的可用性改变行为。使用此选项时,协议保持在抑制状态,直到一条 触发路由(针对指定网络)被导出到协议;当 触发路由 消失时,协议返回抑制状态。注意:路由导出与通常一样依赖于指定的 export 过滤器。此选项可用于处理多宿主场景的故障切换。
抑制状态下,路由器通告仍会生成,但部分字段被清零。具体行为取决于相应字段的 sensitive 选项配置。默认情况下,仅 default lifetime(亦称 router lifetime)被清零,这意味着主机不能使用该路由器作为默认路由器。对于前缀,preferred lifetime 和 valid lifetime 也可配置为 sensitive,这将导致自动配置的 IP 被弃用甚至移除。
propagate routes 开关
此选项控制更具体路由的传播(如 RFC 4191 所定义)。启用后,导出到 RAdv 协议的所有路由(触发前缀除外)会作为附加选项添加到通告中。
宣告路由的生命周期和偏好可分别通过 ra_lifetime 和 ra_preference 路由属性单独设置,或通过接口级别的 route lifetime 和 route preference 选项设置。默认值:disabled
💡 提示
RFC 不鼓励发送超过 17 条路由,并建议手动配置路由。
max ra interval 表达式
非请求路由器通告以不规则的时间间隔发送。此选项指定这些间隔的最大长度(秒)。有效值:4-1800。默认值:600
min ra interval 表达式
指定这些间隔的最小长度(秒)。必须至少为 3 且最多为 3/4 * max ra interval。默认值:约 1/3 * max ra interval
min delay 表达式
两次连续路由器通告之间的最小延迟(秒)。默认值:3
solicited ra unicast 开关
响应的路由器通告通常像非请求通告一样发送到 all-nodes 组播组,但可配置为直接以单播方式发送给请求节点。这在无线网络上尤其有用(参见 RFC 7772)。默认值:no
managed 开关
指定主机是否应使用 DHCPv6 进行 IP 地址配置。默认值:no
other config 开关
指定主机是否应使用 DHCPv6 接收其他配置信息。默认值:no
link mtu 表达式
指定主机应使用的 MTU 值。0 表示未指定。默认值:0
reachable time 表达式
指定主机应认为邻居可达的时间(毫秒),自上次确认起计算。最大值为 3600000,0 表示未指定。默认值:0
retrans timer 表达式
指定主机在重新传输邻居请求消息前应等待的时间(毫秒)。0 表示未指定。默认值:0
current hop limit 表达式
指定主机应使用的跳数限制值。有效值:0-255,0 表示未指定。默认值:64
default lifetime 表达式 [sensitive 开关]
指定自收到 RA 起主机可将该路由器用作默认路由器的时间(秒)。0 表示不作为默认路由器。sensitive 选项参见 trigger。默认值:3 * max ra interval,sensitive 为 yes
default preference low|medium|high
指定要向主机宣告的默认路由器偏好值。默认值:medium
route lifetime 表达式 [sensitive 开关]
指定特定路由的宣告生命周期默认值,即自收到 RA 起主机应考虑这些路由有效的时间(秒)。特殊值 0xffffffff 代表无限。生命周期可通过每路由的 ra_lifetime 路由属性覆盖。默认值:3 * max ra interval,sensitive 为 no
sensitive 选项参见 trigger。若 sensitive 启用,即使具有 ra_lifetime 属性的路由也会对触发器敏感。
route preference low|medium|high
指定特定路由的宣告路由偏好默认值。可通过每路由的 ra_preference 路由属性覆盖。默认值:medium
prefix linger time 表达式
当前缀或路由消失时,它会以零生命周期宣告一段时间,以告知客户端其不再有效。此选项指定以该方式宣告前缀的时间(秒)。默认值:3 * max ra interval
route linger time 表达式
当前缀或路由消失时,它会以零生命周期宣告一段时间。此选项指定以该方式宣告路由的时间(秒)。默认值:3 * max ra interval
rdnss local 开关
仅使用本接口级别的 RDNSS 定义。否则同时使用全局和本地定义。若未指定本地定义,也可用于禁用给定接口的 RDNSS。默认值:no
dnssl local 开关
仅使用本地 DNSSL 定义。参见上述 rdnss local 选项。默认值:no
custom option local 开关
仅使用本地自定义选项定义。参见上述 rdnss local 选项。默认值:no
skip 开关
指定不宣告给定的前缀。对于在默认策略(宣告所有前缀)中设置例外很有用。注意:要移除已宣告的前缀,更有效的方式是以零有效生命周期宣告它。默认值:no
onlink 开关
指定主机是否可使用宣告的前缀进行在链 (onlink) 判定。默认值:yes
autonomous 开关
指定主机是否可使用宣告的前缀进行无状态自动配置。默认值:yes
pd preferred 开关
指定主机是否应使用 DHCPv6 中的前缀委派代替无状态地址自动配置。默认值:no
valid lifetime 表达式 [sensitive 开关]
指定自收到 RA 起前缀信息有效的时间(秒),即自动配置的 IP 地址可被分配、且使用该 IP 地址的主机被视为直接可达的时间。0 表示前缀不再有效。sensitive 选项参见 trigger。默认值:86400(1 天),sensitive 为 no
preferred lifetime 表达式 [sensitive 开关]
指定自收到 RA 起、通过无状态自动配置从前缀生成的 IP 地址保持首选的时间(秒)。sensitive 选项参见 trigger。默认值:14400(4 小时),sensitive 为 no
ns 地址
指定一个递归 DNS 服务器。可多次使用以指定多个服务器。rdnss 定义中至少需要一个 ns 选项。
lifetime [mult] 表达式
指定客户端在收到 RA 后可使用 RDNSS 信息的时间。以秒表示,或使用 mult 时以 max ra interval 的倍数表示。注意:RDNSS 信息也会在 default lifetime 过期时失效。0 表示这些地址不再是有效的 DNS 服务器。默认值:3 * max ra interval
domain 地址
指定一个 DNS 搜索域。可多次使用以指定多个域。dnssl 定义中至少需要一个 domain 选项。
lifetime [mult] 表达式
指定客户端在收到 RA 后可使用 DNSSL 信息的时间。详细规则与上述 RDNSS lifetime 选项相同。默认值:3 * max ra interval
RAdv 定义了两个路由属性:
enum ra_preference
路由的偏好值。可选值:RA_PREF_LOW、RA_PREF_MEDIUM 或 RA_PREF_HIGH。若未设置,使用 route preference 选项的值。
int ra_lifetime
路由的宣告生命周期(秒)。特殊值 0xffffffff 代表无限。若未设置,使用 route lifetime 选项的值。
ipv6 table radv_routes; # 手动配置的路由放到这里
protocol static {
ipv6 { table radv_routes; };
route 2001:0DB8:4000::/48 unreachable;
route 2001:0DB8:4010::/48 unreachable;
route 2001:0DB8:4020::/48 unreachable {
ra_preference = RA_PREF_HIGH;
ra_lifetime = 3600;
};
}
protocol radv {
propagate routes yes; # 传播来自 radv_routes 表的路由
ipv6 { table radv_routes; export all; };
interface "eth2" {
max ra interval 5; # 多路由器场景下的快速故障切换
managed yes; # 在 eth2 上使用 DHCPv6
prefix ::/0 {
autonomous off; # 因此不自动配置任何 IP
};
};
interface "eth*"; # 其他接口无需任何选项
prefix 2001:0DB8:1234::/48 {
preferred lifetime 0; # 已弃用的地址范围
};
prefix 2001:0DB8:2000::/48 {
autonomous off; # 不进行自动配置
};
rdnss 2001:0DB8:1234::10; # RDNSS 简写形式
rdnss {
lifetime mult 10;
ns 2001:0DB8:1234::11;
ns 2001:0DB8:1234::12;
};
dnssl {
lifetime 3600;
domain "abc.com";
domain "xyz.com";
};
}
译者
原文作者: <Ondrej Filip>, <Martin Mares>, <Maria Matejka>, <Ondrej Zajicek>
原文链接: https://bird.network.cz/?get_doc&v=20&f=bird-6.html#ss6.15
原文标题: 6.15 RAdv
遵循协议: CC BY-NC-SA 4.0
译者: hat
翻译时间: 2026-05-01
更新时间: 2026-05-01
本文链接: https://bird.xmsl.dev/docs/user-guide/6-15-radv.html