Linux防火墙后面的Alljoyn服务(iptables)

时间:2016-04-07 06:47:11

标签: linux tcp firewall iptables alljoyn

我想在嵌入式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。

  • 46368 / tcp open unknown,或
  • 52739 / tcp open unknown

如何确定端口?如何强制Alljoyn框架将TCP通信固定到某个端口或至少小端口范围,例如: 41000-41100?或者是否有其他方法来配置防火墙,以便不阻止Alljoyn通信?

2 个答案:

答案 0 :(得分:0)

通常,AllJoyn Framework使用 UDP进行发现 TCP进行直接通信

Wellkown(注册)端口是;

  • 端口号9956:IANA为AllJoyn分配了UDP多播端口
  • 端口号5353:IANA为mDNS分配的UDP多播端口

当设备相互发现时,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

提示:我认为这些端口太多,但这对我来说已经足够了。随着更多的调查,这个名单肯定会减少。