Я пытаюсь установить соединение webrtc без TURN, полагаясь только на открытых кандидатов, сгенерированных с помощью STUN. Я точно знаю, что не нахожусь за симметричным NAT (конфигурация NAT указывает, что выбрана опция «конус», и несколько серверов STUN возвращают только одного кандидата srflx). Однако соединение работает только с локальными кандидатами в "хост": оно никогда не завершается при отправке только кандидата srflx.
Например, при попытке установить соединение из двух экземпляров Firefox (61.0.1) генерируются следующие кандидаты:
Для пира 1 (хром):
//candidates :
{
candidate: "candidate:2901037939 1 udp 2113937151 192.168.8.10…typ host generation 0 ufrag uULA network-cost 999",
sdpMid: "data",
sdpMLineIndex: 0
}
{
candidate: "candidate:842163049 1 udp 1677729535 37.165.113.24…rt 49634 generation 0 ufrag uULA network-cost 999",
sdpMid: "data",
sdpMLineIndex: 0
}
// offer :
{
type: "offer",
sdp: "v=0\r\no=- 3440436079674081695 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE data\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:XbgU\r\na=ice-pwd:Ngovdg70hkv5UxqBc5ahwGK6\r\na=ice-options:trickle\r\na=fingerprint:sha-256 28:5C:BA:DA:3F:26:77:7F:CF:B8:DD:C7:2D:50:D5:1A:9B:9E:92:82:A1:BB:67:A8:A4:E2:E1:24:99:18:C4:AF\r\na=setup:actpass\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"
}
А для пира 2 (firefox):
// candidates :
{
"candidate": "candidate:0 1 UDP 2122252543 192.168.8.100 60051 typ host",
"sdpMid": "sdparta_0",
"sdpMLineIndex": 0
}
{
"candidate": "candidate:3 1 TCP 2105524479 192.168.8.100 9 typ host tcptype active",
"sdpMid": "sdparta_0",
"sdpMLineIndex": 0
}
{
"candidate": "candidate:1 1 UDP 1686052863 37.165.113.249 30533 typ srflx raddr 192.168.8.100 rport 60051",
"sdpMid": "sdparta_0",
"sdpMLineIndex": 0
}
//offer :
{
type: "answer",
sdp: "v=0
o=mozilla...THIS_IS_SDPARTA-61.0.1 7989295655383581196 0 IN IP4 0.0.0.0
s=-
t=0 0
a=fingerprint:sha-256 6C:22:EB:6D:E2:89:DC:31:47:11:51:37:50:CD:69:AB:0D:2B:0C:60:18:64:B4:A9:3E:91:A4:0B:65:66:0F:F3
a=group:BUNDLE data
a=ice-options:trickle
a=msid-semantic:WMS *
m=application 9 DTLS/SCTP 5000
c=IN IP4 0.0.0.0
a=sendrecv
a=ice-pwd:070d6d084143c347bbf0b1fd4d90f9a5
a=ice-ufrag:b7ff4cf2
a=mid:data
a=sctpmap:5000 webrtc-datachannel 256
a=setup:active
a=max-message-size:1073741823
"
}
При отправке только кандидатов в HOST это работает (RTCPeerConnection.ondatachannel запускается с функциональным каналом данных), но когда я отправляю только кандидатов "SRFLX" (с удаленным публичным адресом), канал данных никогда не генерируется.
Что я должен искать, чтобы решить эту проблему, без сервера TURN?
Спасибо