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?