2016-04-07 4 views
1

Ich möchte das Alljoyn-Framework auf einem Embedded-Linux-Gerät verwenden. Aus Sicherheitsgründen muss für dieses Gerät eine Firewall konfiguriert werden. Dies geschieht mit iptables.Alljoyn Service hinter einer Linux-Firewall (iptables)

Was ich bisher getan habe: Ich habe versucht, das AboutService-Beispiel auf diesem Gerät ohne Firewall auszuführen und dann die TCPDump überprüft. Als Client habe ich den IoT Explorer für AllJoyn (Windows 10) benutzt, aber auch der AboutClient sollte gut funktionieren. Überprüfen TCPDump mit wireshark, die Ports für die Ansage klar sind, ich habe Ports öffnen (AllJoyn-mcm) (AllJoyn) und (MDNS?!?) Für UDP. Ich löste das mit folgenden Regeln:

$ 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 

Mit diesen Regeln wird das Gerät erfolgreich im IoT-Explorer gefunden.

Aber wenn das Gerät eingeht (z. B. um volle Daten zu erhalten), beginnt die TCP-Kommunikation. Und das ist nicht auf einem bestimmten Port. Der Port scheint zufällig zu sein. NMap zeigt z.B. folgenden Ports, wenn Sie den AboutService neu starten.

  • 46368/tcp open unbekannt oder
  • 52739/tcp open unbekannt

Wie kann ich feststellen, den Port? Wie kann ich das Alljoyn-Framework erzwingen, um die TCP-Kommunikation zu einem bestimmten Port oder wenigstens einem kleinen Port-Bereich, z. 41000-41100? Oder gibt es eine andere Möglichkeit, die Firewall so zu konfigurieren, dass die Alljoyn-Kommunikation nicht blockiert wird?

Antwort

0

ich es auf eine andere Weise gelöst:

Vor meiner AllJoyn Dienst starten, ich startete die alljoyn-daemon binär aus dem AllJoyn Kern lib. Dies leitet den Datenverkehr über definierbare Ports, standardmäßig über Port (alljoyn-mcm).

Mit diesem Setup ich Firewall-Regeln folgende konfiguriert werden konnten und alles funktionierte:

$ 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 

Hinweis: Ich nehme diese sind zu viel offene Ports, aber das ist für mich genug. Mit mehr Nachforschungen kann die Liste sicherlich reduziert werden.

0

Im Allgemeinen verwendet das AllJoyn Framework UDP für die Erkennung und TCP für die direkte Kommunikation.

Wellkown (registriert) Ports sind;

  • Port-Nummer 9956: IANA UDP-Multicast-Port für AllJoyn
  • Port-Nummer 5353: IANA zugewiesene UDP-Multicast-Port für mDNS

Wenn die Geräte einander entdecken, beginnt die TCP-Kommunikation auf ein zufällig ephemeren Port. Diese Implementierung ist ein zielabhängiger Code, Sie können Quellcodes des Ziels überprüfen.