如何使用ejabberd配置调试TURN?

问题描述 投票:1回答:1

我想在ejabberd中配置STUNTURN,以便在 "对话 "XMPP客户端中使用WebRTC。

当然,我读了 ejabberd STUNTURN文档。 以及如何 配置DNS SRV记录. 我还临时设置了 匿名认证. 根据要点 对话中的AV呼叫 我测试了ICE STUN TURN与 adb logcat涓流ICE.

我的问题是:我确实看到了 "已发现的ICE服务器 "和 "STUN候选",类型为 "srflx"(所以我认为STUN工作正确),但没有 "候选 "类型为 "中继",我只是得到 "主机 "类型。有时(!)我得到的通知是 "无法到达?"

我的配置(ejabberd.yml):

"listen "是为udp和tcp配置的,都是这样的 use_turn: true

'mod_stun_disco'包含四个条目。type: stunturntransport: udptcp所有的IP和端口号都相同,与DNS SRV记录相匹配。

listen:
  -
  port: 43210
  transport: udp
  module: ejabberd_stun
  use_turn: true
  ## The server's public IPv4 address:
  turn_ip: 123.123.123.123 # Servers real IPv4 IP
  auth_type: anonymous


mod_stun_disco:
  services:
    -
      host: 123.123.123.123 # Servers real IPv4 IP
      port: 43210
      type: turn
      transport: udp

所以我最后一个可能的麻烦来源是:我使用的是一个 "初学者友好 "的托管提供商,我只有一个无权限的用户账户(Fedora)。所以我建立并以用户身份运行ejabberd,并不得不打开几个自定义的防火墙端口:c2s, s2s_in, https, 有或没有TLS (和'let's encrypt'证书).但AFAICS一切都很好,除了TURN.当然我没有权利运行tcpdump来分析TCP UDP流量,但在ejabberd.log中我可以找到。

[info] @mod_stun_disco:handle_call:332 Offering STUN/TURN services to [email protected]/Conversations.AbCD

而当我把日志级别提高到 debug,与一个真正的XMPP客户端有'发送XML流'的条目与 "阅读,"中继候选人收获在WebRTC只与凭证。auth: anonymoususer 并向TrickleICE提供了一个有效的测试用户的明文凭证,现在我只在日志中看到 "Not an ephemeral username"。

所以我的问题是:下一步该怎么做呢?有人知道是哪里出了问题吗?或者有什么方法可以深入调试?

ejabberd stun turn
1个回答
1
投票

我对STUNTURN一无所知,但在ejabberd聊天室里问了这个问题,得到了两个提示。

Licaon_Kter说:

防火墙的范围是49xxx -65000

霍尔格说。

49152-65535 UDP 必须是无障碍的,加上43210 UDP 与他的配置。

而他应该恢复他的摆弄。auth_type 必须保持在默认状态(user),他应该只做 mod_stun_disco: {}.

关于UDP端口范围(49152-65535),他可以配置一个较小的范围,比如说。turn_min_port: 60000turn_max_port: 60999. 但他确实需要不止一个或两个端口。

如果您有更多的疑问,可以加入 ejabberd 聊天室:[email protected]

© www.soinside.com 2019 - 2024. All rights reserved.