CentOS7 VLAN环境下IGMP Report报文从lo接口发送故障求助
这个异常是Linux内核默认的组播报文发送接口选择逻辑、反向路径校验规则、缺少显式组播路由三个因素共同导致的,需要检查修改以下配置:
- 配置显式组播静态路由
默认情况下Linux内核会参考单播路由表选择IGMP Report的发送接口,如果没有显式指定组播路由,内核可能会选中lo作为发送接口。执行以下命令配置组播路由到指定VLAN子接口:
# 按需替换为你的组播网段,也可配置全局224.0.0.0/4的组播路由 ip route add 224.0.0.0/4 dev eno1.956
如果需要永久生效,把该规则写入/etc/sysconfig/network-scripts/route-eno1.956文件。
- 调整rp_filter反向路径过滤参数
CentOS7默认开启严格反向路径校验(rp_filter=1),当IGMP报文的源地址反向路由和发送接口不匹配时,内核会丢弃报文或者选择lo接口发送,需要修改内核参数:
编辑/etc/sysctl.conf文件,添加以下配置:
net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.eno1.956.rp_filter = 2 net.ipv4.conf.lo.rp_filter = 0
执行sysctl -p让配置立即生效。
- 调整组播加入方式
使用ip addr add带autojoin参数加组时,内核会自动选择源地址,如果选中lo接口的IP作为源地址,就会从lo发送报文。可以改用ip maddr命令明确指定接口加入组播:
ip maddr add <组播IP> dev eno1.956
- 确认接口组播功能开启
执行以下命令确认VLAN子接口已开启组播功能:
ip link show eno1.956
如果输出中没有MULTICAST标记,执行以下命令开启:
ip link set eno1.956 multicast on
完成以上配置后重新加入组播,再次抓包确认IGMP Report和Leave报文都从eno1.956接口发送即可。
内容的提问来源于stack exchange,提问作者deinmaarnix
相关产品推荐
相关产品推荐

