Joylashtirish teglari odamlarning bu funksiyaga murojaat qilishining odatiy sababidir: har bir ulanish sayt yoki rol kabi narsani olib yurishi kerak, server esa ikkinchi shaxsiy ma'lumot formati o‘ylab topmasdan uni o‘qishi kerak. Hamjamiyat OpenVPN'da bu mexanizm allaqachon bor va u kichik. Og‘riqli qismi — kutilmalar. Mijoz profilida oddiy o‘zgaruvchini o‘rnatish serverda hech narsa qilmaydi va yetib kelgan qiymat faqat mijoz uni yuborganini isbotlaydi.

Bu ishlaydigan yo‘l, haqiqatda nima kelganini ko‘rsatadigan tekshiruv bosqichi va yarim sozlangan ilgakni qoldirmaydigan qaytarish uchun qo‘llanma. Bu yerda hech narsa yangi sertifikat, yangi plagin yoki protokol kengaytmasini talab qilmaydi.

O‘zgaruvchini o‘rnating va yo‘lni yoqing

Mijoz profilida ikki qator ishni bajaradi va ikkalasi ham zarur. Birinchisisiz yuboradigan narsa yo‘q; ikkinchisisiz mijoz tengdosh ma'lumotini umuman taklif qilmaydi. Tartib muhim emas va buni bilish foydali, chunki ikki qator ko‘pincha yaratilgan profilning turli qismlariga tushadi. Muhimi — mijoz o‘qishidan oldin profilni qayta yozadigan har qanday narsadan ikkalasi ham omon qolishi.

setenv UV_DEPLOY field-support
push-peer-info

UV_ prefiksi bezak emas. Oddiy DEPLOY o‘zgaruvchisi mijoz jarayonida lokal bo‘lib qoladi va hech qachon uzatilmaydi, prefiksli shakl esa protokol foydalanuvchi belgilagan maydonlar uchun ajratgan nomlar fazosidir. Tasdiqlangan profilning qolgan qismini tegmasdan qoldiring va joylashtirishdan oldin siz joylashtirayotgan mijoz yig‘indisi ikkala direktivani qo‘llab-quvvatlashiga ishonch hosil qiling.

Bitta amaliy tekshiruv shu yerda, oxirida emas: direktiva mijoz binar fayliga yetib borishiga va uni qandaydir o‘ram yutib yubormasligiga ishonch hosil qiling. O‘zining buyruq qatorini yaratadigan grafik mijoz yoki saqlangan profilni qayta yuklaydigan boshqaruv interfeysi tanimagan qatorlarni tashlab yuborishi mumkin. Agar server hech narsani ko‘rmasa, birinchi qarash kerak bo‘lgan joy shu.

Maydonni server ilgagidan o‘qing

Server tomonida qabul qilingan tengdosh ma'lumoti tekshiriladi va ulanish ish oqimining muhitiga kiritiladi, va aynan shu uni siz tomondan hech qanday protokol ishisiz ilgakdan o‘qish mumkin qiladi. Server boshqaruv kanalini tahlil qilishi yoki siz uchun biror narsa saqlashi shart emas; ulanish o‘rnatilayotganda qiymat shunchaki mavjud bo‘ladi. Tasdiqlangan nom yoniga tegni yozadigan minimal client-connect skripti shunday ko‘rinadi.

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

O‘zgaruvchini jurnalni tahlil qilish o‘rniga muhit orqali o‘qing va unga har doim standart qiymat bering. ${UV_DEPLOY:-unset} maydonni hech qachon yubormaydigan mijozlar uchun skriptni ishlash qobiliyatida saqlaydi, bu bosqichma-bosqich joylashtirishda odatiy holat. Nomni topish uchun butun muhitni jurnalga to‘kmang; unda tegdan ancha ko‘p narsa bor, saqlashni rejalashtirmagan qiymatlar ham.

Skriptni qo‘lda ishga tushiring va u hamma narsa uchun unset deb xabar beradi, chunki qo‘lda ishga tushirilgan qobiq ulanish muhitini olib yurmaydi. Bu skriptdagi xato emas va maydon yo‘qligiga dalil ham emas. Uni haqiqiy ulanish orqali sinab ko‘ring, bu o‘zgaruvchi mavjud bo‘lgan yagona kontekst.

Haqiqatda nima kelganini tekshiring

Teg bilan bitta mijozni va tegsiz boshqasini ulang, so‘ng faylni o‘qing. Juftlik sinovdir: bir qator qiymatni, ikkinchisi standart qiymatni olib yurishi kerak va ikkalasi ham siz kutgan aynan o‘sha tasdiqlangan shaxsni nomlashi kerak.

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

O‘sha izoh qatorlari chiqish shakli, serveringizdan olingan nusxa emas; o‘z faylingizni o‘qing. Agar ikkinchi mijoz ham qiymat ko‘rsatsa, o‘zgaruvchi muhitning boshqa joyida o‘rnatilgan va siz tengdosh maydoni o‘rniga eski parametrni o‘qiyapsiz.

Ulanish uchun server jurnalini ham tekshiring. Tengdosh ma'lumoti u yerda paydo bo‘lishi mumkin, bu xatolarni tuzatish uchun qulay va qiymatlarni zerikarli saqlashga sabab: odamlarning ismlari yo‘q, chipta raqamlari yo‘q, jurnal o‘quvchisi ko‘rsa sizga noqulay bo‘ladigan hech narsa yo‘q.

Tegni da'vo deb qabul qiling, shaxs deb emas

Mijoz profilini tahrirlay oladigan har kim tegni o‘zgartira oladi va tunnelning autentifikatsiya qilinganligi tegni vakolatli qilmaydi. Transport qiymatni yo‘lda himoya qiladi; u da'voni tasdiqlamaydi. Avtorizatsiya hali ham autentifikatsiya qilingan shaxsga va server egalik qiladigan ro‘yxatga olish yozuviga tegishli, teg esa zarur bo‘lganda o‘sha yozuv bilan solishtiriladi.

Bu farq tegni qayerda ishlatish mumkinligini belgilaydi. Yaxshi qo‘llanishlar — sessiyani to‘g‘ri jurnal fayliga yo‘naltirish, boshqaruv panelida ko‘rsatish guruhini tanlash yoki qo‘llab-quvvatlash sessiyasini belgilash, shunda odam uni keyinroq topa oladi. Yomon qo‘llanishlar — qurilmani ichki tarmoqqa kiritish, xavfsizlik devori siyosatini tanlash yoki sessiya qaysi mijoz ma'lumotlarini o‘qiy olishini hal qilish.

Qiymatni yo‘l, so‘rov yoki qobiq buyrug‘iga yetib borishidan oldin tekshiring. Kutilgan satrlarning ruxsat ro‘yxati joylashtirish tegi uchun yetarli va hech qanday xarajat talab qilmaydi. Tengdosh taqdim etgan satrni hech qachon qobiq buyruq qatoriga qo‘ymang va har qanday saqlangan kuzatuvni sessiya bilan cheklang, keyingi mijoz qayta ishlatadigan tunnel manzili bilan emas.

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

Uni toza tarzda qaytaring

Funksiyani olib tashlash ikki o‘chirish va bitta tekshiruvdir. Mijoz profilidan setenv va push-peer-info qatorlarini olib tashlang, so‘ng serverdagi ilgakni va uning jurnal maqsadini olib tashlang yoki o‘chiring.

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

Shundan keyin bitta mijozni qayta ulang va jurnal qatori ko‘rinishdan to‘xtaganiga ishonch hosil qiling. Profil o‘zgarganidan keyin ham ishlaydigan ilgak odatda sinov qurilmasida hali joylashtirilgan ikkinchi profildir va uni hozir topish audit paytida topishdan arzon.

Oxirida qoladigan narsa kelib chiqishi hujjatlashtirilgan kichik, cheklangan sessiya metama'lumotlari bo‘lagidir: mijoz uni da'vo qiladi, server uni qayd etadi va kirishga oid hech narsa unga bog‘liq emas. Bu funksiyaning foydali versiyasi va u yerga yetish uchun yangi shaxsiy ma'lumotlar talab qilinmaydi.

O'xshash maqolalar