
紹介する:私はワイヤレスセンサーネットワーク用の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交換を許可していることを確認しました。 [確認]- ファイアウォールルールなし[OK]
- ルーティングルールを有効または無効にして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)