是否有针对udp打孔的安全措施?

时间:2015-03-01 05:36:04

标签: networking udp firewall nat hole-punching

我想在两个对等体之间建立UDP通信,比如爱丽丝和鲍勃。 Alice位于端口限制锥形NAT后面(即使目标被更改,相同的内部端口也会映射到同一个外部端口),而Bob则支持对称NAT(这意味着每次新的外部端口都会更改)无论内部端口如何,都会选择目标,从而使外部端口不可预测。我之间有一台服务器,我想做一个UDP打孔。

我实施了以下策略:

  • Bob打开了大量端口,并从所有端口向Alice的外部端口发送数据包(他通过服务器知道)。
  • Alice在随机端口向Bob的NAT发送数据包,直到建立连接为止。

手头有两种类型的NAT,我做了一些实验。 Bob打开32个端口,Alice每0.1秒发送64个数据包。连接通常在1或2秒内建立,这超出了我的需要。

但是,我想知道我是否可以遇到一些严格的NAT路由器或防火墙。例如,路由器是否不允许内部对等体打开32个端口?或者(这听起来更有可能)可能会发生这样的情况:路由器看到在随机端口上传入的大量数据包被丢弃会将ip列入黑名单并丢弃所有数据包一段时间?我读到有时这可能发生在DoS攻击的情况下,但我的数据包速率比DoS攻击轻4到6个数量级。

我问的是合理的网络配置:我很确定原则上可以设置防火墙以这种方式运行。我将主要针对标准家庭连接背后的用户,因此我的主要目标是使用NAT的普通互联网提供商。

1 个答案:

答案 0 :(得分:2)

这是一个有趣的问题。

首先,我不确定是否有人有您正在寻找的确切答案。不同的网络使用不同的设备和不同的配置两个ISP可以使用十个不同的供应商来处理路由器,防火墙,NAT,入侵检测设备,DPI设备等;更不用说所有这些设备的可能配置数量。

虽然商业和企业网络已经足够糟糕,但家庭网络却更糟糕。这里有更多供应商销售调制解调器,NAT盒和影响网络连接的各种软件(如防火墙和防病毒)。所有这些都掌握在技术娴熟的用户手中,使用默认设置或更糟

此外,在家庭和商业网络中,可能存在多层NAT。我知道有一家公司为每个实验室提供NAT(将其与其他实验室和R& D网络隔离开来)。然后将每个实验室连接到R& D NAT(以将其与其他部门隔离),然后将其连接到公司范围的NAT,顺便说一下,这也是防火墙。添加一个可能的ISP级别(carrier grade)NAT,并且您最多可以查看4层NAT。希望这是一个极端的例子,但现在两层NAT在家庭NAT和运营商级NAT中非常普遍。

鉴于此,随机网络认为此行为可疑并限制它的可能性有多大?坦率地说,我不确定,我也不认为其他人有很高的确定性。

尽管如此,我有根据的猜测是,通信设备(NAT,路由器等)的理智默认配置不应阻止此类行为。毕竟,许多应用程序打开了几个端口;更不用说NAT无法知道发送此流量的IP本身并不是一台NAT设备,后面有几十台计算机 - 每台都有几个开放端口。

我还猜测,只要UDP本身没有被阻止,简单的防火墙应该没问题,并且允许使用各种端口。但是,试图阻止端口扫描的防火墙和反DDoS设备可能会产生问题,因为这种流量可能看起来很可疑,因此可能取决于此类设备和软件的配置/实现细节。不幸的是,这是了解你的策略在现实世界中的表现方式的唯一方法,可以在各种不同的网络上进行尝试。

第二次,我想谈谈你的打孔策略。如果Alice和Bob都有一个共享服务器,并且Alice在锥形NAT后面,我就不会在你的策略中看到这一点。锥形NAT是最容易克服的NAT。如果你希望Alice能够连接到Bob(这是因为他在对称NAT后面很棘手),你真正需要做的就是让Bob根据Alice的请求连接到Alice。

为此,Alice和Bob应始终与服务器建立持久的TCP或UDP连接。连接不应该在大多数情况下携带任何数据,并且应该偶尔保持活着。

当Alice想要连接到Bob时,它只是打开一个端口(比如端口X),并从该端口连接到服务器。服务器看到Alice对应端口X的外部端口 - 比如端口Y.此时,Alice通知服务器她希望Bob连接到她。由于Bob连接到同一服务器,服务器通知Bob它应该在端口Y连接到Alice。这应该在它们之间建立连接而不需要任何猜测。