Калі тэставая старонка WebRTC друкуе 172.20.4.15, яна даведалася, што ў гэтай сетцы існуе лакальны інтэрфейс. Гэта сапраўднае раскрыццё, і гэта не той жа выснова, што «медыя выйшлі праз выйсце VPN». Выяўленне кандыдатаў і маршрутызацыя пакетаў — розныя механізмы, а большасць справаздач пра ўцечкі злівае іх у адзін вердыкт. Якая з двух перад вамі — гэта і вызначае рашэнне.

Збор ідзе да таго, як нешта будзе адпраўлена

Браўзер пералічвае лакальныя інтэрфейсы, адпраўляе запыт прывязкі да сервера STUN і просіць у сервера TURN выдзяленне, затым запісвае вынікі ў апісанне сесіі як радкі кандыдатаў. Усё гэта завяршаецца без званка, без медыя і без суразмоўцы. Таму спіс кандыдатаў — гэта запіс выяўлення, а не перадачы.

Сучасныя браўзеры могуць замяніць літаральны адрас кандыдата хоста на mDNS-імя .local, таму старонка не можа прачытаць прыватны IP. Лакальная сетка ўсё яшчэ бачыць multicast-запыты, якія развязаюць гэтае імя, значыць адрас хаваецца ад праграмы, а не выдаляецца з сеткі.

Парадак таксама важны: новая загрузка старонкі збірае новы набор, з іншым выдзяленнем TURN і, магчыма, іншым рэфлексіўным адлюстраваннем. Два запускі, што разыходзяцца, не абавязкова дзве розныя канфігурацыі.

Тры тыпы кандыдатаў, тры віды доказаў

Кожны радок паходзіць з іншага назірання. Кожны тып адказвае на іншае пытанне, а табліца раздзяляе іх па тым, што яны могуць і не могуць устанавіць.

CandidateDerived fromWhat it establishesWhat it cannot establish
HostAn interface on the deviceA local address exists in that networkThat the peer can reach it
Server-reflexiveA STUN binding responseHow a NAT mapped this sourceWhich exit the media will use
Peer-reflexiveA connectivity check that arrivedAn address seen by the far sideThat it was ever advertised
RelayA TURN allocationThe relay server accepted the sessionThat the relay carries the call

Рэлейны кандыдат звычайна блытаюць з інтэрнэт-адрасам карыстальніка. Ён належыць серверу TURN, і яго наяўнасць паказвае, што рэлей быў даступны, а не што браўзер выбраў яго. Тое ж непаразуменне працуе ў адваротны бок з кандыдатамі хоста: mDNS-імя хавае адрас ад старонкі, а сетка ўсё яшчэ пераносіць запыты. Чытайце тып раней, чым чытаць значэнне.

Выбраная пара адказвае на пытанне маршрутызацыі

ICE спароўвае кожнага лакальнага кандыдата з кожным аддаленым, праводзіць праверкі злучэння па кожнай пары і вылучае пераможцу. Гэтая вылучаная пара, бачная ў дыягностыцы самога браўзера, і пераносіць медыя. Усё астатняе ў спісе — магчымасць, якая прайграла.

Пераможца кажа вам пра форму шляху. Рэлей-да-рэлея ідзе праз сервер TURN, пара хостаў застаецца ў лакальнай сетцы, а серверна-рэфлексіўная пара ідзе наўпрост праз NAT. Гэта і ёсць факт, патрэбны праверцы VPN, і ён адрозны ад спіса адрасоў. Два званкі з аднолькавымі спісамі кандыдатаў могуць выбраць розныя пары.

Нявыбраныя кандыдаты ўсё роўна былі сабраныя, а збор — гэта сеткавы трафік, што пакідае машыну. Званок, які ўрэшце выкарыстаў рэлей, не азначае, што падчас пабудовы спіса нічога не было раскрыта.

Кіраванне адпавядае мэтам, а не балу ўцечкі

Спецыфікацыя WebRTC па апрацоўцы IP апісвае некалькі палітык: выкарыстоўваць толькі інтэрфейс, што нясе маршрут па змаўчанні; выкарыстоўваць усе інтэрфейсы; і адключыць UDP без проксі, каб трафік мусіў ісці праз рэлей або проксі. Кожная абменьвае злучанасць і затрымку на іншы від уздзеяння. Якую палітыку і пад якой назвай рэалізуе браўзер — залежыць ад платформы і версіі.

Выбірайце палітыку зыходзячы з мэты. Схаваць лакальныя адрасы ад старонкі — адна мэта; прадухіліць прамы трафік паміж камп’ютарамі — другая; трымаць кожны пакет унутры тунэля — трэцяя. Першая пераважна пра тое, што даведваецца праграма, другая — пра тое, які шлях дазволены, а трэцюю трэба забяспечваць і на мяжы платформы або VPN.

Якое б кіраванне вы ні абралі, праверце абедзве паловы: запусціце тэст збору і занатуйце тыпы кандыдатаў, потым агледзьце выбраную пару падчас рэальнай сесіі. Чысты спіс адрасоў з прамым шляхам медыя — гэта ўсё яшчэ шлях, якога вы не хацелі.

Падобныя артыкулы