我想在嵌入式Linux设备上使用Alljoyn框架。出于安全原因,必须为该设备配置防火墙。这是通过iptables完成的。
到目前为止我做了什么: 我试图在没有防火墙的设备上运行AboutService示例,然后检查TCPDump。作为客户端,我使用了IoT Explorer for AllJoyn(Windows 10),但是AboutClient也应该运行良好。通过wireshark检查TCPDump,公告的端口是明确的,我必须打开端口 9955 (alljoyn-mcm) 9956 (alljoyn)和 5353 (MDNS?!?)用于UDP。我用以下规则解决了这个问题:
$ 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
通过这些规则,可以在物联网资源管理器中成功发现设备。
但是当访问设备(例如,获得完整的数据)时,TCP通信开始。这不是某个端口。该端口似乎是随机的。 NMap显示例如以下端口,(重新)启动AboutService。
如何确定端口?如何强制Alljoyn框架将TCP通信固定到某个端口或至少小端口范围,例如: 41000-41100?或者是否有其他方法来配置防火墙,以便不阻止Alljoyn通信?
答案 0 :(得分:0)
通常,AllJoyn Framework使用 UDP进行发现, TCP进行直接通信。
Wellkown(注册)端口是;
当设备相互发现时,TCP通信在随机短暂端口上启动。此实现是目标相关代码,您可以检查目标的源代码。
答案 1 :(得分:0)
我用另一种方式解决了它:
在启动Alljoyn服务之前,我从Alljoyn核心库中启动了v1 <- c("Head Office", "(cancelled)", "(cancelled)", "(cancelled)",
"Deepali Mishra Ah-5564 Tst", "(cancelled)", "SHRUTI BHAGAT AH-2445 AG",
"SUMIT SETHI AH-5747 AG", "SUJATA VORA AH-5361 AG", "Deepali Mishra Ah-5564 Tst")
二进制文件。这将通过可定义端口路由流量,默认情况下通过端口 9955 (alljoyn-mcm)。
通过此设置,我可以配置以下防火墙规则,一切正常:
alljoyn-daemon
提示:我认为这些端口太多,但这对我来说已经足够了。随着更多的调查,这个名单肯定会减少。