Орналастыру тегтері — адамдардың бұл функцияға жүгінуінің әдеттегі себебі: әр қосылым сайт немесе рөл сияқты нәрсені алып жүруі керек, ал сервер оны екінші тіркелгі деректері пішімін ойлап таппай оқуы керек. Қауымдастық OpenVPN-де бұл механизм әлдеқашан бар және ол шағын. Ауыртатын бөлігі — күтулер. Клиент профилінде қарапайым айнымалыны орнату серверде ештеңе істемейді, ал жеткен мән клиенттің оны жібергенін ғана дәлелдейді.

Бұл жұмыс істейтін жолға, нақты не келгенін көрсететін тексеру қадамына және жартылай конфигурацияланған ілгек қалдырмайтын кері қайтаруға арналған нұсқаулық. Мұнда ештеңе жаңа сертификат, жаңа плагин немесе протокол кеңейтімін қажет етпейді.

Айнымалыны орнатып, жолды қосыңыз

Клиент профилінде екі жол жұмысты атқарады және екеуі де қажет. Біріншісіз жіберетін ештеңе жоқ; екіншісіз клиент теңдестік ақпаратын мүлде ұсынбайды. Реттің маңызы жоқ және мұны білу пайдалы, өйткені екі жол көбінесе құрылған профильдің әртүрлі бөліктерінде қалады. Маңыздысы — клиент оқымас бұрын профильді қайта жазатын кез келген нәрседен екеуі де аман қалуы керек.

setenv UV_DEPLOY field-support
push-peer-info

UV_ префиксі безендіру емес. Қарапайым DEPLOY айнымалысы клиент процесінде жергілікті болып қалады және ешқашан жіберілмейді, ал префиксті пішін протокол пайдаланушы анықтаған өрістер үшін бөлетін атаулар кеңістігі болып табылады. Бекітілген профильдің қалған бөлігін тиіспестен қалдырыңыз және орналастыру алдында орналастыратын клиент құрылымы екі директиваны да қолдайтынына көз жеткізіңіз.

Бір практикалық тексеру соңында емес, осында орынды: директиваның клиент бинарлығына жететініне және оны қаптаушы жұтпайтынына көз жеткізіңіз. Өз пәрмен жолын жасайтын графикалық клиент немесе сақталған профильді қайта жүктейтін басқару интерфейсі танымайтын жолдарды тастауы мүмкін. Егер сервер ештеңе көрмесе, бұл бірінші қарайтын орын.

Өрісті сервер ілгегінен оқыңыз

Сервер жағында алынған теңдестік ақпараты тексеріледі және қосылым жұмыс ағынының ортасына енгізіледі, және дәл осы оны сіз тарапынан протокол жұмысынсыз ілгектен оқуға болатын етеді. Серверге басқару арнасын талдаудың немесе сіз үшін бірдеңе сақтаудың қажеті жоқ; мән қосылым орнатылып жатқанда жай ғана бар. Аутентификацияланған атаудың жанына тегті жазатын минималды client-connect скрипті осылай көрінеді.

#!/bin/sh
# /etc/openvpn/server/hooks/label.sh
printf '%s %s\n' "$common_name" "${UV_DEPLOY:-unset}" \
  >> /var/log/openvpn/deploy-labels.log

Айнымалыны журналды талдаудың орнына орта арқылы оқыңыз және оған әрқашан әдепкі мән беріңіз. ${UV_DEPLOY:-unset} өрісті ешқашан жібермейтін клиенттер үшін скриптті жұмысқа қабілетті күйде ұстайды, бұл кезең-кезеңімен орналастыру кезінде қалыпты жағдай. Атауды табу үшін бүкіл ортаны журналға төкпеңіз; онда тегтен әлдеқайда көп нәрсе бар, соның ішінде сақтауды жоспарламаған мәндер де.

Скрипті қолмен іске қосыңыз, ол барлығы үшін unset деп хабарлайды, өйткені қолмен іске қосылған қабық қосылым ортасын алып жүрмейді. Бұл скрипттің қатесі емес және өрістің жоқтығын дәлелдемейді. Оны нақты қосылым арқылы тексеріңіз, бұл айнымалы бар жалғыз контекст.

Нақты не келгенін тексеріңіз

Бір клиентті тегпен, екіншісін тегсіз қосыңыз, содан кейін файлды оқыңыз. Жұп — сынақ: бір жол мәнді, екіншісі әдепкі мәнді алып жүруі керек және екеуі де күткен бірдей аутентификацияланған тұлғаны атауы керек.

tail -n 5 /var/log/openvpn/deploy-labels.log
# field-support deployed-client-07
# unset         legacy-laptop-02

Бұл түсініктеме жолдары — шығыстың пішіні, серверіңіздің транскрипті емес; өз файлыңызды оқыңыз. Егер екінші клиент те мәнді көрсетсе, айнымалы ортаның басқа жерінде орнатылған, және сіз теңдестік өрісін емес, ескірген параметрді оқып отырсыз.

Қосылым үшін сервер журналын да тексеріңіз. Теңдестік ақпараты сонда пайда болуы мүмкін, бұл жөндеу үшін ыңғайлы және мәндерді зеріктіретіндей ұстаудың себебі: адамдардың аты жоқ, билет нөмірлері жоқ, журналды оқушы көрсе жағымсыз болатын ештеңе жоқ.

Тегті мәлімдеме ретінде қабылдаңыз, тұлға ретінде емес

Клиент профилін өңдей алатын кез келген адам тегті өзгерте алады, ал туннельдің аутентификациялануы тегті өкілетті етпейді. Тасымалдау мәнді жолда қорғайды; ол мәлімдемені растамайды. Авторизация әлі де аутентификацияланған тұлғаға және серверге тиесілі тіркеу жазбасына тиесілі, ал тег сол жазбамен қажет болғанда салыстырылады.

Бұл айырмашылық тегті қайда қолдануға болатынын анықтайды. Жақсы қолданыстар — сессияны дұрыс журнал файлына бағыттау, бақылау тақтасында көрсету тобын таңдау немесе қолдау сессиясын белгілеу, сонда адам оны кейінірек таба алады. Нашар қолданыстар — құрылғыны ішкі желіге жіберу, firewall саясатын таңдау немесе сессияның қай клиенттің деректерін оқи алатынын шешу.

Мәнді жолға, сұранысқа немесе қабық пәрменіне жетпес бұрын тексеріңіз. Күтілетін жолдардың рұқсат тізімі орналастыру тегі үшін жеткілікті және ештеңе тұрмайды. Теңдестік ұсынған жолды ешқашан қабық пәрмен жолына қыстырмаңыз және кез келген сақталған бақылауды келесі клиент қайта пайдаланатын туннель мекенжайына емес, сессияға шектеңіз.

case "${UV_DEPLOY:-}" in
  field-support|field-qa|lab) : ;;
  *) UV_DEPLOY=unknown ;;
esac

Таза түрде кері қайтарыңыз

Функцияны алып тастау — екі жою және бір тексеру. Клиент профилінен setenv және push-peer-info жолдарын алып тастаңыз, содан кейін сервердегі ілгекті және оның журнал мақсатын жойыңыз немесе өшіріңіз.

grep -rn 'UV_DEPLOY\|push-peer-info' /etc/openvpn/
tail -n 3 /var/log/openvpn/deploy-labels.log

Одан кейін бір клиентті қайта қосыңыз және журнал жолының көрінбейтініне көз жеткізіңіз. Профиль өзгергеннен кейін де жұмысын жалғастыратын ілгек әдетте сынақ құрылғысында әлі орналастырылған екінші профиль болып табылады, және оны қазір табу аудит кезінде табудан арзан.

Соңында қалатыны — шығу тегі құжатталған сессия метадеректерінің шағын, шектеулі бөлігі: клиент оны мәлімдейді, сервер оны жазады және қатынауға қатысты ештеңе оған тәуелді емес. Бұл функцияның пайдалы нұсқасы және оған жету үшін жаңа тіркелгі деректері қажет емес.

Қатысты мақалалар