在 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.
我安装了 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.