Уявіце браўзер, які загружае старонку HTTPS, кліент SSH дасягае іншага сервера, а рэзалвер адказвае на запыт — усё праз адзін сеанс OpenVPN. На фізічным інтэрфейсе вы бачыце адну размову; усярэдзіне тунэля — тры. Абодва погляды слушныя, і разуменне прычыны — гэта розніца паміж карысным захопам і заблытаным. Прасачыце адзін унутраны паток ад сокета да дроту, і ўзроўневасць перастане быць абстрактнай.

Адна вонкавая размова, шмат унутраных патокаў

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

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

Порт, які застаецца нязменным

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

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

Што дэкапсуляцыя змяняе на далёкім баку

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

Таму правіла, якое дазваляе вонкавы транспарт, не тое ж, што правіла, якое дазваляе ўнутраную службу. Першае апісвае шлях; другое апісвае аўтарызацыю.

Вонкавы TCP — гэта адзін паток, а не адно злучэнне

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

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

Апішыце ўласную канфігурацыю дакладна

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

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

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