Кліент паведамляе, што злучаны, замок зачынены, а сайт усё яшчэ запісвае адрас вашай кватэры. Нічога не спынілася. Тунель не замяняе ваш Wi-Fi або мабільнае злучэнне; ён змяшчае выбраныя пакеты ў другі канверт і адпраўляе гэты канверт праз сетку, якая ў вас ужо была. Каб зразумець фокус, дастаткова прасачыць адзін запыт і заўважыць, дзе канверт адкрываецца, бо амаль кожны блытаны сімптом, ад уцечкі хатняга адраса да прыпыненага вялікага спампоўвання, паходзіць менавіта ад гэтай мяжы.

Два канверты, адно фізічнае злучэнне

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

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

Менавіта таму віртуальны інтэрфейс адначасова рэальны і падманлівы. Ён існуе як аб'ект ядра з адрасам і максімальнай адзінкай перадачы, і аперацыйная сістэма накіроўвае трафік у яго, як у любы іншы інтэрфейс. Гэта не кабель, і яго існаванне даказвае толькі тое, што кампанент усталяваны. Ці карыстаецца ім ваш браўзер, вырашаюць маршруты, а не тое, што інтэрфейс падняты.

Прасачыце за адным запытам у дарозе

Выберыце прызначэнне і спытайце ў ядра, які інтэрфейс будзе выкарыстаны. Гэта адна каманда вырашае большасць спрэчак пра тое, ці робіць тунель што-небудзь:

ip route get 203.0.113.7
ip -brief addr show
ip -4 addr show dev wg0

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

Затым паглядзіце на першы крок знутры канверта і параўнайце яго з першым крокам звонку:

traceroute -n -m 3 203.0.113.7
sudo tcpdump -ni wg0 -c 5

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

Тры адрасы, і толькі адзін бачыць сайт

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

AddressWhere it appearsWho can see it
Endpoint addressOuter header, the peer you connect toYour access network and the path to it
Inner tunnel addressInside the envelope, on the virtual interfaceThe peer, and anything the peer routes to
Exit addressSource of the packet that reaches the websiteThe website and its upstream

Лік побач з віртуальным адаптарам — гэта другі радок. Ён не з'яўляецца адрасам, які запісвае сайт, і называць яго вашым публічным IP проста няправільна. Адрас, які бачыць сайт, прызначае выхад, а для тунеля ў прыватную сетку публічнага выхаду можа не быць зусім, бо прызначэнне знаходзіцца ўнутры арганізацыі, а не ў інтэрнэце.

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

Дзе канверт адкрываецца і што праз гэта праходзіць

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

Больш нічога не перажывае па змаўчанні. Незашыфраваны запыт чытаецца на выхадзе гэтак жа, як чытаўся ў Wi-Fi кавярні, і тунель не дадае абароны, якой у праграмы ніколі не было. Гэтак жа правілы брандмаўэра і палітыка перасылкі на выхадзе вырашаюць, што будзе далей; паспяховае рукапацісканне — гэта факт пра злучэнне з партнёрам, а не пра астатнюю частку шляху.

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

Праверце шлях, які праграма насамрэч прайшла

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

getent hosts example.com
ip route get "$(getent hosts example.com | awk '{print $1; exit}')"
ss -tnp state established '( dport = :443 )'

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

Архітэктура бяспекі RFC 4301 апісвае версію гэтага захування для ўзроўню IP у IPsec, і тая ж логіка ўзроўняў дзейнічае для WireGuard і OpenVPN. Як толькі вы можаце паказаць на ўнутраны пакет і знешні пакет як на асобныя аб'екты, большасць паводзін тунеля перастае быць загадкавай і становіцца табліцай маршрутаў, якую можна прачытаць.

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