首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于nat类型分析

关于nat类型分析
EN

Stack Overflow用户
提问于 2016-09-20 17:07:19
回答 2查看 882关注 0票数 1

我从http://www.stunprotocol.org/下载了stun客户端,并尝试使用命令stunclient -mode full stun.stunprotocol.org --verbosity 9找出NAT类型,得到了以下响应。

代码语言:javascript
复制
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类型将是“地址和端口相关过滤”,因此任何媒体通信都需要turn服务器。

然而,在google上搜索webrtc,它显示90%的点对点通信是通过stun服务器本身建立的(通过打洞等)。这意味着完全支持这种情况下的NAT类型来建立连接。

对于点对点通信的NAT类型分析,专家有什么需要考虑的意见吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-21 10:52:32

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

Stunclient执行两组不同的测试。第一个是“映射行为”测试,这对于理解NAT/防火墙将如何影响P2P连接是最重要的。另一组是“过滤测试”,它指示您的NAT在接收来自其他IP/端口组合的流量时有多“开放”。

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

测试1:选择一个随机端口,在本例中为58841。在此本地端口上,执行到stun.stunprotocol.org:3478的基本绑定测试。这是客户端接收响应的地方,其中服务器指示映射的地址(125.19.34.60:24604),并且后续行为和过滤测试的stun备用IP为52.201.75.212。

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

测试3:相同的本地端口,58851。向备用ip和备用端口(52.201.75.212:3479)发送绑定请求,以便它可以区分“地址相关”和“地址和端口相关映射”。这是有趣的部分--你永远得不到回应。尽管能够与端口3478上的两个IP地址通信。这就是为什么测试返回失败的原因。

可能是以下两种情况之一:

a)您的NAT/防火墙实际上对端口3478是开放的,但不是3479。从命令行执行此操作以检测

代码语言:javascript
复制
 stunclient 52.201.75.212 3479

如果成功获得映射地址,则立即执行以下操作:

代码语言:javascript
复制
 stunclient 52.86.10.164 3478

尝试这两个ip地址和端口的其他组合。由此产生的行为可能意味着以下内容

b)当删除ip和端口都已更改时,您的NAT/防火墙拒绝端口映射。这意味着您的网络环境比“地址和端口相关的映射”NAT更加严格。通常称为对称NAT。

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

仅仅因为您的企业网络非常严格,这并不意味着您不能与另一个网络上的同级进行通信。如果他有一个行为更好的具有端点独立映射的NAT,那么P2P连接仍然有成功的机会。

近年来,我没有跟上NAT的趋势,但是80-90%的连接单独使用STUN听起来是正确的。其余的将需要中继解决方案,如TURN。

票数 2
EN

Stack Overflow用户

发布于 2016-12-26 16:42:49

我想,您希望在所有可能的情况下(包括对称NAT)在p2p之间进行通信。我的建议:尝试使用webRTC,并在ice服务器列表中使用stun和turn服务器。这将为您提供ICE候选人的范围,webRTC将负责连接到可能的最佳候选人。这将使您不必担心NAT类型的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39589963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档