2016-04-07 5 views
1

組み込みLinuxデバイスでAlljoynフレームワークを使いたいです。セキュリティ上の理由から、そのデバイスのファイアウォールを設定する必要があります。これはiptablesで行われます。Linuxファイアウォールの背後にあるAlljoynサービス(iptables)

これまでに行ったこと: ファイアウォールなしでそのデバイスでAboutServiceの例を実行しようとした後、TCPDumpをチェックしました。クライアントとして、AllJoyn(Windows 10)用のIoT Explorerを使用しましたが、AboutClientもうまく動作するはずです。 UDP用(MDNS?!?)(alljoyn)とのwiresharkでのTCPDumpの確認、告知用のポートは、私が(alljoyn-MCM)ポートを開く必要があり、明確です。

$ iptables -A OUTPUT -p udp --sport 9955 -j ACCEPT 
$ iptables -A OUTPUT -p udp --sport 9956 -j ACCEPT 
$ iptables -A OUTPUT -p udp --dport 5353 -j ACCEPT 
$ iptables -A INPUT -p udp --sport 9955 -j ACCEPT 

これらのルールでは、デバイスはIoTエクスプローラで正常に検出されます。

しかし、デバイスにアクセスするとき(例えばabout-dataを得るために)、TCP通信が開始されます。これは特定のポートにはありません。ポートはランダムであるようです。 NMapは、 AboutServiceを(再)起動するときに、ポートに続いて。

  • 46368/tcpの未知のオープン、または
  • 52739/tcpのオープン不明

どのように私はポートを決定することができますか? AlljoynフレームワークにTCP通信を特定のポートまたは少なくとも小さいポート範囲に釘付けさせるにはどうすればよいですか? 41000-41100?または、ファイアウォールを構成する他の方法があるので、Alljoyn通信がブロックされていませんか?

答えて

0

私は別の方法でそれを解決:

私Alljoynサービスを開始する前に、私はAlljoynコアのlibからalljoyn-daemonバイナリを立ち上げました。これにより、定義可能なポート上のトラフィックがデフォルトでポート(alljoyn-mcm)にルーティングされます。私はファイアウォールルール、すべて以下の設定ができ、このセットアップでは

が働いた:

$ iptables -A INPUT -p udp -m multiport --dports 9955,9956,5353 -j ACCEPT 
$ iptables -A INPUT -p udp -m multiport --sports 9955,9956,5353 -j ACCEPT 
$ iptables -A INPUT -p tcp -m multiport --dports 9955,9956,5353 -j ACCEPT 
$ iptables -A INPUT -p tcp -m multiport --sports 9955,9956,5353 -j ACCEPT 
$ iptables -A OUTPUT -p udp -m multiport --dports 9955,9956,5353 -j ACCEPT 
$ iptables -A OUTPUT -p udp -m multiport --sports 9955,9956,5353 -j ACCEPT 
$ iptables -A OUTPUT -p tcp -m multiport --dports 9955,9956,5353 -j ACCEPT 
$ iptables -A OUTPUT -p tcp -m multiport --sports 9955,9956,5353 -j ACCEPT 

ヒント:私はこれらのポートあまり開いていますが、これは私のために十分であると仮定します。より多くの調査で、リストを確実に減らすことができます。

0

一般に、AllJoyn Frameworkは、およびTCPを直接通信用にに検出するためにUDPを使用します。

Wellkown(登録済み)ポートは、

  • ポート番号9956:mDNSの

ためのIANAによって割り当てられたUDPマルチキャストポートのデバイスが互いを発見すると、TCP通信がで開始:AllJoyn

  • ポート番号5353のためのIANA割り当てられたUDPマルチキャストポートランダムエフェメラルポート。この実装はターゲット依存コードであり、ターゲットのソースコードをチェックすることができます。

  • 関連する問題