Тут складваюцца тры транспартныя ўзроўні, і кожны мае сваё фарміраванне. Карысная нагрузка VPN едзе ўнутры сеанса TLS, гэты сеанс TLS едзе ўнутры TCP-злучэння да порта зваротнай сувязі, а байты гэтага злучэння едуць унутры SSH да хаста-рэтранслятара, які адкрывае сапраўднае TCP-злучэнне да слухача VPN. Нішто ў гэтай схеме не мяняе тое, што OpenVPN аўтэнтыфікуе, і нішто ў ёй не робіць слухач UDP дасяжным праз TCP. Чытайце астатняе як апісанне шляху байтаў, а не як рэцэпт абыходу сеткавага кантролю.

Што насамрэч пераносіць лакальнае перасыланне

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

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

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

Накіруйце кліент на лакальны слухач

Абвешчаны прыклад: рэтранслятар дасягае TCP-слухача на gw.internal.example:443, а высокі лакальны порт адкрывае гэты шлях толькі для гэтай машыны.

ssh -N -L 127.0.0.1:24011:gw.internal.example:443 [email protected]

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

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

Трымайце дзве аўтэнтыфікацыі асобна

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

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

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

Не будавайце пятлю пад тунелем

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

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

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

Закрыйце слухач, калі скончыце

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

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

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