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

Дзве кропкі назірання, два віды доказаў

Лакальныя доказы апісваюць прыладу. Яны ахопліваюць інтэрфейс, які нясе трафік, транспарт, які паведамляе платформа, і тое, што можа запытаць прыкладанне. Аддаленыя доказы апісваюць злучэнне: адрас крыніцы, пратакол, час і ўсё, што прыкладанне вырашыць адправіць. Ні адна кропка назірання не ўтрымлівае іншую цалкам.

Змешванне двух дае сцвярджэнні, якія гучаць дакладна і не паддаюцца праверцы. Маркер даказвае нешта пра сеткавы аб'ект на прыладзе, а не пра тое, як аддаленая служба класіфікуе запыт.

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

Што можа паведаміць лакальны інтэрфейс платформы

Android прапануе пэўны маркер. Аб'ект NetworkCapabilities можа паведамляць пра TRANSPORT_VPN, а hasTransport правярае, ці прысутнічае гэты транспарт на аб'екце. Прыкладанне атрымлівае аб'ект ад службы злучнасці і чытае яго з улікам дазволу на стан сеткі.

Вынік — лакальная інфармацыя платформы, а не запыт да дыяпазонаў адрасоў пастаўшчыка. Яна апісвае сетку, якую выкарыстоўвае прыкладанне.

Важныя два абмежаванні. Правіла split-tunnel, якое выключае прыкладанне, можа даць на тым жа тэлефоне іншы адказ, чым бачыць калега, бо прыкладанне можа быць прывязана да іншага месца. Маркер існуе таксама таму, што АС мадэлюе VPN-інтэрфейсы, а не таму, што яго збірае пэўнае прыкладанне. Ці чытае прыкладанне гэтае поле, ці перадае яго далей, ці ігнаруе — гэта ўласцівасць менавіта гэтага прыкладання. Яго маніфест і дакументацыя — адзіная надзейная крыніца для гэтага пытання.

adb shell dumpsys connectivity | grep -i -m5 vpn

Што можа бачыць аддаленая служба

Сервер бачыць адрас крыніцы злучэння, транспарт і час, і ён можа ўзбагаціць адрас данымі рэестра або маршрутызацыі. Ён таксама можа атрымаць усё, што адпраўляе прыкладанне, у тым ліку месцазнаходжанне, калі прыкладанне просіць яго і карыстальнік згаджаецца. Гэтыя каналы асобныя, і толькі адзін з іх падобны на запыт адраса.

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

Жылы адрас не змяшчае чалавека па гэтым адрасе, а хастынг-адрас не называе аператара ці краіну. Служба, якая прымае выснову за пэўнасць, часам будзе памыляцца, не маючы магчымасці гэтага выявіць. Калі патрабуецца надзейнасць, а не эўрыстыка, даныя адрасоў не могуць яе даць, і праект, які гэта прызнае, сумленнейшы за той, які хавае здагадку.

ДоказНа што адказваеЧаго не можа паказаць
Лакальны маркер транспартуЦі з'яўляецца гэты сеткавы аб'ект VPNХто кіруе выхадам або дзе знаходзіцца прылада
Аддалены адрас крыніцыЯкі адрас дасягнуў службыЦі нясе прылада таксама тунель
Карысная нагрузка прыкладанняШто прыкладанне вырашыла адправіцьУсё, што прыкладанне не адправіла

Чаму ўласны выхад змяняе толькі адзін бок

Запуск уласнай канчатковай кропкі змяняе адрас крыніцы, які бачыць аддаленая служба, і гэта можа вывесці яго за дыяпазоны, якія служба звязвае з камерцыйнымі правайдэрамі. У лакальнай мадэлі сеткі нічога не змяняецца, бо тунель застаецца тунелем, і АС па-ранейшаму паведамляе пра яго.

Адзін бок доказаў рухаецца, другі застаецца нерухомым. Разрыў паміж імі — месца, дзе ламаюцца чаканні.

Браўзер — трэці выпадак са сваімі інтэрфейсамі і абмежаваннямі. Вэб-кантэнт не можа чытаць натыўны аб'ект магчымасцяў, і ставіцца да функцыі мабільнай АС як да даступнай вэб-старонцы — гэта памылка катэгорыі. Калі пытанне датычыцца вэб-сайта, вывучайце, што сайт сапраўды можа атрымаць, замест таго каб перапісваць API платформы.

Вырашайце, зыходзячы з пытання, якое ставіце

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

Назвіце пытанне адным сказам, перш чым нешта збіраць. Гэты сказ вызначае, якая кропка назірання важная, і не дае даследаванню з'ехаць у іншую спрэчку.

Пазначайце кожнае назіранне паводле яго крыніцы, калі паведамляеце пра яго, бо сцвярджэнне без пазнакі немагчыма праверыць. Лакальны маркер і выснова з адраса абодва карысныя, і ніводнае не канчатковае, таму зліваць іх у адзін вердыкт — памылка.

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

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