Страницата се зарежда през VPN, а разговорът така и не се свързва: две различни повреди с един и същ адресен ред. Тунелът промени пътя, който браузърът използва; той не стана услуга за сигнализация, STUN сървър или релей и не решава коя двойка кандидати ще избере ICE. Именно разделянето на задачата на всеки компонент превръща неясното „WebRTC е блокиран“ в конкретна повреда.

Четири задачи, от които тунелът засяга само една

Приложението обменя информация за сесията чрез някаква схема за сигнализация и това е първата задача. ICE събира адреси на кандидати и проверява двойки, докато една проработи, и това е втората. STUN позволява на партньора да разбере как изглежда трафикът му отвън, а TURN отпуска релей за случаите, когато няма директен път. Тези четири роли са различни и VPN влияе на адресите и филтрирането, които те срещат, вместо да осигурява някоя от тях.

Затова успешният вход не казва нищо за пътя на медията. Сигнализацията обикновено върви по същия HTTPS, който страницата вече използва, на порт 443, докато медията може да пътува по UDP до напълно различна дестинация.

Частното адресиране прави объркването по-лошо. Адресът на тунела е полезен за партньора само когато той има предвиден път обратно към него; това, че е частен, не е доказателство за взаимна достижимост и браузърите не го третират така, когато изхвърлят кандидати, които не могат да бъдат проверени. Кандидат, който изглежда локален за вас, може да е непроверим от другата страна. Тази разлика си струва да бъде изключена, преди да заключите, че тунелът изпуска медията.

Сравнете VPN изход с TURN релей

И двете препращат пакети, затова се бъркат, а таблицата за сравнение по-горе си струва да се чете колона по колона, а не като списък от функции. Отпускането на релей е обект за всяка сесия, създаден чрез удостоверена заявка; тунелът е маршрут. Едното има идентификационни данни, които изтичат, другото има адрес на партньор, който или е достижим, или не е.

ComponentWhat it contributesWhat it needs to workWhat it cannot do
VPN exitChanges the observed mapping and the route packets takeA working tunnel and a policy that permits the media transportAllocate a relay or supply signaling
STUN serverReports the mapped address a peer appears to useReachability from the client, on its configured transportCarry media when a direct path fails
TURN serverRelays media through an authenticated allocationValid credentials, an allowed transport and sufficient capacityFix a missing ICE policy or an unauthorized client
Signaling channelCarries offers, answers and candidate listsBoth peers reaching the same application endpointEstablish connectivity by itself

Номерата на портовете правят разликата конкретна. По подразбиране TURN слуша на 3478 за UDP и TCP и на 5349 за TLS, а мрежа, която разрешава 443, но изхвърля тези портове, ще проваля разговорите през релей, докато сърфирането продължава нормално. Смяната на порта на VPN не настройва нищо от това, защото важните портове принадлежат на релей услугата, а не на тунела.

Прочетете диагностиката, после тествайте разговора

Браузърите показват нужната информация без прихващане на пакети. Отворете страницата за диагностика на WebRTC за вашия браузър, направете разговора и четете избраната двойка кандидати, а не събрания списък: какви типове локални и отдалечени кандидати са избрани, по кой транспорт и семейство адреси и дали пътят е директен или през релей.

Две показания си струва да се знаят предварително. Ако избраната двойка е хост към хост на частни адреси, медията остава на път, за който можете да разсъждавате; ако е релей към релей, разговорът изразходва капацитет на релея и зависи от наличността на тази услуга. Повреда, която спира на „проверка“ без избрана двойка, означава, че кандидатите са събрани, но никой не е преминал проверките за свързаност.

След това сравнете същите два крайни точки в същия разговор, като промените само едно одобрено условие, и приемайте резултата по двупосочна медия или данни, а не по индикатор „свързано“. Събирането на кандидати успява в много случаи, които не пренасят нито един кадър звук. Повторете разговора от другата страна на промяната и запазете двата диагностични записа, защото сравняването на два опита е по-информативно от четенето на всеки един сам. Същите крайни точки, същият кодек, една променена променлива.

Приложение, което умишлено задава политиката за транспорт на ICE на relay, иска само кандидати през релей. Тази настройка не създава релей и не поправя липсващи идентификационни данни; тя прави изискването явно, което е полезно, когато някой обвинява VPN за политика, избрана от сайта.

Пазете твърдението за поверителност толкова тясно, колкото са доказателствата

Излагането на кандидатите зависи от политиката на браузъра и приложението, а не само от състоянието на тунела, и спецификацията на W3C за връзка между партньори разглежда работата с IP като отделен въпрос. Затова свързан VPN е слаба основа за обещание, че разговорът разкрива само един избран адрес. Двама партньори зад един и същ тунел дори могат да изберат път, който никога не напуска хоста, което е едновременно подобрение на поверителността и ограничение на свързаността.

Това, което можете да кажете точно, е по-тясно и по-полезно: коя двойка кандидати е избрана, кой транспорт я е носил и дали този път е останал в тунела. Запишете тези три факта за работещ разговор и за неуспешен, и разликата обикновено посочва компонента за поправяне.

След като свързаността работи, отделете производителността от достижимостта. Загуби, закъснение, опашки и MTU са все надолу по веригата от правилна двойка кандидати, а третирането на накъсан разговор като повреда на свързаността ви връща към списъка с кандидати без причина.

Подобни статии