为 Node.js 设置 STUN 服务器时,主 IP 地址和辅助 IP 地址应该是啥?

Posted

技术标签:

【中文标题】为 Node.js 设置 STUN 服务器时,主 IP 地址和辅助 IP 地址应该是啥?【英文标题】:What should the primary and secondary IP address be when setting up STUN server for Node.js?为 Node.js 设置 STUN 服务器时,主 IP 地址和辅助 IP 地址应该是什么? 【发布时间】:2021-02-17 22:57:10 【问题描述】:

我正在尝试使用 STUN 服务器为 Node.js 设置 STUN 服务器:

https://github.com/enobufs/stun

自述文件有以下指导:

将一个名为 node-stun.ini 的配置文件放入 您当前的目录。配置文件应如下所示。 (这些本地环回地址应该是可路由的公共 IP 地址 当然是在真实环境中)

[主要] 主机 = 127.0.0.1

[次要] 主机 = 127.0.0.2

有人知道主 IP 和辅助 IP 应该是什么吗?主要应该是我的 STUN 服务器机器的 IP 地址吗?二级应该是什么?

我可以将它们设置为 localhost 并使用 nginx 将请求路由到服务器吗?

最后,为什么软件需要引用这些 IP 地址?

【问题讨论】:

【参考方案1】:

从技术上讲,STUN 需要服务器上有两个唯一的公共 IP 地址。但是大多数客户端实现只需要一个并且不使用备用/辅助地址。并且服务器代码需要知道这些地址是什么,原因有两个:

    以便服务器知道将套接字绑定到哪个地址。 (它需要每个本地 IP 地址)

    这样当绑定请求到达主 IP 时,服务器可以通告备用 IP 地址。 (如果它在带有端口转发的 NAT 后面,它需要知道主机的公共 IP 地址)。

如果您没有要提供的辅助 IP 地址,请提供任何允许服务器运行的地址。这会破坏 STUN 行为和过滤测试,但客户端很少需要这样做。

【讨论】:

谢谢,我想知道为什么需要涉及套接字(第 1 点)。 STUN 服务器的工作不就是 ping 回客户端的外部 IP 地址吗? STUN 服务器有两个工作。首先是回复客户端的外部 IP 地址和端口。第二个是为客户端提供一种推断其背后的 NAT 类型的方法。这就是需要第二个 IP 地址的原因。由于大多数 P2P/VOIP 客户端只遵循 ICE 方法,因此 NAT 行为/过滤类型检测并不是那么有用。更多细节在这里:tools.ietf.org/html/rfc5780

以上是关于为 Node.js 设置 STUN 服务器时,主 IP 地址和辅助 IP 地址应该是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 Node/Express 作为 STUN 服务器? [关闭]

未设置 Node.js 响应标头

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

需要帮助设置用于 p2p 数据传输的 udp 打孔。无法让 STUN 工作

为 ejabberd STUN 添加 DNS 记录

如何将 Node.js 设置为始终在服务器(如 Apache)上运行 [重复]