0

我在这个问题上苦苦挣扎了将近一个月,我能够在 EC2 实例上设置一个 rfc5766-turn-server(v3.2.3.1) 而没有任何问题。

当 TURN 在 3478 上侦听时,一切正常,但在端口 80 上,它大部分时间都可以工作,但在某些时间间隔(不规律地发生)它变得无响应,即使重新启动该进程也不会改变任何东西。我在端口 3478 上并行运行的进程不会遇到这个问题。

80端口运行命令:

sudo turnserver -L INTERNAL_IP -X EXTERNAL_IP/INTERNAL_IP -r "someRealm" -a -o --no-udp -u test:test -n -a --no-sslv2 --no-sslv3 -v --cert cert.pem --pkey key.pem  --tls-listening-port 80

在端口 3478 上运行的命令:

sudo turnserver -L INTERNAL_IP -X EXTERNAL_IP/INTERNAL_IP -r "someRealm" -a -o --no-udp -u test:test -n -a --no-sslv2 --no-sslv3 -v --cert cert.pem --pkey key.pem  --tls-listening-port 80

我认为,这个问题更多地与 AWS 网络相关,较少涉及转向服务器,但话说回来,我对 AWS 或 TURN 服务器知之甚少。有没有人在端口 80 上遇到过这个问题。我相信在端口 80 上运行很重要,尤其是当对等方位于阻止大多数端口的公司防火墙后面时。

成功分配时的日志(我已通过 INTERNAL_IP 更改了 EC2 的内部 ip):

342: IPv4. Server relay addr: INTERNAL_IP:0
342: IPv4. Local relay addr: INTERNAL_IP:56216
342: session 000000000000000005: new, username=<test>, lifetime=600
342: session 000000000000000005: user <test>: incoming packet ALLOCATE processed, success
342: session 000000000000000005: user <test>: incoming packet ALLOCATE processed, success
342: session 000000000000000005: user <test>: incoming packet CREATE_PERMISSION processed, success
342: session 000000000000000005: user <test>: incoming packet CREATE_PERMISSION processed, success
343: session 000000000000000005: user <test>: incoming packet CHANNEL_BIND processed, success
343: session 000000000000000005: user <test>: incoming packet CHANNEL_BIND processed, success
353: session 000000000000000005: usage: username=<test>, rp=1039, rb=551685, sp=1009, sb=526100

无响应时的日志(我注意到它仍然显示连接尝试,一个区别是,它显示对等连接的 IP,而不是成功场景中的 INTERNAL_IP):

392: IPv4. tcp or tls connected to: SOME_IP:41107
392: session 000000000000000007: user <>: incoming packet message processed, error 401
392: session 000000000000000007: user <>: incoming packet message processed, error 401
392: IPv4. tcp or tls connected to: SOME_IP:41108
392: session 000000000000000008: user <>: incoming packet message processed, error 401
392: session 000000000000000008: user <>: incoming packet message processed, error 401
4

2 回答 2

0

由于防火墙,您不需要使用 80(防火墙只阻止传入而不是传出通信)

希望它有所帮助

于 2015-08-21T19:53:57.977 回答
0

您没有提到您在端口上运行的 TURN 传输协议,但从端口 3478 的日志显示,您似乎正在使用 3478 作为您的 UDP 传输类型中继候选者。希望您也没有将端口 80 用于 UDP,它可能是 TCP/TLS。在这种情况下,您可以检查客户端发送到 TURN 服务器的分配请求的传输协议。如果客户端没有使用正确的传输协议来请求中继候选,您可能无法获得成功的分配响应,TCP/TLS 控制连接可用于收集 UDP 中继候选作为 RFC-5766 的回退机制,因为您使用的 TURN 服务器支持该回退机制,否则客户端/服务器应该有 ICE-TCP 实现来获取 TCP 类型的中继候选,但你仍然应该得到未知协议的错误响应。打印为错误 401 的日志是 TURN 协议日志吗?那么这意味着它有一些身份验证问题。如果为正确的入站协议流量启用了 EC2 实例,那么您可能不会因为使用 EC2 实例而遇到任何其他问题,这可能与您的 TURN 服务器配置或支持有关。

于 2015-12-11T16:21:32.383 回答