Жайгаштыруу тегдери — адамдардын бул функцияга кайрылуусунун кадимки себеби: ар бир туташуу сайт же роль сыяктуу нерсени алып жүрүшү керек, ал эми сервер аны экинчи каттоо маалымат форматын ойлоп таппастан окушу керек. Коомдук 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

Андан кийин бир кардарды кайра туташтырыңыз жана журнал сабы көрүнбөй калганын текшериңиз. Профиль өзгөргөндөн кийин да иштеп жаткан илгич көбүнчө сынак түзмөгүндө дагы деле жайгаштырылган экинчи профиль болот, жана аны азыр табуу аудит учурунда табуудан арзан.

Аягында калганы — келип чыгышы документтелген сессия метаберилиштеринин кичинекей, чектелген бөлүгү: кардар аны билдирет, сервер аны жазат жана кирүүгө байланыштуу эч нерсе ага көз каранды эмес. Бул функциянын пайдалуу версиясы жана ага жетүү үчүн жаңы каттоо маалыматтарынын кереги жок.

Тектеш макалалар