找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 26629|回复: 0

ip‑link 检测链路,故障自动切换出口

[复制链接]

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 7 天前 | 显示全部楼层 |阅读模式
在 Linux 系统中,使用
  1. ip-link
复制代码
(通常指
  1. ip link
复制代码
命令,属于
  1. iproute2
复制代码
工具包)结合其他工具可以实现网络链路检测和故障自动切换出口的功能。以下是实现这一目标的常见方法和步骤:




1. 链路状态检测
  1. ip link
复制代码
可以查看和配置网络接口状态,但本身不提供自动切换功能。需要结合以下工具:

    1. ethtool
    复制代码
    :检测物理链路状态(如网线是否插入、光模块是否正常)。
    1. ping
    复制代码
    1. arping
    复制代码
    :检测对端设备的可达性(逻辑链路状态)。
    1. nmcli
    复制代码
    (NetworkManager)
    1. networkd
    复制代码
    :动态管理网络配置。


示例:使用
  1. ethtool
复制代码
检测链路
  1. # 检查 eth0 的物理链路状态
  2. ethtool eth0 | grep "Link detected"
  3. # 输出示例:Link detected: yes
复制代码




2. 故障自动切换方案
方案 1:使用
  1. ifupdown
复制代码
  1. NetworkManager
复制代码
的故障转移


  • 多网关配置:在
    1. /etc/network/interfaces
    复制代码
    中配置多个网关,结合
    1. route
    复制代码
    1. ip route
    复制代码
    设置优先级。
  • NetworkManager:通过
    1. nmcli
    复制代码
    配置多连接,设置
    1. failure-mode=redirect
    复制代码
    (或类似逻辑)。


方案 2:使用
  1. keepalived
复制代码
(高可用性)


  • 部署
    1. keepalived
    复制代码
    实现 VRRP 协议,主备节点自动切换虚拟 IP。
  • 配置健康检查脚本(如检测
    1. ping
    复制代码
    或 HTTP 服务)。


方案 3:自定义脚本 +
  1. ip route
复制代码

通过脚本定期检测链路状态,动态切换默认路由。

示例脚本:
  1. #!/bin/bash
  2. PRIMARY_INTERFACE="eth0"
  3. BACKUP_INTERFACE="eth1"
  4. PRIMARY_GATEWAY="192.168.1.1"
  5. BACKUP_GATEWAY="10.0.0.1"
  6. # 检测主链路是否存活
  7. if ping -c 2 -I $PRIMARY_INTERFACE $PRIMARY_GATEWAY &> /dev/null; then
  8.     # 主链路正常,确保默认路由指向主网关
  9.     ip route replace default via $PRIMARY_GATEWAY dev $PRIMARY_INTERFACE
  10. else
  11.     # 主链路故障,切换到备份网关
  12.     ip route replace default via $BACKUP_GATEWAY dev $BACKUP_INTERFACE
  13. fi
复制代码

  • 定时执行:通过
    1. cron
    复制代码
    1. systemd timer
    复制代码
    定期运行脚本。





3. 高级工具

    1. conntrack
    复制代码
    1. nftables
    复制代码
    :结合防火墙规则,实现更复杂的流量切换逻辑。
    1. Bonding
    复制代码
    1. Teamd
    复制代码
    :将多个物理接口聚合为一个逻辑接口,提供冗余(需硬件/驱动支持)。

  1. # 示例:创建 bonding 接口
  2.   modprobe bonding
  3.   ip link add bond0 type bond mode active-backup
  4.   ip link set eth0 master bond0
  5.   ip link set eth1 master bond0
复制代码




4. 监控与告警

    1. Prometheus + Alertmanager
    复制代码
    :监控链路状态并触发告警。
    1. Zabbix
    复制代码
    /
    1. Nagios
    复制代码
    :企业级监控工具,支持自定义检测脚本。





注意事项

  • 权限问题:脚本需要
    1. root
    复制代码
    权限或
    1. CAP_NET_ADMIN
    复制代码
    能力。
  • 防抖动:避免频繁切换,可在脚本中加入状态持久化(如记录上次切换时间)。
  • 日志记录:记录切换事件以便排查问题。





总结

  • 简单场景:使用
    1. ip route
    复制代码
    + 自定义脚本。
  • 高可用需求
    1. keepalived
    复制代码
    1. Bonding/Teamd
    复制代码

  • 企业级部署:结合
    1. NetworkManager
    复制代码
    1. conntrack
    复制代码
    或专业 SDN 方案。


根据实际需求选择合适的方案,并确保测试覆盖主备切换的所有场景。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五云论坛 ( 黔ICP备2022001370号-1|贵公网安备52032102000798号 )

GMT+8, 2026-9-12 19:02 , Processed in 0.069292 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表