[下面粗体的问题]

我在运行 OS Ubuntu 14.04 的防火墙后面的数据中心设置了 Kurento Media Server 5.1.3。它有两个网卡:

  • 222.222.222.222 (eth0 - 私有(private) IP)
  • 111.111.111.111(eth1 - 公共(public) IP)

  • 下面附上我的浏览器连接到 Kurento 媒体服务器时的 SDP (setRemoteDescription)
    type: answer, sdp: v=0
    o=- 5487318114793304426 0 IN IP4 0.0.0.0
    s=Kurento Media Server
    c=IN IP4 0.0.0.0
    t=0 0
    a=group:BUNDLE audio video
    m=audio 59068 RTP/SAVPF 111 0
    c=IN IP4 111.111.111.111
    a=rtpmap:111 opus/48000/2
    a=rtpmap:0 PCMU/8000
    a=sendrecv
    a=rtcp:59068 IN IP4 111.111.111.111
    a=rtcp-mux
    a=ssrc:669011897 cname:user39019747@host-6e83e4c2
    a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
    a=mid:audio
    b=AS:20
    a=ice-ufrag:YMdK
    a=ice-pwd:LyLifK5UeqzPwM91DDj37e
    a=fingerprint:sha-256 FF:0F:81:8C:41:4E:B4:B6:C6:D8:36:F3:D6:5F:09:FD:5F:AF:13:B3:9D:FC:12:66:AC:F3:56:D6:5B:0A:73:5D
    a=candidate:1 1 UDP 2013266431 111.111.111.111 55239 typ host
    a=candidate:2 1 UDP 2013266431 222.222.222.222 59068 typ host
    a=candidate:4 1 UDP 1677721855 111.111.111.111 59068 typ srflx raddr 222.222.222.222 rport 59068
    m=video 59068 RTP/SAVPF 100
    c=IN IP4 111.111.111.111
    b=AS:100
    a=rtpmap:100 VP8/90000
    a=sendrecv
    a=rtcp-fb:100 ccm fir
    a=rtcp-fb:100 nack
    a=rtcp-fb:100 nack pli
    a=rtcp-fb:100 goog-remb
    a=rtcp:59068 IN IP4 111.111.111.111
    a=rtcp-mux
    a=ssrc:138242433 cname:user39019747@host-6e83e4c2
    a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
    a=mid:video
    a=ice-ufrag:YMdK
    a=ice-pwd:LyLifK5UeqzPwM91DDj37e
    a=fingerprint:sha-256 FF:0F:81:8C:41:4E:B4:B6:C6:D8:36:F3:D6:5F:09:FD:5F:AF:13:B3:9D:FC:12:66:AC:F3:56:D6:5B:0A:73:5D
    a=candidate:1 1 UDP 2013266431 111.111.111.111 55239 typ host
    a=candidate:2 1 UDP 2013266431 222.222.222.222 59068 typ host
    a=candidate:4 1 UDP 1677721855 111.111.111.111 59068 typ srflx raddr 222.222.222.222 rport 59068
    

    我不确定,但似乎我正在使用以下候选人:
    a=candidate:4 1 UDP 1677721855 111.111.111.111 59068 typ srflx raddr 222.222.222.222 rport 59068
    

    我说得对吗?

    但鉴于 IP 222.222.222.222 是内部 IP,为什么它会作为 ICE 候选出现?

    为什么不选择“a=candidate:1 1 UDP 2013266431 111.111.111.111 55239 typ host”? 因为此 IP 可公开访问。

    使用“nload”等工具检查流量时,eth0 没有任何流量,可以注意到 eth1 有大量流量(视频和音频流)

    “a=candidate:4 1 UDP 1677721855 111.111.111.111 59068 typ srflx raddr 222.222.222.222 rport 59068”是什么意思?

    最佳答案

    WebRTC 客户端尝试所有 ICE 候选者,直到找到一个有效的候选者。 ICE 候选者有一个优先级队列,所有潜在地址都被添加到该队列中。 WebRTC 一次尝试这些,一旦找到有效的方法,它就会使用该候选对象作为媒体。 WebRTC 不知道哪个地址是您的公共(public)地址,哪个地址是您的私有(private)地址,它只是尝试候选地址,直到一个成功或全部失败。

    ICE 旨在在存在 NAT 问题的情况下创建连接。

    关于webrtc - 我正在使用哪个 ICE 候选人,为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31467698/

    10-12 22:56