ra_defrtr_metric 笔记250405
ra_defrtr_metric 是 Linux 系统中用于控制 通过 IPv6 路由通告(RA)生成的默认路由的优先级(Metric) 的关键参数。以下是其详细说明:
📜 参数定义
- 路径:
/proc/sys/net/ipv6/conf/<接口>/ra_defrtr_metric - 默认值:
1024(大多数系统的默认值)。 - 作用:
设置通过 RA 消息生成的默认路由的 度量值(Metric),值越低优先级越高。
🌐 工作原理
-
Metric 的作用:
- Metric 表示路由的优先级,范围通常为
0(最高优先级)到4294967295(最低优先级)。 - 系统会选择 Metric 值最小的路由作为首选路由。
- Metric 表示路由的优先级,范围通常为
-
与 RA 的关系:
- 仅当以下条件满足时,
ra_defrtr_metric才会生效:accept_ra=1(启用 RA 处理)。accept_ra_defrtr=1(允许通过 RA 设置默认路由)。
- 仅当以下条件满足时,
🛠️ 配置方法
临时修改(重启失效)
# 设置 eth0 的 RA 默认路由优先级为 100(比默认的 1024 更高优先级)
sysctl -w net.ipv6.conf.eth0.ra_defrtr_metric=100
永久生效
在配置文件(如 /etc/sysctl.d/99-ipv6.conf)中添加:
net.ipv6.conf.eth0.ra_defrtr_metric = 100
执行 sysctl -p 加载配置。
🔍 验证操作
-
查看参数值:
sysctl net.ipv6.conf.eth0.ra_defrtr_metric -
检查路由表:
ip -6 route show | grep "default" # 输出示例: # default via fe80::1 dev eth0 proto ra metric 100
🌟 典型场景
1. 多宿主网络(主备链路)
- 需求:设备通过
eth0(主链路)和eth1(备用链路)连接不同网络。 - 配置:
# 主链路(高优先级) sysctl net.ipv6.conf.eth0.ra_defrtr_metric=100 # 备用链路(低优先级) sysctl net.ipv6.conf.eth1.ra_defrtr_metric=200 - 效果:流量优先通过
eth0,当eth0断开时自动切换到eth1。
2. 优先静态路由
- 需求:确保手动配置的静态路由优先级高于 RA 生成的默认路由。
- 配置:
# 设置 RA 默认路由的优先级为 500 sysctl net.ipv6.conf.eth0.ra_defrtr_metric=500 # 添加静态路由(优先级 100) ip -6 route add default via 2001:db8::1 metric 100 - 效果:静态路由(metric=100)优先于 RA 路由(metric=500)。
⚠️ 注意事项
-
依赖参数:
ra_defrtr_metric仅在accept_ra=1且accept_ra_defrtr=1时生效。 -
与
forwarding的冲突:
若启用 IPv6 转发(forwarding=1),需手动设置accept_ra=2以允许接收 RA。 -
接口优先级:
不同接口的ra_defrtr_metric可独立设置,实现灵活的路由策略。
🧠 Metric 的作用:
Metric(度量值) 是网络路由中用于 判断路由路径优先级的核心指标。其作用可概括为以下三点:
1. 路由优先级决策
- 定义:Metric 值表示到达目标网络的路径“成本”,值越低表示路径越优。
- 选择逻辑:当存在多条通往同一目标网络的路由时,系统优先选择 Metric 值最小 的路由。
- 示例:
# 路由表中有两条默认路由: default via 2001:db8::1 dev eth0 metric 100 # 优先级高(Metric=100) default via 2001:db8::2 dev eth1 metric 200 # 优先级低(Metric=200)- 系统会优先通过
eth0发送流量。
- 系统会优先通过
2. 路由协议差异化
不同路由协议使用不同的 Metric 计算方式,反映路径的“成本”维度:
| 路由协议 | Metric 计算依据 | 适用场景 |
|---|---|---|
| RIP | 跳数(经过的路由器数量) | 小型网络,简单优先级判断 |
| OSPF | 带宽、延迟、链路成本 | 企业级网络,动态路径优化 |
| BGP | AS 路径长度、策略规则 | 互联网骨干网,跨自治系统路由 |
| 静态路由 | 手动指定(如 ra_defrtr_metric) | 精准控制特定接口或路径优先级 |
3. 网络容灾与负载均衡
-
主备链路切换:
通过为不同接口设置差异化的 Metric 值,实现自动故障转移。
示例:# 主链路(eth0)优先级更高 net.ipv6.conf.eth0.ra_defrtr_metric = 100 # 备用链路(eth1)优先级更低 net.ipv6.conf.eth1.ra_defrtr_metric = 200- 当
eth0断开时,流量自动切换到eth1。
- 当
-
负载均衡:
为多条路径设置相同 Metric 值,系统将均衡分配流量(需协议支持)。
🔧 Metric 的实际调整场景
场景 1:优先有线网络
# 有线接口(eth0)高优先级
net.ipv6.conf.eth0.ra_defrtr_metric = 100
# 无线接口(wlan0)低优先级
net.ipv6.conf.wlan0.ra_defrtr_metric = 200
场景 2:静态路由优先于动态路由
# 动态路由(RA 生成)的优先级较低
net.ipv6.conf.eth0.ra_defrtr_metric = 500
# 添加静态路由(更高优先级)
ip -6 route add default via 2001:db8::1 metric 100
📊 Metric 值范围
| 系统/协议 | 典型 Metric 范围 |
|---|---|
| Linux 静态路由 | 0-4294967295(默认 1024) |
| Windows | 0-9999 |
| Cisco 路由器 | 0-255(依协议不同) |
⚠️ 注意事项
- 协议兼容性:不同设备或系统对 Metric 的解释可能不同,需确保跨设备一致性。
- 动态路由协议:OSPF/BGP 等协议会自动计算 Metric,手动干预需谨慎。
- IPv6 特殊性:IPv6 的
ra_defrtr_metric仅影响 RA 生成的默认路由,不影响其他路由条目。
通过合理配置 Metric,可实现网络流量的智能调度,提升性能与可靠性。
详解 ra_defrtr_metric:IPv6 默认路由优先级控制
ra_defrtr_metric 是 Linux 系统中用于设置通过 IPv6 路由器广播(RA) 自动添加的默认路由的 优先级(metric) 的内核参数。通过调整此参数,可以优化多网关环境中的路由选择,确保流量按预期路径传输。
1. 参数定义
- 路径:
/proc/sys/net/ipv6/conf/<接口>/ra_defrtr_metric
(例如/proc/sys/net/ipv6/conf/eth0/ra_defrtr_metric) - 功能:
定义通过 RA 自动添加的默认路由的优先级(metric 值),数值越小优先级越高。 - 默认值:
1024
2. 参数行为
| metric 值 | 行为 |
|---|---|
| 较小值 | 默认路由优先级更高(优先被选择)。 |
| 较大值 | 默认路由优先级更低(其他路由优先)。 |
3. 依赖条件
accept_ra=1:必须启用 RA 接受功能。accept_ra_defrtr=1:必须允许通过 RA 添加默认路由。
4. 典型场景
场景 1:多网关环境优化路由选择
# 配置 RA 默认路由优先级为 500(低于其他路由)
echo 500 > /proc/sys/net/ipv6/conf/eth0/ra_defrtr_metric
# 手动添加另一条默认路由(metric=600)
ip -6 route add default via 2001:db8::1 metric 600
效果:
系统优先选择通过 RA 添加的默认路由(metric=500),而非手动配置的 metric=600 路由。
场景 2:确保 RA 路由为备用路径
# 设置 RA 默认路由优先级为 2000(高于其他路由)
echo 2000 > /proc/sys/net/ipv6/conf/eth0/ra_defrtr_metric
# 添加高优先级静态路由
ip -6 route add default via 2001:db8::fffe metric 100
效果:
静态路由(metric=100)优先,RA 路由仅在主路由失效时使用。
5. 配置方法
临时修改(重启失效)
# 设置 eth0 的 RA 默认路由 metric 为 500
echo 500 | sudo tee /proc/sys/net/ipv6/conf/eth0/ra_defrtr_metric
永久生效
通过 sysctl 配置文件(如 /etc/sysctl.d/):
# 永久设置 eth0 的 RA 默认路由 metric
echo "net.ipv6.conf.eth0.ra_defrtr_metric = 500" | sudo tee -a /etc/sysctl.d/99-ipv6.conf
sudo sysctl -p /etc/sysctl.d/99-ipv6.conf
6. 验证与调试
查看当前路由表
ip -6 route show | grep "default"
# 输出示例:default via fe80::1 dev eth0 proto ra metric 500 pref medium
检查参数值
cat /proc/sys/net/ipv6/conf/eth0/ra_defrtr_metric
# 输出示例:500
抓包分析 RA 消息
sudo tcpdump -i eth0 -nn "icmp6 && ip6[40] == 134" # 捕获 RA 消息(类型 134)
7. 安全与注意事项
- 路由冲突:
若多条默认路由 metric 值相同,可能引发不可预测的路由选择。需确保 metric 唯一。 - 网络稳定性:
频繁修改 metric 可能导致路由震荡,建议在维护窗口操作。 - RA 合法性:
结合 RA Guard 过滤非法 RA,避免恶意路由注入。
8. 关联参数
| 参数 | 作用 | 协同配置建议 |
|---|---|---|
accept_ra | 控制是否接受 RA 消息(总开关)。 | 需设为 1 |
accept_ra_defrtr | 控制是否添加 RA 默认路由(子开关)。 | 需设为 1 |
hop_limit | 设置 IPv6 数据包的跳数限制(类似 TTL)。 | 默认 64,通常无需修改。 |
总结
ra_defrtr_metric的作用:精细控制通过 RA 添加的默认路由优先级,适用于多网关或复杂网络环境。- 配置要点:
- 依赖
accept_ra=1和accept_ra_defrtr=1。 - 通过
sysctl持久化配置,避免重启失效。
- 依赖
- 典型场景:
- 优化多路径网络流量分配。
- 设置备用路由(高 metric 值)。
- 验证方法:
- 使用
ip -6 route show查看路由优先级。 - 通过抓包确认 RA 消息合法性。
- 使用
ra_defrtr_metric 是 Linux IPv6 网络配置中的一个关键参数,用于设置路由通告(RA)消息中默认路由的度量值(Metric),直接影响路由优先级。以下是详细解析:
1. 作用
- 路由优先级:度量值越小,路由优先级越高。系统选择路由时会优先选用度量值较低的路径。
- 网络优化:通过调整该值,可控制多网卡环境下的默认路由选择,优化网络流量分配。
2. 取值范围
- 典型范围:
0到255(具体范围可能因系统或内核版本而异)。 - 特殊值:
0:默认值,表示使用系统自动计算的路由度量。1到255:手动指定的度量值,值越小优先级越高。
3. 默认值
- 系统默认值:通常为
0,表示未手动设置时,使用内核自动计算的路由度量值。
4. 配置方法
临时生效(重启失效)
# 全局设置(影响所有接口)
echo 100 > /proc/sys/net/ipv6/conf/all/ra_defrtr_metric
# 针对特定接口(如 eth0)
echo 50 > /proc/sys/net/ipv6/conf/eth0/ra_defrtr_metric
永久生效
编辑 /etc/sysctl.conf,添加:
# 全局配置(值越小优先级越高)
net.ipv6.conf.all.ra_defrtr_metric = 100
# 针对特定接口(如 eth0)
net.ipv6.conf.eth0.ra_defrtr_metric = 50
执行 sysctl -p 应用配置。
5. 使用场景
-
多网卡负载均衡:
# 为 eth0 设置较高优先级(度量值 50),eth1 设置较低优先级(度量值 100) net.ipv6.conf.eth0.ra_defrtr_metric = 50 net.ipv6.conf.eth1.ra_defrtr_metric = 100流量将优先通过
eth0,若eth0故障,则自动切换至eth1。 -
关键业务保障:
# 为承载关键业务的接口(如 eth2)设置最低度量值(0) net.ipv6.conf.eth2.ra_defrtr_metric = 0确保关键业务流量始终通过最优路径传输。
6. 验证与诊断
-
查看当前值:
sysctl net.ipv6.conf.all.ra_defrtr_metric net.ipv6.conf.eth0.ra_defrtr_metric -
检查路由表:
ip -6 route show # 确认默认路由及其度量值 -
监控网络流量:
ip -6 route get <目标IPv6地址> # 查看特定目标的路由选择
7. 注意事项
- 一致性:确保网络中所有设备的路由度量值配置一致,避免路由环路。
- 动态调整:部分系统支持动态调整路由度量(如通过脚本监控链路质量),需结合具体工具实现。
- 安全性:在复杂网络环境中,避免将敏感业务的路由度量值设为
0,防止路由劫持。
通过合理配置 ra_defrtr_metric,您可以精准控制 IPv6 网络的流量走向,提升网络性能和可靠性。
ra_defrtr_metric 是 Linux 系统中与 IPv6 路由器公告(Router Advertisement, RA) 相关的内核参数,用于设置通过 RA 接收的默认路由的 度量值(Metric),从而控制该路由在路由表中的优先级。以下是详细解释:
1. 参数作用
- 度量值(Metric):
路由的度量值用于决定路由的优先级。值越小,优先级越高。当存在多条默认路由时,系统会优先选择度量值较小的路由。 - 适用范围:
仅对通过 RA 获取的 默认路由 生效,不影响手动配置的路由或其他协议(如 DHCPv6)配置的路由。
2. 参数配置
取值范围
- 整数:可以是任意非负整数(如
0、100、200等)。 - 默认值:
0(最高优先级)。
配置语法
net.ipv6.conf.<interface>.ra_defrtr_metric = <value>
<interface>:网络接口名称(如all表示全局设置,eth0或wlan0表示特定接口)。<value>:度量值(如100)。
3. 典型使用场景
场景 1:调整默认路由的优先级
假设系统同时存在以下两条默认路由:
- 通过 RA 获取的默认路由(度量值默认为
0)。 - 手动配置的默认路由(度量值为
100)。
此时,RA 的默认路由优先级更高。如果希望手动配置的路由优先,可以设置 RA 路由的度量值为 200:
# 设置 RA 默认路由的度量值为 200
sysctl -w net.ipv6.conf.all.ra_defrtr_metric=200
场景 2:与 IPv4 路由共存时的优先级控制
若系统同时配置了 IPv4 和 IPv6 的默认路由,可以通过 ra_defrtr_metric 控制 IPv6 路由的优先级。例如:
# 设置 RA 默认路由的度量值为 100(低于 IPv4 的默认度量值)
sysctl -w net.ipv6.conf.all.ra_defrtr_metric=100
场景 3:小米 MIUI 的特殊配置
在小米 MIUI 系统中,若通过 RA 获取的默认路由无法正常工作,可能需要调整度量值以确保其优先级:
# 设置 wlan0 接口的 RA 默认路由度量值为 100
sysctl -w net.ipv6.conf.wlan0.ra_defrtr_metric=100
4. 配置方法
(1) 临时修改(即时生效)
# 全局设置(所有接口)
sudo sysctl -w net.ipv6.conf.all.ra_defrtr_metric=100
# 特定接口(如 wlan0)
sudo sysctl -w net.ipv6.conf.wlan0.ra_defrtr_metric=200
(2) 永久修改(重启生效)
编辑 /etc/sysctl.conf 或 /etc/sysctl.d/ 目录下的配置文件,添加以下行:
# 全局配置
net.ipv6.conf.all.ra_defrtr_metric = 100
# 特定接口配置(如 wlan0)
net.ipv6.conf.wlan0.ra_defrtr_metric = 200
然后执行:
sudo sysctl -p # 重新加载配置
5. 验证配置
(1) 检查参数值
# 查看全局设置
cat /proc/sys/net/ipv6/conf/all/ra_defrtr_metric
# 查看特定接口(如 wlan0)
cat /proc/sys/net/ipv6/conf/wlan0/ra_defrtr_metric
(2) 检查路由表
ip -6 route show
输出示例:
default via fe80::1 dev wlan0 proto ra metric 100
6. 注意事项
-
依赖关系
- 必须先启用
accept_ra_defrtr=1,否则此参数无效。 - 同时需确保
accept_ra允许接收 RA(如accept_ra=1或2)。
- 必须先启用
-
优先级逻辑
- 若多个默认路由的度量值相同,系统会根据其他因素(如路由类型、接口优先级)选择路径。
-
与手动路由的冲突
- 手动添加的路由(如
ip -6 route add)的度量值可通过metric参数指定,默认为1024。
- 手动添加的路由(如
7. 示例配置
示例 1:降低 RA 默认路由的优先级
# 设置 RA 默认路由的度量值为 200(默认是 0)
sysctl -w net.ipv6.conf.all.ra_defrtr_metric=200
示例 2:仅对 wlan0 接口生效
# 仅 wlan0 接口的 RA 默认路由度量值设为 150
sysctl -w net.ipv6.conf.wlan0.ra_defrtr_metric=150
示例 3:恢复默认值
# 恢复默认度量值 0
sysctl -w net.ipv6.conf.all.ra_defrtr_metric=0
8. 常见问题
Q: 修改后路由表未变化?
- 原因:可能未启用
accept_ra_defrtr或 RA 未发送默认路由。 - 解决:检查
accept_ra_defrtr=1是否生效,并确保路由器发送 RA 的默认路由。
Q: 如何查看所有路由的度量值?
ip -6 route show | grep "metric"
Q: 度量值是否影响非默认路由?
- 否:
ra_defrtr_metric仅对通过 RA 获取的默认路由生效,其他路由需通过其他参数(如ip route的metric)设置。
通过合理配置 ra_defrtr_metric,可以精细控制 IPv6 默认路由的优先级,适用于多网络环境或需要优化路由选择的场景。
ra_defrtr_metric 是 Linux 系统中用于配置 IPv6 网络的一个参数,位于 /proc/sys/net/ipv6/conf 目录下,可在该目录的 all(全局配置)、default(默认配置)或者具体网络接口(如 eth0、ens33 等)的子目录中进行设置。下面从基本概念、取值含义、配置方法、应用场景和与其他参数的关系几个方面为你详细介绍。
基本概念
在 IPv6 网络里,路由器会发送路由器通告(Router Advertisement,RA)消息,其中可能包含默认路由器的相关信息。ra_defrtr_metric 就是用来指定 RA 消息中默认路由器的度量值。当网络中存在多个默认路由器时,设备会依据这个度量值来选择最优的默认路由器。
取值含义
ra_defrtr_metric 的值通常是一个整数,这个数值代表了默认路由器的优先级。一般而言,度量值越小,表明该默认路由器越优,设备会优先选择度量值小的路由器作为默认网关。例如,若网络中有两个默认路由器,路由器 A 的 ra_defrtr_metric 值为 100,路由器 B 的 ra_defrtr_metric 值为 200,那么设备会优先选择路由器 A 作为默认网关。
配置方法
临时配置(重启后失效)
你可以使用 sysctl 命令来临时修改 ra_defrtr_metric 的值。以下是不同场景下的配置示例:
- 全局配置:将全局的默认路由器度量值设置为 150,可执行以下命令:
sysctl -w net.ipv6.conf.all.ra_defrtr_metric=150
- 特定接口配置:若要针对特定接口(如
ens33)进行配置,可使用如下命令将其默认路由器度量值设置为 150:
sysctl -w net.ipv6.conf.ens33.ra_defrtr_metric=150
永久配置
若要让配置在系统重启后依然生效,需要编辑 /etc/sysctl.conf 文件,添加或修改相应的配置项。示例如下:
- 全局配置:在
/etc/sysctl.conf文件中添加以下内容,将全局的默认路由器度量值设置为 150:
net.ipv6.conf.all.ra_defrtr_metric = 150
- 特定接口配置:若要针对特定接口(如
ens33)进行配置,添加以下内容将其默认路由器度量值设置为 150:
net.ipv6.conf.ens33.ra_defrtr_metric = 150
修改完成后,执行以下命令使配置立即生效:
sysctl -p
应用场景
- 多路由器网络环境:在企业网络或者数据中心等网络环境中,可能会存在多个默认路由器,以实现冗余备份和负载均衡。通过设置不同路由器的
ra_defrtr_metric值,可以让设备根据优先级选择合适的默认路由器,提高网络的可靠性和性能。 - 网络优化:当网络中不同的路由器具有不同的带宽、延迟等性能指标时,可以根据这些指标为路由器设置不同的
ra_defrtr_metric值,引导设备优先选择性能更优的路由器作为默认网关,从而优化网络连接。
与其他参数的关系
accept_ra:accept_ra控制设备是否接收 RA 消息。只有当accept_ra设置为1(即设备接受 RA 消息)时,ra_defrtr_metric才会发挥作用。因为如果设备不接收 RA 消息,就无法获取到默认路由器的度量值信息。accept_ra_defrtr:accept_ra_defrtr控制设备是否接受 RA 消息中指定的默认路由器。当accept_ra_defrtr设置为1(即接受 RA 中的默认路由器)时,设备才会根据ra_defrtr_metric的值来选择最优的默认路由器;若accept_ra_defrtr设置为0,则设备不会使用 RA 中指定的默认路由器,ra_defrtr_metric也就失去了意义。
ra_defrtr_metric 的定义、作用及配置
定义
ra_defrtr_metric 是 Linux 系统中用于设置通过 IPv6 路由器通告(RA)消息添加的默认路由的度量值(metric)的参数。
作用
- 度量值设置:
ra_defrtr_metric用于指定通过 RA 消息添加的默认路由的优先级。度量值越低,优先级越高。 - 默认值:默认值为 1024。
- 优化场景:如果需要优先使用其他路由协议(如 BGP),可以调高此值。
配置方法
-
查看当前值:
cat /proc/sys/net/ipv6/conf/ens33/ra_defrtr_metric -
修改值:
- 通过直接写入值到文件:
echo 512 > /proc/sys/net/ipv6/conf/ens33/ra_defrtr_metric - 使用
sysctl命令:sysctl -w net.ipv6.conf.ens33.ra_defrtr_metric=512
- 通过直接写入值到文件:
-
永久修改:
- 编辑
/etc/sysctl.conf文件:echo "net.ipv6.conf.ens33.ra_defrtr_metric = 512" >> /etc/sysctl.conf sysctl -p
- 编辑
注意事项
- 依赖关系:
ra_defrtr_metric仅在accept_ra和accept_ra_defrtr都允许接收默认路由器信息时生效。 - 应用场景:在存在多个默认路由的网络环境中,通过调整
ra_defrtr_metric可以优化路由选择的优先级。
通过合理配置 ra_defrtr_metric,可以优化设备的路由选择策略,以满足不同的网络需求。
ra_defrtr_metric 是一个与 IPv6 网络配置相关的参数,具体含义如下:
含义
ra_defrtr_metric:设置通过路由器广告(Router Advertisement,RA)消息学习到的默认路由器的度量值。
作用
- 该参数用于指定通过 RA 消息获得的默认路由器的优先级或度量值。较低的度量值表示较高的优先级。
- 例如,设置
ra_defrtr_metric=100表示通过 RA 学习到的默认路由器的度量值为 100。 - 这可以帮助系统在选择默认路由器时进行更细粒度的控制,特别是在有多个默认路由器的情况下。
使用场景
- 多默认路由器环境:
- 在网络环境中存在多个默认路由器时,可以通过设置不同的
ra_defrtr_metric值来指定优先使用的默认路由器。 - 例如,如果有两个默认路由器,一个设置为
ra_defrtr_metric=100,另一个设置为ra_defrtr_metric=200,系统会优先选择度量值较低的路由器(即度量值为 100 的路由器)。
- 在网络环境中存在多个默认路由器时,可以通过设置不同的
配置示例
- 编辑
/etc/sysctl.conf文件,添加或修改以下行:net.ipv6.conf.eth0.ra_defrtr_metric = 100 - 使配置生效:
sudo sysctl -p
注意事项
- 修改内核参数可能会影响系统的稳定性和性能,需谨慎操作。
- 在进行重大更改之前,建议备份当前的
/etc/sysctl.conf文件。
总之,ra_defrtr_metric 参数用于设置通过 RA 消息学习到的默认路由器的度量值,以便在选择默认路由器时进行优先级排序。
希望这些信息对你有帮助。如果有更多问题,请随时提问。
ra_defrtr_metric 参数详解
ra_defrtr_metric 是 Linux 系统中用于控制通过 IPv6 路由器通告(RA) 自动生成的默认路由的 度量值(Metric) 的内核参数。它决定了默认路由的优先级,直接影响网络流量的路径选择。
一、参数定义与功能
• 路径:
/proc/sys/net/ipv6/conf/[接口名]/ra_defrtr_metric
(接口级参数,可通过 sysctl 命令或 /etc/sysctl.conf 配置)
• 作用:
设置从 RA 获取的默认路由的 Metric 值(数值越小优先级越高)。
• 默认值:0
• 生效条件:
• 接口启用 RA 接收(accept_ra=1 或 2)。
• 允许通过 RA 设置默认路由(accept_ra_defrtr=1)。
二、Metric 的作用
• 路由优先级:
当系统存在多条默认路由时,Metric 值最小的路由会被优先使用。
示例:
# 接口 eth0 的默认路由(Metric=100)
default via fe80::1 dev eth0 proto ra metric 100
# 接口 eth1 的默认路由(Metric=200)
default via fe80::2 dev eth1 proto ra metric 200
• 系统将优先通过 eth0 发送流量,因为其 Metric 更小。
• IPv4/IPv6 协调:
IPv6 默认路由的 Metric 可能需要与 IPv4 路由的优先级对齐,避免双栈环境中流量路径不一致。
三、配置方法与示例
1. 临时配置(立即生效)
# 设置 eth0 的默认路由 Metric 为 100
sysctl -w net.ipv6.conf.eth0.ra_defrtr_metric=100
2. 永久配置(重启生效)
编辑 /etc/sysctl.conf 或 /etc/sysctl.d/ 下的配置文件:
# 示例:针对 eth0 和 eth1 设置不同 Metric
net.ipv6.conf.eth0.ra_defrtr_metric = 100
net.ipv6.conf.eth1.ra_defrtr_metric = 200
加载配置:
sysctl -p
3. 验证配置
# 查看接口的 Metric 值
sysctl net.ipv6.conf.eth0.ra_defrtr_metric
# 检查路由表中的默认路由优先级
ip -6 route show | grep "default"
四、典型应用场景
1. 多接口负载均衡/故障切换
• 场景:设备通过双网卡(如 eth0 和 eth1)连接网络,需根据链路质量优先使用某个接口。
• 配置:
# 主链路(eth0)高优先级
net.ipv6.conf.eth0.ra_defrtr_metric=100
# 备用链路(eth1)低优先级
net.ipv6.conf.eth1.ra_defrtr_metric=200
2. 避免与静态路由冲突
• 场景:在已手动配置默认路由的路由器上,需降低 RA 自动路由的优先级,防止干扰。
• 配置:
# 手动路由的 Metric 更小(如 50),自动路由 Metric 更大(如 200)
ip -6 route add default via 2001:db8::1 dev eth0 metric 50
sysctl -w net.ipv6.conf.eth0.ra_defrtr_metric=200
3. 容器/虚拟化网络优化
• 场景:宿主机与容器共享物理接口时,调整容器虚拟接口的 Metric,确保宿主流量优先。
• 配置:
# 容器虚拟接口 veth0 设置较大 Metric
sysctl -w net.ipv6.conf.veth0.ra_defrtr_metric=300
五、注意事项与常见问题
1. 内核版本兼容性
• 最低要求:Linux 内核 ≥3.14(旧版本可能不支持此参数)。
• 验证支持性:
# 检查参数是否存在
sysctl -a | grep ra_defrtr_metric
2. 依赖参数未启用
• 问题:若 accept_ra=0 或 accept_ra_defrtr=0,ra_defrtr_metric 不会生效。
• 解决:确保以下配置已启用:
sysctl -w net.ipv6.conf.eth0.accept_ra=1
sysctl -w net.ipv6.conf.eth0.accept_ra_defrtr=1
3. RA 未包含默认路由
• 现象:即使配置正确,路由表中仍无默认路由。
• 排查:
• 抓包确认 RA 是否包含默认路由信息:
bash tcpdump -i eth0 -nn "icmp6 && ip6[40] == 134"
• 检查路由器配置,确保 RA 发送了默认路由(M=1 标志)。
六、安全与性能建议
• 防御 RA 欺骗:
结合 ip6tables 过滤非法 RA,防止攻击者注入虚假默认路由:
ip6tables -A INPUT -i eth0 -p icmpv6 --icmpv6-type router-advertisement -j DROP
ip6tables -A INPUT -i eth0 -p icmpv6 --icmpv6-type router-advertisement -s fe80::/10 -j ACCEPT
• 避免 Metric 冲突:
确保不同接口或协议的 Metric 值不冲突,防止路由振荡。
七、总结
ra_defrtr_metric 是精细控制 IPv6 默认路由优先级的关键参数,适用于多链路负载均衡、故障切换及复杂网络架构。合理配置需结合内核版本、RA 发送方行为及实际网络拓扑,同时兼顾安全防护。通过以下命令可快速掌握配置流程:
# 1. 启用 RA 接收和默认路由
sysctl -w net.ipv6.conf.eth0.accept_ra=1
sysctl -w net.ipv6.conf.eth0.accept_ra_defrtr=1
# 2. 设置默认路由 Metric
sysctl -w net.ipv6.conf.eth0.ra_defrtr_metric=100
# 3. 验证路由表
ip -6 route show
ra_defrtr_metric 参数详解
1. 参数概述
- 路径:
/proc/sys/net/ipv6/conf/<interface>/ra_defrtr_metric - 功能:设置 RA(路由器通告)消息中默认路由器的路由度量值(Metric)。
- 默认值:
0(使用默认度量值)。 - 可选值:
0-255:自定义度量值,数值越低,路由的优先级越高。
2. 核心作用
- 影响路由优先级:
- 路由器在选择默认路由时,优先选择度量值较低的路由。
- 通过调整
ra_defrtr_metric,可以控制从 RA 消息中获取的默认路由的优先级。
3. 示例配置
场景 1:提高默认路由优先级
# 设置较低的度量值(如 10),提高默认路由的优先级
echo 10 > /proc/sys/net/ipv6/conf/all/ra_defrtr_metric
场景 2:降低默认路由优先级
# 设置较高的度量值(如 200),降低默认路由的优先级
echo 200 > /proc/sys/net/ipv6/conf/all/ra_defrtr_metric
4. 验证配置
# 查看当前度量值
sysctl net.ipv6.conf.all.ra_defrtr_metric
# 查看默认路由
ip -6 route show default
5. 注意事项
-
依赖关系:
ra_defrtr_metric仅在accept_ra_defrtr=1时生效。- 若
accept_ra=0,此参数设置会被忽略。
-
合理设置:
- 根据网络架构和路由策略,合理设置度量值,避免因优先级设置不当导致路由选择异常。
-
默认值的含义:
- 默认值
0表示使用系统默认的度量值(通常为100),适合大多数场景。
- 默认值
-
动态调整:
- 支持动态修改,无需重启网络服务。但需确保修改后通过
sysctl -p或手动加载。
- 支持动态修改,无需重启网络服务。但需确保修改后通过
6. 持久化配置
# 编辑 /etc/sysctl.conf 或创建 /etc/sysctl.d/99-ipv6.conf:
net.ipv6.conf.all.ra_defrtr_metric = 10
# 应用配置
sysctl -p
总结
ra_defrtr_metric 是一个用于调整默认路由优先级的参数,适用于需要精细控制 IPv6 路由选择的场景。通过合理设置度量值,可以优化网络性能和路由策略。在配置时,需结合 accept_ra 和 accept_ra_defrtr 的设置,确保参数生效并符合实际需求。