在 ejabberd 中启用 STUN/TURN 功能

Enable STUN/TURN feature in ejabberd

我安装了 ejabberd_stun,配置如下:

  port: 3478
  transport: udp
  use_turn: true
  auth_type: user
  auth_realm: "X.X.X.X"
  turn_ip: "same as above(my public ejabberd ip)"
  module: ejabberd_stun

在开发(本地)中一切正常,但当我们转向生产时语音呼叫似乎不​​起作用。

NAT 似乎无法正常工作。

我是否必须针对生产环境配置任何特定内容?如果不是,那么可能的原因是什么以及如何进一步调试它?任何帮助,将不胜感激。

您的 auth_realm 应设置为您希望 TURN 实例服务的域。如果您的服务器有多个域需要服务,您需要在不同的端口(每个域一个)上设置额外的 TURN 实例。您还需要设置 STUN/TURN SRV 记录 - https://wiki.xmpp.org/web/SRV_Records#STUN_SRV_records.

此外,TURN 身份验证不适用于 SCRAM 密码存储或 LDAP 身份验证,因为 ejabberd 需要将您的用户密码发送到 TURN 服务器进行身份验证。对于 LDAP 身份验证,解决方法是使用外部身份验证脚本 (https://www.ejabberd.im/files/contributions/check_pass_ldap_perl.pl.txt) 并启用 extauth_cache.