Почему мое соединение WebRTC не работает в некоторых сетях?
Я настроил проект Apprtc (версия для Android). Предположим, у нас есть четыре подключения к Интернету (из разных сетевых подключений):
NetA
- NetB
NetC
- NetD
Я могу подключиться с NetA
в NetB
, но я не могу подключиться с NetC
в NetD
!
Я поставил turn server
а также stun server
но я не знаю, что не так.
-
При подключении из NetA
в NetB
(успех):
Предложение СДП:
"v = 0 \ r \ no = - 632333030865012591 2 IN IP4 127.0.0.1 \ r \ ns = - \ r \ nt = 0 0 \ r \ na = группа:BUNDLE аудио-видео \r\na=msid-семантическая: WMS ARDAMS___\r\nm= аудио 9 UDP / TLS / RTP / SAVPF 111 103 9 102 0 8 105 13 126 \ r \ nc = IN IP4 0.0.0.0 \ r \ na = rtcp: 9 IN IP4.............."
"Кандидат: 2580031558 1 udp 2122260223 100.95.184.57 37422 типового хоста поколения 0 ufrag NL4P network-id 3 network-cost 900"
"Кандидат:411053810 1 udp 1686052607 5.116.182.156 1026 typ srflx raddr 100.95.184.57 rport 37422 поколение 0 ufrag NL4P ID сети 3 стоимость сети 900"
"кандидат: 3902036248 1 udp 41885695 34.197.185.148 52061 тип ретранслятора raddr 5.116.182.156 rport 1026 поколения 0 ufrag NL4P идентификатор сети 3 стоимость сети 900"
"кандидат": "кандидат: 2786567656 1 UDP 25108223 34.197.185.148 52062 тип ретранслятора raddr 5.116.182.156 rport 1032 поколение 0 ufrag NL4P идентификатор сети 3 стоимость сети 900"
Ответ СДП:
"v = 0 \ r \ no = - 3736097442176838392 2 IN IP4 127.0.0.1 \ r \ ns = - \ r \ nt = 0 0 \ r \ na = группа: аудио-видео BUNDLE \r\na=msid-семантическая: WMS ARDAMS___\r\nm= аудио 9 UDP/TLS/RTP/SAVPF 111 103 9 102 0 8 105 13 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\ па = лед-ufrag:7upj\ г \ на............"
"Кандидат: 1892013251 1 udp 2122260223 192.168.7.7 Генерация хоста типа 37718 0 UFRAG 7UPJ ID сети 3 Стоимость сети 10"
"Кандидат:3650771734 1 udp 1686052607 151.242.87.74 37718 typ srflx raddr 192.168.7.7 rport 37718 поколение 0 ufrag 7upj network-id 3 network-cost 10"
"кандидат: 3902036248 1 udp 41885695 34.197.185.148 52063 тип ретранслятора raddr 151.242.87.74 rport 37718 поколение 0 ufrag 7upj network-id 3 network-cost 10"
"Кандидат": "Кандидат: 2786567656 1 UDP 25108223 34.197.185.148 Ретранслятор типа 52064 RadDR 151.242.87.74 Rport 45889 поколение 0 UFRAG 7UpJ идентификатор сети 3 стоимость сети 10"
-
При подключении из NetC
в NetD
(не удалось):
Предложение СДП:
"v = 0 \ r \ no = - 280763199112942253 2 IN IP4 127.0.0.1 \ r \ ns = - \ r \ nt = 0 0 \ r \ na = группа: аудио-видео BUNDLE \r\na=msid-семантическая: WMS ARDAMS___\r\nm= аудио 9 UDP/TLS/RTP/SAVPF 111 103 9 102 0 8 105 13 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\ па = лед-ufrag:UPpi\ г \ па = лед-PWD:Ow2J0AHuS86I0o0yZ5MOv6a/\ г \ па = льда варианты: повторное назначение \ г \ па = отпечатка пальца: SHA-256................."
"Кандидат": "Кандидат: 2580031558 1 UDP 2122260223 100.95.184.57 Тип хоста 34267 тип 0 ufrag UPpi network-id 3 network-cost 900"
"кандидат": "кандидат: 411053810 1 UDP 1686052607 5.116.182.156 1287 typ srflx raddr 100.95.184.57 rport 34267 поколение 0 ufrag UPpi network-id 3 network-cost 900"
"кандидат": "кандидат: 3902036248 1 udp 41885695 34.197.185.148 58779 тип ретранслятора raddr 5.116.182.156 rport 1287 поколение 0 ufrag UPpi network-id 3 network-cost 900"
"кандидат": "кандидат: 2786567656 1 UDP 25108223 34.197.185.148 58780 тип ретранслятора raddr 5.116.182.156 rport 1201 поколение 0 ufrag UPpi network-id 3 network-cost 900"
Ответ СДП:
"v = 0 \ r \ no = - 6478139475592243492 2 IN IP4 127.0.0.1 \ r \ ns = - \ r \ nt = 0 0 \ r \ na = группа:BUNDLE аудио-видео \r\na=msid-семантическая: WMS ARDAMS___\r\nm= аудио 9 UDP/TLS/RTP/SAVPF 111 103 9 102 0 8 105 13 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:Js6x\r\na=ice-pwd:5tyUT023mAERirumK7aal+9F\r\na=ice-options:renomination\r\na= отпечаток пальца:sha-256 45:97:7F:BC:37:90:4D: В6: 35: Е5: 23: С8:12:09:5A:43: Д7:4B:03:EC:A0:7B:70: ЭБ: Е4:DB:12: В8: 7B:1C:6E:5D\ г \ па = настройка: активный.............."
"Кандидат","Метка":0,"ИД": "Аудио","Кандидат": "Кандидат: 1106113138 1 UDP 2122260223 192.168.1.169 44238 Тип хост поколения 0 UFRAG JS6X идентификатор сети 3 стоимость сети 10"
"кандидат": "кандидат: 3232101574 1 UDP 1686052607 151.247.139.59 44238 typ srflx raddr 192.168.1.169 rport 44238 поколение 0 ufrag Js6x идентификатор сети 3 стоимость сети 10"
"кандидат": "кандидат: 3902036248 1 udp 41885695 34.197.185.148 58781 тип ретранслятора raddr 151.247.139.59 rport 44238 поколение 0 ufrag Js6x идентификатор сети 3 стоимость сети 10"
"Кандидат": "Кандидат: 2786567656 1 UDP 25108223 34.197.185.148 58782 ретранслятор типа raddr 151.247.139.59 rport 36519 поколение 0 ufrag Js6x идентификатор сети 3 стоимость сети 10"
"Кандидат": "Кандидат: 238873586 1 UDP 2122194687 100.116.182.76 Тип хоста 48966 Тип 0 UFRAG JS6X ID сети 4 Сеть-стоимость 900"
"Кандидат": "Кандидат: 3266434145 1 UDP 1685987071 91.251.147.158 16369 typ srflx raddr 100.116.182.76 rport 48966 поколение 0 ufrag Js6x идентификатор сети 4 стоимость сети 900"
"кандидат": "кандидат: 3902036248 1 udp 41820159 34.197.185.148 58783 тип ретранслятора raddr 91.251.147.158 rport 16369 поколение 0 ufrag Js6x network-id 4 network-cost 900"
"кандидат": "кандидат: 2786567656 1 UDP 25042687 34.197.185.148 58784 тип ретранслятора raddr 91.251.147.158 rport 16222 поколение 0 ufrag Js6x идентификатор сети 4 стоимость сети 900"
РЕДАКТИРОВАТЬ:
Спасибо всем. Я обнаружил, что моя проблема с моего сервера поворотов. Я могу подключиться в любой ситуации при использовании ледовых серверов https://appr.tc/ (серверы Google Turn). но я не могу подключиться к серверу своей очереди. пожалуйста, проверьте вопрос о моем сервере очереди на этой странице:
2 ответа
Взгляните на эту статью Введение в протоколы WebRTC.
Вам необходимо настроить STUN и TURN сервер, чтобы пропустить брандмауэр. Если одноранговый узел находится за брандмауэром или маршрутизатором, подключившись только к IP-адресу, вы попадете на маршрутизатор, а не на запрошенное одноранговое устройство. и т. д.
Я бы начал тестировать свой сервер TURN, если он действительно работает. Отключите прямые ссылки на межсетевом экране (между NetC и NetD или просто заблокируйте одноранговый IP-адрес), чтобы проверить, работает ли он через TURN. Если нет, то исправьте свой сервер TURN или его конфигурацию.