兴奋的虚拟化 2026-02-13 15:18 采纳率: 0%
浏览 4

bond后的网卡IPv6不通

主机网卡lan01-lan04,1/2组成eth01(内网),3/4组成eth02(外网v4+v6),现在公网v4正常,v6不通
ping网关,connect: 网络不可达

1、bond后的网卡与交换机的eth-trunk互联,ipv6不通,ifup、ifdown会好40分钟左右,然后又不行
2、重启电脑可以恢复
3、LLDP的探测结果是lan03没有邻居,但是bond是正常,lan03的端口是up的,上游交换机LACP是动态,并且结果正常
4、NDP邻居看不到网关的mac,并且状态是FAILED或者STATE

这是什么原因导致的呢,目前我只是怀疑lldp的邻居探测结果,会影响NDP的工作

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2026-02-13 15:19
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    根据你描述的问题,bond后的网卡IPv6不通,并且存在以下现象:

    • 公网v4正常,但v6不通
    • ifup/ifdown后能恢复40分钟,之后又失效
    • 重启系统可恢复
    • LLDP探测显示lan03无邻居,但bond状态正常,端口up,LACP动态配置正常
    • NDP无法看到网关MAC,状态为FAILED或STATE
    • 怀疑LLDP影响了NDP工作

    一、可能的原因分析

    1. LLDP与NDP的冲突或干扰

      • LLDP(Link Layer Discovery Protocol)用于发现相邻设备信息,而NDP(Neighbor Discovery Protocol)是IPv6中用于发现本地链路设备的重要协议。
      • 如果LLDP未能正确识别邻接设备,可能导致NDP无法获取正确的网关信息,进而导致IPv6通信失败。
    2. Bonding模式问题(如mode=8或mode=5)

      • Bonding在某些模式下(如mode=8mode=5)可能会导致部分接口在特定条件下失去连接,尤其是当交换机未正确支持LACP时。
      • 若交换机使用的是动态LACP,而系统中的bonding配置不匹配,也可能导致接口不稳定。
    3. ARP/NDP缓存异常或超时设置不当

      • IPv6依赖NDP进行地址解析,若缓存过期或未更新,可能导致网关不可达。
      • 系统可能因缓存失效导致IPV6通信中断。
    4. 交换机配置问题(如IPv6 VLAN、ACL、防火墙规则)

      • 虽然v4正常,但可能交换机对IPv6流量进行了限制或未正确转发。
      • 需要检查交换机是否启用了IPv6功能,是否允许IPv6流量通过。
    5. 驱动或内核版本兼容性问题

      • 某些旧版驱动或内核对IPv6和bonding的支持可能存在缺陷,尤其是在多网卡绑定的情况下。

    二、解决方案

    1. 确认LLDP与NDP是否冲突

    • 关闭LLDP服务,观察是否能解决IPv6问题:
      systemctl stop lldpd
      systemctl disable lldpd
      
    • 查看LLDP日志,确认是否有错误或警告:
      journalctl -u lldpd
      
    • 如果LLDP关闭后IPv6恢复正常,说明LLDP可能干扰了NDP的正常工作。

    2. 检查Bonding配置

    • 确认bonding模式是否为active-backup或balance-rr,避免使用mode=8(LACP):

      cat /etc/sysconfig/network-scripts/ifcfg-bond0
      

      示例配置:

      DEVICE=bond0
      NAME=bond0
      BOOTPROTO=none
      ONBOOT=yes
      TYPE=Bond
      BONDING_OPTS="mode=1 miimon=100"
      
      • mode=1 是 active-backup 模式,适用于大多数情况。
      • miimon=100 表示每100ms检测一次链路状态。
    • 确保交换机也配置为LACP动态模式,并确认其与Linux系统的bonding配置一致。

    3. 检查IPv6 ND缓存及超时设置

    • 查看NDP缓存
      ip -6 neighbor show
      
    • 手动添加网关的IPv6地址和MAC(临时测试):
      ip -6 neighbor add <gateway_ipv6> lladdr <gateway_mac> dev bond0
      
    • 修改NDP缓存超时时间(建议增加):
      sysctl -w net.ipv6.conf.all.max_desync_factor=100000
      

    4. 检查交换机配置

    • 确认交换机是否启用IPv6功能
    • 检查是否对IPv6流量进行了限制(如ACL、防火墙策略)。
    • 确认交换机上的VLAN配置是否与Linux主机一致(特别是外网v6所在的VLAN)。

    5. 升级驱动或内核

    • 更新系统内核到最新稳定版本:
      yum update kernel
      
    • 安装最新的网卡驱动(如有必要)。

    6. 调整网络脚本或使用NetworkManager管理

    • 尝试用NetworkManager管理bonding,以简化配置并减少出错概率。
    • 编写自定义脚本处理ifup/ifdown事件,确保每次启动后重新配置IPv6。

    三、建议操作步骤(按优先级排序)

    1. 禁用LLDP服务,观察IPv6是否恢复。
    2. 检查bonding配置,确保模式为mode=1mode=5,并匹配交换机设置。
    3. 查看NDP缓存和超时设置,必要时手动添加网关信息。
    4. 检查交换机IPv6配置,确保没有限制或误配置。
    5. 更新系统内核和驱动,提高兼容性。
    6. 考虑使用NetworkManager管理网络接口,减少人为配置错误。

    四、代码示例(修改bonding配置)

    # 修改bond0配置文件
    cat /etc/sysconfig/network-scripts/ifcfg-bond0
    

    内容如下:

    DEVICE=bond0
    NAME=bond0
    BOOTPROTO=none
    ONBOOT=yes
    TYPE=Bond
    BONDING_OPTS="mode=1 miimon=100"
    

    然后分别配置eth01和eth02:

    # eth01配置
    cat /etc/sysconfig/network-scripts/ifcfg-eth01
    

    内容如下:

    DEVICE=eth01
    BOOTPROTO=none
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    

    同理配置eth02

    cat /etc/sysconfig/network-scripts/ifcfg-eth02
    

    内容如下:

    DEVICE=eth02
    BOOTPROTO=none
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    

    五、总结

    | 问题点 | 原因 | 解决方案 | |--------|------|----------| | IPv6不通 | LLDP干扰NDP | 关闭LLDP服务 | | 接口不稳定 | bonding模式不匹配 | 使用mode=1mode=5 | | NDP缓存失效 | 缓存超时或未更新 | 手动添加网关MAC或延长超时 | | 交换机限制 | IPv6未启用或配置错误 | 检查交换机IPv6配置 | | 内核/驱动兼容性 | 旧版本不支持 | 升级内核和驱动 |


    如果你能提供具体的ip aip -6 neigh showbonding配置和交换机型号,我可以进一步帮你定位具体原因。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月13日