介绍:我正在从事无线传感器网络的 6lowPAN 项目。基本上,我有一组在 Linux 主机上运行的节点(Contiki OS)。每个节点都有自己的 Tap 接口,桥接在 br0 上。在网桥内部,一切工作正常:节点可以发送请求并正确接收邻居交换。所有交换机都使用 6lowPAN(IPV6 适配)。
问题:现在,我感兴趣的是从主机向节点发送请求。因此,我添加了目标 bbbb::/64 到 br0 的路由规则。我可以从主机 linux ping 任何节点,不幸的是 UDP 请求失败。我正在使用 Firefox 发送(通过 Copper 插件)一个 UDP 数据包,该数据包被节点正确接收和处理,但响应被网桥拒绝,该网桥回复主机无法访问(端口无法访问)。
问题:网桥与其主机之间的路由规则是否有限制或特定行为?如何获取有关 Linux IP 堆栈的更多日志信息,以确定它不将数据包转发到 Firefox 套接字的原因?
调查:
- 我检查了
netstat
Firefox 是否有效地侦听正确的响应端口 [确定] - 我检查了
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)