ra_defrtr_metric 笔记250405

147 阅读25分钟

ra_defrtr_metric 笔记250405


ra_defrtr_metric 是 Linux 系统中用于控制 通过 IPv6 路由通告(RA)生成的默认路由的优先级(Metric) 的关键参数。以下是其详细说明:


📜 参数定义

  • 路径
    /proc/sys/net/ipv6/conf/<接口>/ra_defrtr_metric
  • 默认值
    1024(大多数系统的默认值)。
  • 作用
    设置通过 RA 消息生成的默认路由的 度量值(Metric),值越低优先级越高。

🌐 工作原理

  1. Metric 的作用

    • Metric 表示路由的优先级,范围通常为 0(最高优先级)到 4294967295(最低优先级)。
    • 系统会选择 Metric 值最小的路由作为首选路由。
  2. 与 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 加载配置。


🔍 验证操作

  1. 查看参数值

    sysctl net.ipv6.conf.eth0.ra_defrtr_metric
    
  2. 检查路由表

    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)。

⚠️ 注意事项

  1. 依赖参数
    ra_defrtr_metric 仅在 accept_ra=1accept_ra_defrtr=1 时生效。

  2. forwarding 的冲突
    若启用 IPv6 转发(forwarding=1),需手动设置 accept_ra=2 以允许接收 RA。

  3. 接口优先级
    不同接口的 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带宽、延迟、链路成本企业级网络,动态路径优化
BGPAS 路径长度、策略规则互联网骨干网,跨自治系统路由
静态路由手动指定(如 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)
Windows0-9999
Cisco 路由器0-255(依协议不同)

⚠️ 注意事项

  1. 协议兼容性:不同设备或系统对 Metric 的解释可能不同,需确保跨设备一致性。
  2. 动态路由协议:OSPF/BGP 等协议会自动计算 Metric,手动干预需谨慎。
  3. 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. 安全与注意事项

  1. 路由冲突
    若多条默认路由 metric 值相同,可能引发不可预测的路由选择。需确保 metric 唯一。
  2. 网络稳定性
    频繁修改 metric 可能导致路由震荡,建议在维护窗口操作。
  3. 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=1accept_ra_defrtr=1
    • 通过 sysctl 持久化配置,避免重启失效。
  • 典型场景
    • 优化多路径网络流量分配。
    • 设置备用路由(高 metric 值)。
  • 验证方法
    • 使用 ip -6 route show 查看路由优先级。
    • 通过抓包确认 RA 消息合法性。










ra_defrtr_metric 是 Linux IPv6 网络配置中的一个关键参数,用于设置路由通告(RA)消息中默认路由的度量值(Metric),直接影响路由优先级。以下是详细解析:

1. 作用

  • 路由优先级:度量值越小,路由优先级越高。系统选择路由时会优先选用度量值较低的路径。
  • 网络优化:通过调整该值,可控制多网卡环境下的默认路由选择,优化网络流量分配。

2. 取值范围

  • 典型范围0255(具体范围可能因系统或内核版本而异)。
  • 特殊值
    • 0:默认值,表示使用系统自动计算的路由度量。
    • 1255:手动指定的度量值,值越小优先级越高。

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. 验证与诊断

  1. 查看当前值

    sysctl net.ipv6.conf.all.ra_defrtr_metric net.ipv6.conf.eth0.ra_defrtr_metric
    
  2. 检查路由表

    ip -6 route show  # 确认默认路由及其度量值
    
  3. 监控网络流量

    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. 参数配置

取值范围
  • 整数:可以是任意非负整数(如 0100200 等)。
  • 默认值0(最高优先级)。
配置语法
net.ipv6.conf.<interface>.ra_defrtr_metric = <value>
  • <interface>:网络接口名称(如 all 表示全局设置,eth0wlan0 表示特定接口)。
  • <value>:度量值(如 100)。

3. 典型使用场景

场景 1:调整默认路由的优先级

假设系统同时存在以下两条默认路由:

  1. 通过 RA 获取的默认路由(度量值默认为 0)。
  2. 手动配置的默认路由(度量值为 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. 注意事项

  1. 依赖关系

    • 必须先启用 accept_ra_defrtr=1,否则此参数无效。
    • 同时需确保 accept_ra 允许接收 RA(如 accept_ra=12)。
  2. 优先级逻辑

    • 若多个默认路由的度量值相同,系统会根据其他因素(如路由类型、接口优先级)选择路径。
  3. 与手动路由的冲突

    • 手动添加的路由(如 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 routemetric)设置。

通过合理配置 ra_defrtr_metric,可以精细控制 IPv6 默认路由的优先级,适用于多网络环境或需要优化路由选择的场景。










ra_defrtr_metric 是 Linux 系统中用于配置 IPv6 网络的一个参数,位于 /proc/sys/net/ipv6/conf 目录下,可在该目录的 all(全局配置)、default(默认配置)或者具体网络接口(如 eth0ens33 等)的子目录中进行设置。下面从基本概念、取值含义、配置方法、应用场景和与其他参数的关系几个方面为你详细介绍。

基本概念

在 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_raaccept_ra 控制设备是否接收 RA 消息。只有当 accept_ra 设置为 1(即设备接受 RA 消息)时,ra_defrtr_metric 才会发挥作用。因为如果设备不接收 RA 消息,就无法获取到默认路由器的度量值信息。
  • accept_ra_defrtraccept_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),可以调高此值。
配置方法
  1. 查看当前值

    cat /proc/sys/net/ipv6/conf/ens33/ra_defrtr_metric
    
  2. 修改值

    • 通过直接写入值到文件:
      echo 512 > /proc/sys/net/ipv6/conf/ens33/ra_defrtr_metric
      
    • 使用 sysctl 命令:
      sysctl -w net.ipv6.conf.ens33.ra_defrtr_metric=512
      
  3. 永久修改

    • 编辑 /etc/sysctl.conf 文件:
      echo "net.ipv6.conf.ens33.ra_defrtr_metric = 512" >> /etc/sysctl.conf
      sysctl -p
      
注意事项
  • 依赖关系ra_defrtr_metric 仅在 accept_raaccept_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=12)。
• 允许通过 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. 多接口负载均衡/故障切换

场景:设备通过双网卡(如 eth0eth1)连接网络,需根据链路质量优先使用某个接口。
配置

# 主链路(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=0accept_ra_defrtr=0ra_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. 注意事项
  1. 依赖关系

    • ra_defrtr_metric 仅在 accept_ra_defrtr=1 时生效。
    • accept_ra=0,此参数设置会被忽略。
  2. 合理设置

    • 根据网络架构和路由策略,合理设置度量值,避免因优先级设置不当导致路由选择异常。
  3. 默认值的含义

    • 默认值 0 表示使用系统默认的度量值(通常为 100),适合大多数场景。
  4. 动态调整

    • 支持动态修改,无需重启网络服务。但需确保修改后通过 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_raaccept_ra_defrtr 的设置,确保参数生效并符合实际需求。



















Linux的: /proc/sys/net/ipv6/conf/ 笔记250404