SSH-тің жергілікті бағыттауы TCP OpenVPN сессиясын қалай тасымалдайды
Бір жергілікті порт, екі аутентификацияланған қатынас, үш транспорт. SSH бағыттауы нені жылжытады және цикл мен сертификат тексерулері қайда әлі қолданылады.
Мұнда үш транспорт қабаттасады және әрқайсысының өз кадрлауы бар. VPN жүктемесі TLS сессиясының ішінде жүреді, сол TLS сессиясы loopback портына TCP қосылысының ішінде жүреді, ал сол қосылыстың байттары SSH ішінде relay хостқа жүреді, ол VPN тыңдаушысына нақты TCP қосылысын ашады. Бұл орналасу OpenVPN нені аутентификациялайтынын өзгертпейді және UDP тыңдаушысын TCP арқылы қолжетімді етпейді. Қалғанын байт жолының сипаттамасы ретінде оқыңыз, желілік бақылауды айналып өту рецептісі ретінде емес.
Жергілікті бағыттау шын мәнінде нені жылжытады
SSH клиенті жергілікті портта тыңдайды. Жергілікті процесс қосылғанда, клиент байттарды өзінің шифрланған арнасына жинақтайды, ал сервер жағы бағыттау сұранысында аталған межелі орынға жаңа TCP қосылысын ашады.
Бұл межені relay шешеді, сіздің машинаңыз емес, сондықтан тек қашықтағы желінің ішінде бар атау әлі де жұмыс істейді. Бұл сондай-ақ relay VPN тыңдаушысына жете алуы және оған қайту маршруты болуы керек дегенді білдіреді. Ноутбугіңызда шешілетін атау relay-дың нені көретіні туралы ештеңе айтпайды.
SSH сессиясын бастау тек relay-дың қолжетімді және аутентификацияланғанын дәлелдейді. Ол келесі тыңдаушының қосылып тұрғанын, relay мен тыңдаушы арасындағы firewall қосылысты қабылдайтынын немесе VPN профиліңізді қабылдайтынын айтпайды.
Клиентті жергілікті тыңдаушыға бағыттаңыз
Жарияланған мысал: relay gw.internal.example:443 мекенжайындағы TCP тыңдаушысына жете алады, ал жоғары жергілікті порт бұл жолды тек осы машинаға ашады.
ssh -N -L 127.0.0.1:24011:gw.internal.example:443 [email protected]OpenSSH нұсқаулығы жергілікті бағыттауды TCP қосылыстарын жергілікті қабылдау және келесі қосылысты қашықтағы жақтан ашу деп сипаттайды. Тыңдаушыны барлық интерфейске емес, loopback-қа байлаңыз, өйткені желіден қолжетімді бағыттау — сіздің атыңыз жазылған ашық relay. Wildcard байланыстыру портты ортақ машинадағы кез келген басқа жергілікті тіркелгіге де ашады.
Содан кейін VPN клиентін TCP режиміне қойып, 127.0.0.1:24011 мекенжайына бағыттаңыз. Профиль UDP қолданса, бұл жоба көмектесе алмайды: бағыттау байт ағынын тасымалдайды және ол арқылы дейтаграмма жолы жоқ.
Екі аутентификацияны бөлек ұстаңыз
SSH relay хостты аутентификациялайды. OpenVPN әлі де VPN өңдесін аутентификациялайды, ал loopback межесі бұл талапты өзгертпейді. Сокет енді localhost-қа сілтейді деп сертификат тексерулерін өшіру — бұл жобадағы ең нашар қысқа жол. Ол транспорттық орналасуды сенім орналасуына айналдырады, ал екіншісіне ешкім келісім берген жоқ.
Профильдің сенім зәкірін, сервер рөлін тексеруді және атауды растауды бұзылмай сақтаңыз. Егер клиентіңіз сервер атауын қоңырау шалған мекенжаймен салыстырса, loopback-қа өшірілген тексерудің орнына атаудың нақты параметрі қажет болуы мүмкін, ал қай өріс салыстырылатынын растайтын жер — профиль құжаттамасы.
Relay-ды сенім тарихындағы екінші тарап деп қараңыз: оның әкімшісі қосылыс метадеректерін көре алады және конфигурация өзгерсе бағыттауды басқа жаққа бұра алады. Бұл орналасу relay мен VPN қызметінің иесінің де мақұлдауын қажет етеді, тек бүгін оған мұқтаж адамның ғана емес.
Туннель астында цикл құрмаңыз
VPN маршруттарды орнатқаннан кейін оны тасымалдайтын SSH қосылысына әлі де туннель арқылы өтпейтін relay-ға жол керек. Егер әдепкі маршрут VPN-ге көшсе және relay тек сол туннель арқылы ғана қолжетімді болса, транспорт құлдилайды және VPN де онымен кетеді. Ақау маршруттау қатесіне емес, құлаған туннельге ұқсайды, сондықтан ол дұрыс диагностикаланбайды.
Әдеттегі түзету — туннель көтерілмес бұрын физикалық интерфейске бекітілген relay мекенжайына хост маршруты, қосымша маршруттың қайта қосылудан кейін де сақталатынын тексеру. Оны тәртіп дұрыс болды деп болжаудың орнына relay мекенжайы үшін маршрутты іздеу арқылы тексеріңіз.
Сондай-ақ бұл стек тікелей қосылыстан баяу және нәзік болады деп күтіңіз, өйткені қазір екі реттелген транспорт және күтім қажет тағы бір соңғы нүкте бар. Бұл желілік шекарадан өту тәсілі, өнімділік техникасы емес.
Бітіргенде тыңдаушыны жабыңыз
Туннель енді қажет болмағанда SSH сессиясын тоқтатыңыз және жергілікті порттың босатылғанын растаңыз. Ұмытылған бағыттау ортақ болуы мүмкін машинада аутентификацияланған жолды ашық ұстайды.
Relay-дың рұқсат етілген бағыттау межелерін де қарап шығыңыз, өйткені кеңшіл конфигурация кез келген бұзылған тіркелгіні жалпы тірекке айналдырады. Портты, relay-ды және межені бірге жазып қойыңыз, келесі адам бағыттаудың не үшін болғанын және әлі де мақұлданғанын біле алады.