2

我正在尝试在本地计算机上为我的 webrtc 应用程序设置 STUN/TURN 服务器。我决定使用coturn。请注意,我的服务器在 NAT 后面运行。

所以我启动了我的 Ubuntu VM 并安装了它。在阅读完 wiki 之后,我得到了它的工作,至少在我的本地网络上。出于测试目的,我使用此站点。因此,当我在 192.168.178.25:3478 那里尝试时,它可以工作。当我尝试使用“public-ip”:3478 时,它没有。

这告诉我,它在本地工作,应该是端口/NAT 问题。我做了什么:

1)我将虚拟机设置为桥接

2) 我在路由器上打开了 3478 端口。为了测试这是否真的有效,我在远程机器上使用了 telnet 并且它有效。另一个测试是我在本地机器上的 3478 端口上设置了一个快速的 apache 服务器,并且可以从外部访问它。这告诉我存在或应该不是端口/NAT 问题,我的轮到服务器应该可以工作。

有任何想法吗?

我正在使用以下命令运行我的服务器:

"sudo turnserver -X "public-ip" -listening-port=3478 -v

turnserver.conf 看起来像这样:

  • 指纹

  • 领域=“我的领域”

  • lt-cred-机械

  • 用户=测试:测试

由于 telnet 和 apache 服务器都在工作,我很确定我有配置问题。我基本上整个周末都在尝试,我真的迷失了可能出了什么问题。

谢谢你的帮助!

4

1 回答 1

3

来自turnserver的文档

-X , --external-ip <public-ip>[/private-ip] TURN 服务器公共/私有地址映射,如果服务器在 NAT 之后。在这种情况下,如果以“-X”形式使用 -X,则该 ip 将被报告为所有分配的中继 IP 地址。此方案仅适用于要使用单个中继地址且不需要 CHANGE_REQUEST STUN 功能的简单情况。该单个中继地址必须由 NAT 映射到“外部”IP。“external-ip”值,如果不为空,则在 XOR-RELAYED-ADDRESS 字段中返回。对于那个“外部”IP,NAT 必须直接转发端口(中继端口 12345 必须始终映射到相同的“外部”端口 12345). 在涉及多个 IP 地址的更复杂的情况下,该选项必须多次使用,每个条目必须具有格式“-X”,以映射所有涉及的地址。如果地址映射正确,CHANGE_REQUEST NAT 发现 STUN 功能将正常工作,即使 TURN 服务器本身位于 A NAT 之后。默认情况下,该值为空,不使用地址映射。

因此,仅将内部 LAN 的侦听端口公开给公共网络是不够的,还需要将所有用于中继的端口公开。请注意同一文档中的内容:

--min-port <port> 用于中继端点分配的 UDP 端口范围的下限。根据 RFC 5766,默认值为 49152。
--max-port <port> 用于中继端点分配的 UDP 端口范围的上限。根据 RFC 5766,默认值为 65535。

您应该在服务器中选择一系列端口,使用它们配置选项 --min-port 和 --max-port 并创建 NAT 规则以将这些端口公开到路由器的公共端而不进行更改。

于 2017-11-13T20:59:51.897 回答