AWS 应用程序负载均衡器背后的 Coturn 服务器

AWS 应用程序负载均衡器背后的 Coturn 服务器

我正在尝试让 coturn 服务器在 AWS 应用程序负载均衡器后面工作。我正在使用 icetrickle 对其进行测试,如果我跳过负载均衡器并直接访问实例,coturn 似乎可以按预期工作。实例的安全组允许所有 IP(0.0.0.0/0::/0)在每个端口(0 - 65535)上进行 TCP 和 UDP 流量

这是我在转弯服务器上的配置:

vim /etc/default/coturn:

TURNSERVER_ENABLED=1

vim /etc/turnserver.conf:

external-ip={aws_public_ip}
fingerprint
user={turn_user}:{turn_password}
lt-cred-mech
realm=realm
simple-log

然后我启动服务器并用 icetrickle 检查它。

Icetrickle 响应 - stun:{aws_public_ip}:3478

Time    Component   Type    Foundation  Protocol    Address Port    Priority
0.002   1   host    430735571   udp 192.168.1.102   64841   126 | 30 | 255
0.100   1   srflx   842163049   udp 109.242.109.35  64841   100 | 30 | 255
0.104   Done
0.106

转动服务器日志 - tail -f /var/log/turn_15892_:

3983: session 001000000000000146: TCP socket closed remotely 172.31.18.64:4630
3983: session 001000000000000146: closed (2nd stage), user <> realm <realm> origin <>, local 172.31.13.20:3478, remote 172.31.18.64:4630, reason: TCP connection closed by client (callback)
3986: handle_udp_packet: New UDP endpoint: local addr 172.31.13.20:3478, remote addr 109.242.109.35:57844
3986: session 001000000000000147: realm <realm> user <>: incoming packet BINDING processed, success

Wireshark 日志

96848   2875.279343 192.168.1.102   3.8.87.160  STUN    62  Binding Request
96851   2875.373118 3.8.87.160  192.168.1.102   STUN    114 Binding Success Response XOR-MAPPED-ADDRESS: 109.242.109.35:57844 MAPPED-ADDRESS: 109.242.109.35:57844 RESPONSE-ORIGIN: {aws_public_ip}:3478

然后我配置了应用程序负载均衡器。它接受端口 3478(HTTP 协议)的流量,并将流量转发到端口 3478 上的实例。结果如下:

Icetrickle 响应 - stun:{aws_lb_url}:3478

Time    Component   Type    Foundation  Protocol    Address Port    Priority
0.001   1   host    430735571   udp 192.168.1.102   54374   126 | 30 | 255
39.861  Done
39.864

转动服务器日志 - tail -f /var/log/turn_15892_:

No new logs (only healthchecks)

Wireshark 日志

110396  3769.417283 192.168.1.102   52.56.189.26    STUN    62  Binding Request
110403  3769.511074 52.56.189.26    192.168.1.102   ICMP    90  Destination unreachable (Port unreachable)
An array of similar logs as it retries

如我所见,它试图连接到可配置的随机端口,默认配置可以跨越端口 49152 到 65535,我怀疑这是问题所在,因为我们将流量从负载均衡器转发到实例的唯一端口是端口 3478。我想知道现在服务器位于负载均衡器后面,是否应该对 coturn 配置进行微调。

任何建议/帮助都将不胜感激。

答案1

您应该转发 coturn UDP 和 TCP 端口,但我不确定应用程序是否可以做到这一点。

对于我来说,根据以下内容不清楚是否可以转发 udp 端口​​。 https://aws.amazon.com/elasticloadbalancing/features/#Product_comparisons 如果我理解正确的话,它说应用程序负载均衡器仅适用于 http/https。

答案2

由于 turnserver 配置在端口 3478 上,请在特定端口 3478 上为 tcp 和 udp 打开安全组,并在 elb 和实例上从源 0.0.0.0/0 打开安全组。

在服务器配置中,请将外部 IP 指定为 AWS elb ip,并且您应该提及另一个本地 IP 参数,该参数应该是服务器的私有 IP。

您提到的随机端口根本不是问题,它们用于 udp 连接,所以不必担心。

在 elb 上请配置 3600 的超时时间。

请告诉我此配置是否有效。如果不行,我可以进一步提供帮助。

谢谢。

相关内容