Какво разкрива списъкът с кандидати на WebRTC за вашия VPN
Кандидат хост, сървърно-рефлексивен или релей кандидат показва откъде идва даден адрес. Само избраната двойка ICE показва кой път действително е използвала медията.
Когато тестова страница на WebRTC отпечата 172.20.4.15, тя е научила, че в тази мрежа съществува локален интерфейс. Това е истинско разкриване и то не е същият извод като «медията е излязла през изхода на VPN». Откриването на кандидати и маршрутизирането на пакети са отделни механизми, а повечето доклади за изтичане ги сливат в една присъда. Кой от двата случая виждате решава поправката.
Събирането тече, преди да бъде изпратено каквото и да е
Браузърът изброява локалните интерфейси, изпраща заявка за свързване до STUN сървър и иска от TURN сървър разпределение, после записва резултатите в описанието на сесията като редове с кандидати. Всичко това завършва без разговор, без медия и без отсрещна страна. Списъкът с кандидати следователно е запис на откриване, не на пренос.
Съвременните браузъри могат да заменят буквалния адрес на кандидат хост с mDNS име .local, така че страницата не може да прочете частния IP. Локалната мрежа все още вижда multicast заявките, които разрешават това име, тоест адресът е скрит от приложението, а не премахнат от мрежата.
Редът също има значение: ново зареждане на страница събира нов набор, с друго разпределение на TURN и вероятно друга рефлексивна карта. Два различаващи се опита не са непременно две различни конфигурации.
Три типа кандидати, три вида доказателства
Всеки ред произлиза от различно наблюдение. Всеки тип отговаря на различен въпрос, а таблицата ги разделя по това какво могат и какво не могат да установят.
| Candidate | Derived from | What it establishes | What it cannot establish |
|---|---|---|---|
| Host | An interface on the device | A local address exists in that network | That the peer can reach it |
| Server-reflexive | A STUN binding response | How a NAT mapped this source | Which exit the media will use |
| Peer-reflexive | A connectivity check that arrived | An address seen by the far side | That it was ever advertised |
| Relay | A TURN allocation | The relay server accepted the session | That the relay carries the call |
Релейният кандидат често се бърка с интернет адреса на потребителя. Той принадлежи на TURN сървъра и присъствието му показва, че релей е бил наличен, а не че браузърът го е избрал. Същото объркване работи в обратна посока при кандидатите хост, където mDNS име скрива адреса от страницата, докато мрежата все още носи заявките. Четете типа, преди да четете стойността.
Избраната двойка отговаря на въпроса за маршрута
ICE сдвоява всеки локален кандидат с всеки отдалечен, извършва проверки за свързаност по всяка двойка и номинира победител. Тази номинирана двойка, видима в собствената диагностика на браузъра, носи медията. Всичко останало в списъка е възможност, която е загубила.
Победителят ви казва формата на пътя. Релей към релей минава през TURN сървъра, двойка хост остава в локалната мрежа, а сървърно-рефлексивна двойка минава директно през NAT. Това е фактът, който е нужен на проверка на VPN, и той е различен от списъка с адреси. Два разговора с еднакви списъци с кандидати могат да поемат по различни двойки.
Неизбраните кандидати също са били събрани, а събирането е мрежов трафик, който напуска машината. Разговор, който в крайна сметка е използвал релея, не означава, че нищо не е разкрито, докато списъкът се е строял.
Контролите отговарят на цели, не на оценка за изтичане
Спецификацията на WebRTC за работа с IP описва няколко политики: използване само на интерфейса, който носи маршрута по подразбиране; използване на всички интерфейси; и изключване на UDP без прокси, така че трафикът да минава през релей или прокси. Всяка разменя свързаност и закъснение срещу различен вид излагане. Коя политика прилага браузърът и под какво име зависи от платформата и версията.
Изберете политиката според целта. Скриването на локалните адреси от страница е една цел; предотвратяването на директен трафик между равноправни възли е друга; задържането на всеки пакет в тунела е трета. Първата е предимно за това какво научава приложението, втората за това кой път е разрешен, а третата трябва да се наложи и на границата на платформата или VPN.
Каквато и контрола да изберете, проверете и двете половини: пуснете теста за събиране и запишете типовете кандидати, после прегледайте избраната двойка по време на истинска сесия. Чист списък с адреси с директен път за медията пак е път, който не сте имали предвид.