소개하다:저는 무선 센서 네트워크를 위한 6lowPAN 프로젝트를 진행하고 있습니다. 기본적으로 Linux 호스트(Contiki OS)에서 실행되는 노드 세트가 있습니다. 각 노드에는 br0에 브리지된 자체 Tap 인터페이스가 있습니다. 브리지 내부에서는 모든 것이 잘 작동합니다. 노드는 요청을 보내고 이웃 교환을 올바르게 받을 수 있습니다. 모든 스위치는 6lowPAN(IPV6 적용)을 사용합니다.
질문: 이제 제가 관심 있는 것은 호스트에서 노드로 요청을 보내는 것입니다. 따라서 br0에 bbbb::/64를 대상으로 하는 라우팅 규칙을 추가했습니다. 호스트 Linux에서 모든 노드를 ping할 수 있지만 불행하게도 UDP 요청은 실패합니다. 저는 Firefox를 사용하여 (Copper 플러그인을 통해) UDP 패킷을 보내고 있습니다. UDP 패킷은 노드에서 올바르게 수신되고 처리되지만 응답은 브리지에서 거부되어 호스트에 연결할 수 없다고 응답합니다(포트에 연결할 수 없음).
질문: 브리지와 해당 호스트 간의 라우팅 규칙에 대한 제한 사항이나 특정 동작이 있습니까? 패킷이 Firefox 소켓으로 전달되지 않는 이유를 확인하기 위해 Linux IP 스택에 대한 추가 로그 정보를 얻으려면 어떻게 해야 합니까?
조사:
netstat
Firefox가 올바른 응답 포트에서 효과적으로 수신 대기하고 있는지 확인했습니다 . [확인]nc
호스트가 UDP IPv6 교환을 허용하는지 확인했습니다 . [확인]- 방화벽 규칙 없음 [확인]
- 라우팅 규칙을 사용하거나 사용하지 않고 IPV6 주소를 br0 bbbb::1/64에 수동으로 추가했지만 작동하지 않습니다(ping이 전혀 작동하지 않음) [ok]
- 탐험할 수 있는 다른 많은 이국적인 장소들
기본 구성:
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
와이어샤크
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)