Networking 星号12.6//TURN//WebRTC//无音频

Networking 星号12.6//TURN//WebRTC//无音频,networking,webrtc,asterisk,rtp,Networking,Webrtc,Asterisk,Rtp,WebRTC安装程序正在本地网络上运行。它已经被转移到主机,不再工作了。我正在研究SDP,但我对网络和SIP的了解还不足以完全理解错误的发生 日志: 完整的星号日志: (sip和rtp调试打开) reTURNServer.log: 架构: 星号PBX 12.6。 公共IP:213.xxx.xxx.178 私有IP:192.168.xxx.99 不在纳特后面。SIP为5060。它是实时启用、WebRTC配置、WebSockets on:8088/ws、TLS和SRTP启用和配置的。RTP从49

WebRTC安装程序正在本地网络上运行。它已经被转移到主机,不再工作了。我正在研究SDP,但我对网络和SIP的了解还不足以完全理解错误的发生

日志:

  • 完整的星号日志: (sip和rtp调试打开)
  • reTURNServer.log:
  • 架构:

    • 星号PBX 12.6
      • 公共IP:213.xxx.xxx.178
      • 私有IP:192.168.xxx.99
      • 不在纳特后面。SIP为5060。它是实时启用、WebRTC配置、WebSockets on:8088/ws、TLS和SRTP启用和配置的。RTP从49152到65535
      • reTURNServer安装在同一Debian实例上,打开:3478,TLS打开:5349,STUN打开:5355
    • 来自Dialogic的HMP 3运行良好。
      • 不在纳特后面。与星号在同一网络上
      • 公共IP:与此处通信无关,因为它使用内部网络与Asterisk通信
      • 私有IP:192.168.xxx.100
      • SIP为5060。RTP从49152到65535
      • 我用这个PBX从很多SIP电话打了成功的电话
    • WebRTC客户端是来自其演示站点的sipML5
      • 在纳特后面。与星号或HMP不在同一网络上
      • 公共IP:213.xxx.xxx.210
      • 私有IP:10.xxx.xxx.118
      • 用户是“mySIPUser”,已成功注册到ws://213.xxx.xxx.178:8088/ws
      • 浏览器是最新的Chrome浏览器(38)
    reTURNServer.config:

    TurnPort = 3478
    TlsTurnPort = 5349
    AltStunPort = 5355
    TurnAddress = 213.xxx.xxx.178
    AltStunAddress = 213.xxx.xxx.178
    AuthenticationMode = 2
    AuthenticationRealm = AsteriskREALM
    NonceLifetime = 3600
    AllocationPortRangeMin = 49152
    AllocationPortRangeMax = 65535
    DefaultAllocationLifetime = 600
    MaxAllocationLifetime = 3600
    MaxAllocationsPerUser = 0
    TlsServerCertificateFilename = /etc/asterisk/keys/asterisk.pem
    TlsTempDhFilename =
    # leave blank if key is not encrypted
    TlsPrivateKeyPassword = ********
    # Logging Type: syslog|cerr|cout|file
    LoggingType = file
    # Logging level: NONE|CRIT|ERR|WARNING|INFO|DEBUG|STACK
    LoggingLevel = DEBUG
    LogFilename = /var/log/reTurnServer.log
    LogFileMaxLines = 50000
    # It is highly recommended that these values are NOT left at their
    # default setting
    LongTermAuthUsername = MyTURNLogin
    LongTermAuthPassword = MyTURNPassword
    # Must be true or false, default = false, not supported on Windows
    Daemonize = true
    # On UNIX it is normal to create a PID file
    # if unspecified, no attempt will be made to create a PID file
    #PidFile = /var/run/reTurnServer/reTurnServer.pid
    
    防火墙:

    *sudo iptables -L*
    
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:sip
    ACCEPT     udp  --  anywhere             anywhere             udp dpt:sip
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:sip-tls
    ACCEPT     udp  --  anywhere             anywhere             udp dpt:sip-tls
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:omniorb
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:3478
    ACCEPT     udp  --  anywhere             anywhere             udp dpt:3478
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5349
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:hostmon
    ACCEPT     udp  --  anywhere             anywhere             udp dpt:hostmon
    ACCEPT     tcp  --  anywhere             anywhere             multiport dports webmin:20000
    ACCEPT     udp  --  anywhere             anywhere             multiport dports 10000:20000
    ACCEPT     udp  --  anywhere             anywhere             multiport dports 49152:65535
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain fail2ban-ssh (1 references)
    target     prot opt source               destination
    RETURN     all  --  anywhere             anywhere
    

    任何帮助都将不胜感激

    上的200的SDP部分是OK的,您将看到一堆候选人。现在涉及到STUN/ICE协商,其中每一条路径都由呼叫的每一方进行测试。双方能够相互交谈的途径是确保RTP能够通过的途径

    在网络路径的某个地方,数据包没有被适当地映射。您需要获取网络流量并检查STUN数据包以识别数据包流

    检查企业防火墙他们的防火墙规则是什么。通常,企业需要开放,以接受转弯处的交通。尝试为WebRTC使用一些公共的google TURN服务器,看看它是否能让事情变得更好。

    所以我最终解决了这个问题。 TURN服务器需要有2个公共IP。
    TurnAddress
    AltStunAddress
    必须是两个不同的IP。 因此,reTURNServer.config的正确配置为:

    TurnAddress = 213.xxx.xxx.178
    AltStunAddress = 213.xxx.xxx.179
    

    当然,客户端脚本必须通过
    sip_服务器
    “turn:turnuser@turnip,凭据:“turnpassword”
    )如果您使用JsSIP或Sipml5。

    感谢Rapan的回答,我将对此进行投票,因为这是使用Wireshark(例如)放置跟踪的正确方法,并使用密集日志分析在正确的网络路径之前构建实际网络路径的映射。但这涉及到认真的网络理解。