Linux系统中组播 ICMP报文送达失败

举例描述:

AGV机器人系统之间以组播地址实现相互学习同步数据,例如使用到了224.0.0.251类组播地址。AGV系统作为Ubuntu系统中应用子系统,其基于ROS通信系统实现。工厂中中控、AGV构建局域网,其之间通过2.48GHz频段无线通信,AGV自动导航定位感知判断完成各项任务,其之间相互学习,中控对整个工厂机器人系统进行调度管理监控。中控通过VPN技术实现对远端AGV群进行监控调度。

问题1:中控无法获取AGV状态,AGV之间未能相互发现

原因:局域网组播通信失败

诊断解决:

1. 组播地址ping失败

$ ping 224.0.0.251

2. 路由配置

添加224.0.0.0路由信息

$ sudo route add -net 224.0.0.0 netmask 224.0.0.0 dev wlp4s0

3.检查/etc/sysctl.conf配置

4.查看/proc/sys/net/ipv4/conf/all/*配置

5.检查防火墙配置

$ iptables -L -n

$ iptables -F  #清除预设表filter中的所有规则链的规则(将可能导致主机网络异常)

$ sudo iptables -X  #清除预设表filter中使用者自定链中的规则(将可能导致主机网络异常)

参考: https://www.cnblogs.com/alimac/p/5848372.html

6.查看组播绑定

$ sudo netstat -gn

$ sudo ifconfig wlp4s0 multicast    #打开wlp4s0组播功能

$ sudo ifconfig wlp4s0 -multicase   #关闭wlp4s0组播功能

7.导出防火墙配置

$ sudo iptables --list-rules > iptable.rule    #导出iptable表一一删除排查

$ sudo apt-get install uif && sudo apt-get remove uif && iptables -L -n

$ sudo iptables -D ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT

$ sudo iptables -P INPUT ACCEPT

$ sudo iptables -P FORWARD ACCEPT

$ sudo iptables -P OUTPUT ACCEPT

8.直接卸载iptables

$ sudo apt-get remove iptables

9.检查IGMP/PIM组播路由模块

参考:http://blog.sina.com.cn/s/blog_55afbecd0102wy4n.html

10.诊断

B主机建立hotspot热点,A主机接入热点与B建立通信,接入网卡wlp4s0。

$ sudo ifconfig wlp4s0 192.168.1.116     #A主机ip

$ sudo ifconfig wlp4s0 192.168.1.113     #B主机ip
$ sudo route add -net 192.168.1.0/24 dev wlp4s0   # 新增192.168.1.0网段路由

$ sudo route add -net 224.0.0.0 netmask 224.0.0.0 dev wlp4s0    #新增组播路由信息

AB主机关闭反向过滤配置

$ echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter    #AB主机关闭反向过滤配置

或者通过修改/etc/sysctl.conf配置

 net.ipv4.conf.default.rp_filter=0
 net.ipv4.conf.all.rp_filter=0
 net.ipv4.conf.wlp4s0.rp_filter=0

$ sudo sysctl -p /etc/sysctl.conf

 

此时A与B通过192.168.1.0网段可相互通信,但组播地址224.0.0.251却无法访问。诊断方法如下:

$ sudo tcpdump -i wlp4s0 -n multicast -s 65534    #A与B使用tcpdump监听抓取wlp4s0报文

A主机ip为192.168.1.116,A主机ping组播地址224.0.0.251

$ ping 224.0.0.251

$ sudo tcpdump -i wlp4s0 -n multicast -s 65534

B主机ip为192.168.113,B主机ping组播地址224.0.0.251

$ ping 224.0.0.251

$ sudo tcpdump -i wlp4s0 -n multicast -s 65534

发现A主机与B主机都能收到双方组播icmp请求,但双方都无法收到组播icmp相应。

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值