2016-09-20 92 views
0

我从http://www.stunprotocol.org/下载了stun客户端,并试图通过命令stunclient --mode full stun.stunprotocol.org --verbosity 9找出NAT类型,并且我得到了下面的响应。关于nat类型分析

config.fBehaviorTest = true 
config.fFilteringTest = true 
config.timeoutSeconds = 0 
config.uMaxAttempts = 0 
config.addrServer = 52.86.10.164:3478 
socketconfig.addrLocal = 0.0.0.0:0 
Sending message to 52.86.10.164:3478 
Got response (68 bytes) from 52.86.10.164:3478 on inter 
Other address is 52.201.75.212:3479 

Sending message to 52.201.75.212:3478 
Got response (68 bytes) from 52.201.75.212:3478 on inte 
Sending message to 52.201.75.212:3479 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.201.75.212:3479 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.86.10.164:3478 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.86.10.164:3478 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.86.10.164:3478 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Sending message to 52.86.10.164:3478 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Continuing to wait for response... 
Binding test: success 
Local address: 10.64.60.58:58841 
Mapped address: 125.19.34.60:24604 
Behavior test: fail 
Filtering test: success 
Nat filtering: Address and Port Dependent Filtering 

我在一家公司工作,因此出于安全考虑,NAT类型“地址和端口相关滤波”似乎是可行的。

但是作为一个普遍的现象,在我看来,对于对等连接,大部分时间,NAT类型将是“地址和端口相关的过滤”,因此任何媒体通信都需要转向服务器。

但是,在谷歌搜索webrtc,它显示90%的点对点通信通过眩晕服务器本身建立(通过打孔等)。这意味着在这种情况下NAT类型完全支持建立连接。

专家对NAT类型分析有任何意见要考虑对等通信?

回答

1

stunclient程序可以使用更多的日志记录来指示它在做什么。由于我对代码有一点了解,下面是我对它的解释。

Stunclient执行两组不同的测试。首先是“映射行为”测试,这对于了解NAT /防火墙如何影响P2P连接最重要。另一组是“过滤测试”,它表明您的NAT在接收来自其他IP /端口组合的流量时如何“打开”。

您的行为测试“失败”。这可能意味着,根据您的日志输出是这样的:

测试1:在这种情况下选择一个随机端口,58841。从这个本地端口,对stun.stunprotocol.org:3478进行基本的绑定测试。这是客户端收到服务器指示映射地址(125.19.34.60:24604)的响应的位置,并且用于后续行为和过滤测试的晕眩IP位于52.201.75.212。

测试2:相同的本地端口58851.发送绑定请求到备用IP和主端口(52.201.75.212:3478)。就你而言,看起来返回的响应可能是不同的IP或端口。而在这种情况下,“测试3”是必需的。

测试3:相同的本地端口58851.发送绑定请求到备用IP和备用端口(52.201.75.212:3479),以便区分“地址相关”和“地址和端口相关映射”。这是一个有趣的部分 - 你从来没有得到回应。尽管能够与端口3478上的两个IP地址进行通信,但这是测试恢复失败的原因。

可能是两件事情之一:

a)您的NAT /防火墙实际上是开放的端口3478,而不是3479.在命令行中执行此检测

stunclient 52.201.75.212 3479 

如果这成功获得映射地址,然后立即执行此操作:尝试其他这两种IP地址和端口的组合。尝试使用这两种IP地址和端口的其他组合。尝试其他组合。由此产生的行为可能意味着以下内容:

b)当NAT和防火墙在remove ip和port都发生变化时拒绝端口映射。这意味着您的网络环境更具限制性,即“地址和端口依赖映射”NAT。通常称为对称NAT。

至于过滤测试,忽略这个结果。过滤测试尝试检测是否可以发送到一个ip:端口,但是从不同的ip或端口接收。 99%的时间NAT不允许这样做。所以结果几乎总是导致“地址和端口相关滤波”。过滤测试结果并不能很好地说明您的NAT如何在P2P连接中取得成功。

仅仅因为您的企业网络非常有限,并不意味着您无法与其他网络上的对等方进行通信。如果他的端点独立映射具有更好的NAT性能,那么P2P连接仍然有可能成功。

我没有跟上最近yearas的NAT趋势,但80%-90%的STUN单独成功的连接听起来是对的。其余的将需要一个中继解决方案,如TURN。

+0

谢谢塞尔比。但是,如果“52.201.75.212”的侦察服务器能够通过其端口“3479”响应,直到它听到它为止?如果其中一种网络NAT类型是对称网络,而其他网络NAT类型是端点独立映射,那么P2P连接仍然是可能的。这就是你的意思,“这并不意味着你不可能与另一个网络上的对等设备进行通信,如果他具有更好的端点独立映射NAT,那么P2P连接仍然有可能成功” .. –

+0

STUN服务器始终在两个端口(3478和3479)以及两个IP地址上侦听。由于对称NAT(例如您的企业网络)没有可预测的端口映射,因此从STUN获得的地址/端口是否可以与尝试连接的对端的IP地址一起工作尚不确定。 Peer的NAT不仅必须是Endpoint Ind,而且过滤可能必须是“Address Dependent”或更好。 – selbie

0

我想,你想在所有可能的场景(包括对称NAT)之间进行p2p之间的通信。 我的建议:尝试使用webRTC并使用stun并在冰服务器列表中打开服务器。这将为您提供一系列ICE考生,并且webRTC将负责连接最佳候选人。 这应该可以让你免受NAT类型的担忧。