为什么STUN服务器需要两个不同的公共IP地址

met*_*dos 16 p2p protocols openfire stun

我已经看了一眼昏迷中的服务器设置的Openfire从那里,这样的说法:

"为了充当STUN服务器,需要在同一台机器上使用两个不同的公共IP地址,以及每个IP的两个不同的端口号."

我在google上进行了研究,一般来说,昏昏欲睡的服务器需要两个公共IP,原因是什么?

sel*_*bie 14

为了尝试建立P2P连接,STUN绑定请求和对STUN服务的主要地址(IP和端口)的响应才是真正重要的.在此请求的响应主体中返回的映射地址(通过XMPP或其他服务)传递到本地客户端尝试与之建立直接通信的远程节点.

STUN服务侦听的第二个IP和端口对于确定NAT端口映射行为和NAT过滤行为很有用.

通过对服务上的备用IP:端口发出绑定请求,客户端可以发现其NAT是否具有本地端口的一致映射语义.如果他为每个测试获得不同的端口映射值,客户端可以断定它是"对称NAT"的背后 - 这是P2P最难以遍历的.

通过发送带有"更改请求"属性的绑定请求,该属性要求服务从其他IP或端口进行响应,客户端可以检测他的NAT是否仅根据IP和端口过滤来自远程主机的数据报,或者允许来自的数据报它已将出站数据报发送到的主机上的备用端口.

映射行为和过滤测试仅为后续P2P连接提供有限的信息.在确定主机和因特网之间的对称NAT的情况下,一些实现可以观察到NAT在每个绑定响应中具有端口值的一致增量值.(例如,STUN服务观察到的外部端口增加1).因此,客户端可以为远程客户端提供IP和猜测的端口号,以尝试发送而不是从第一个绑定请求映射回来的端口号.或者客户端可以使用此行为/过滤测试进行日志记录.或者在对称NAT的情况下自动分配中继.

  • @Ternary - 第二个IP仅用于确定NAT类型(即诊断和调试),而不是实际的打孔.客户端可以向服务器发送"绑定请求"以请求其IP /端口映射.这些绑定请求可以指示响应可以来自服务器的备用IP和/或备用端口.99%的客户端对stun.stunprotocol.org的请求是对主IP和端口3478的简单绑定请求.少数客户端使用端口重定向属性.有一些SIP手机想要使用这两个端口. (3认同)

Jér*_*nge 11

因为在极少数情况下,NAT转换的行为是目标IP地址的函数.这意味着,您必须"ping"两个不同的IP地址才能找到NAT的精确行为(它是否取决于目标IP地址?)

如果你用两个不同的端口"ping"两次相同的服务器,那么就不能正确地覆盖这种情况(即,你不会覆盖所有的基础).

PS:两个IP地址不需要在同一台服务器上,也可以是不同的服务器.

  • 唉,经典的stund实现[不支持](http://sourceforge.net/tracker/?func=detail&aid=1055306&group_id=47735&atid=450612)两台服务器上的两个IP地址.这两个IP可能在同一个NIC上,但是stund尝试绑定到两个IP,因此它们必须位于同一台服务器上. (2认同)