Linux 网桥阻止来自 Tap 接口的 UDP 数据包

Linux 网桥阻止来自 Tap 接口的 UDP 数据包

介绍:我正在从事无线传感器网络的 6lowPAN 项目。基本上,我有一组在 Linux 主机上运行的节点(Contiki OS)。每个节点都有自己的 Tap 接口,桥接在 br0 上。在网桥内部,一切工作正常:节点可以发送请求并正确接收邻居交换。所有交换机都使用 6lowPAN(IPV6 适配)。

问题:现在,我感兴趣的是从主机向节点发送请求。因此,我添加了目标 bbbb::/64 到 br0 的路由规则。我可以从主机 linux ping 任何节点,不幸的是 UDP 请求失败。我正在使用 Firefox 发送(通过 Copper 插件)一个 UDP 数据包,该数据包被节点正确接收和处理,但响应被网桥拒绝,该网桥回复主机无法访问(端口无法访问)。

问题:网桥与其主机之间的路由规则是否有限制或特定行为?如何获取有关 Linux IP 堆栈的更多日志信息,以确定它不将数据包转发到 Firefox 套接字的原因?

调查

  • 我检查了netstatFirefox 是否有效地侦听正确的响应端口 [确定]
  • 我检查了nc主机是否允许 UDP IPv6 交换 [OK]
  • 没有防火墙规则 [确定]
  • 我手动将 IPV6 地址添加到 br0 bbbb::1/64,有或没有路由规则,但这不起作用(ping 根本不起作用)[确定]
  • 许多其他异国情调的探索

基本配置:

brctl addbr br0
ip tuntap add dev br0 mode tap
brctl addif br0 tapXXX
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
ip -6 route add bbbb::/64 dev br0
ping6 ff02::1 -I br0 [OK]
ping6 bbbb::ff02:1:2:3 [OK]
firefox on coap://[bbbb::ff02:1:2:3]/hello <= FAILED (response is blocked by br0 bridge)

日志:

如果配置

br0       Link encap:Ethernet  HWaddr e2:81:42:77:bf:10  
          inet6 addr: fe80::28bf:62ff:fed7:54ac/64 Scope:Link

netstat -p6

AIC Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
udp6       0      0 fe80::28bf:62ff:f:46939 bbbb::ff:fe00:1%1:5683  ESTABLISHED 2544/firefox  

Wireshark

fe80::28bf:62ff:fed7:54ac   bbbb::ff:fe00:1       COAP     73     Confirmable, GET, /hello1  
fe80::ff:fe00:1             fe80::28bf:62ff:fed7:54ac COAP     83     Acknowledgment, 2.05  
fe80::28bf:62ff:fed7:54ac   fe80::ff:fe00:1       ICMPv6   131    Destination Unreachable (Port unreachable)  

相关内容