OpenVPN профиль жүктөлсө да ca.crt таба албайт
Профиль жолу анын ичиндеги файлдардын негизи эмес. Эмне үчүн абсолюттук --config дагы эле ca.crt боюнча ишке ашпай турганын жана ишке киргизүү жоопту кантип аныктай турганын көрүңүз.
Кызмат ишке кирет, профилди эч кандай нааразычылыксыз окуп, анан байланышсыз көрүнгөн сапта өлөт: ал ca.crt файлын ача албайт. Сертификатта эч нерсе өзгөргөн жок, ал эми unit файлындагы профиль жолу абсолюттук. Ушул айкалыш белги болуп саналат. Сиз берген жол бир файлды көрсөтөт, ал эми ошол файлдын ичиндеги аттар таптакыр башка жерде чечилет, ошондуктан толук квалификациялуу көрүнгөн ишке киргизүү да эч ким ойлобогон каталогдон ачкычтарын окушу мүмкүн.
Ийгиликсиздиктин себептери аз, жана аларды ирети менен бөлүү керек: процесстин чындыгында болгон базалык каталогу, кызматтын ишке кирүү контексти жана жол туура болгондон кийинки файлдын айланасындагы уруксаттар же sandbox. Ар бири башка из калтырат — unit ичинде, процессте жана файл системасында.
Профиль жолу базалык каталог эмес
/tmp ичинде башталып, /etc/vpn/prod/tenant-a.ovpn алган процессти элестетиңиз. Ошол профилдин ичинде ca ca.crt сабы салыштырмалуу жолду атайт. Профилди тапкан аргументте эч нерсе бул атты кайра жазбайт, ошондуктан процесс /tmp/ca.crt издейт жана жок файл тууралуу билдирет.
Татаал жер — каталардын ирети. OpenVPN адегенде конфигурацияны талдап, шилтелген файлдарды аларга жеткенде ачат, ошондуктан профилдеги ката ар кандай ачкычка тийгенге чейин билдирилет, ал эми жок сертификат талдоо ошол жерге жеткенде гана көрүнөт. Демек, жүктөлгөн профиль синтаксистин тууралыгынын далили, ал атаган файлдардын табылганынын эмес.
Нускама эмнени бөлөт: --config жана --cd
OpenVPN 2.6 нускамасы эки башка опцияны сүрөттөйт. Бирөө конфигурация файлын жүктөйт. Экинчиси конфигурация, ачкыч, скрипт жана башка файлдар окулганга чейин процесстин каталогун өзгөртөт жана учурдагыга эч кандай шилтемеси жок абсолюттук каталогду талап кылат.
openvpn --cd /etc/vpn/prod --config tenant-a.ovpn
Бул чакыруу — форма, башка бирөөнүн профилин ишке киргизүү көрсөтмөсү эмес. Ал берери — аныктык: тизмектеги ар бир салыштырмалуу аттын негизи процессти баштаган кабыкчадан же менеджерден мурасталбастан, буйрукта айтылат. Альтернатива да ошондой жарактуу жана кызмат үчүн көп учурда жакшыраак: жумуш каталогун тынч калтырыңыз жана профилдин ичиндеги ар бир шилтелген файлды абсолюттук кылыңыз.
Кайсынын тандасаңыз да, биринчи ийгиликсиздикти эмес, бүт тизмекти текшериңиз. Профиль башка конфигурация файлын тартышы мүмкүн, ал эми кошулган файлдын салыштырмалуу аттары аларды кошкон файлдын каталогуна эмес, ошол эле процесс каталогуна карата чечилет. Журнал жолдору, аутентификация файлдары жана жардамчы скрипттер ошол эле эрежени аткарат.
Кызмат башка жерде башталат
Профиль каталогундагы интерактивдүү кабыкча таңгакталган unit жөнүндө эч нерсени далилдебейт. Менеджерлер өздөрүнүн жумуш каталогун белгилешет, ал эми ороп турган скрипт бинар ишке киргенге чейин аны кайра өзгөртүшү мүмкүн. Ийгиликсиз болгон unit — ой жүгүртүүгө татыктуу жалгыз ишке киргизүү.
systemctl show -p WorkingDirectory -p ExecStart --value openvpn@tenant-a
ls -l /proc/$(pgrep -n openvpn)/cwd
Экинчи буйрук тирүү процесс чындыгында кармап турган каталогду көрсөтөт, жана ороп турган нерсе катышканда бул unit файлына караганда ишенимдүү. Экоо туура келбесе, жооп — ороп турган нерсе, ал эми unit жалган из.
Издөөдөн кийин: уруксаттар, chroot жана sandbox
Туура базалык каталог да ошол эле билдирүүнү бере алат, себеби чечүү жана жетүү өзүнчө кадамдар. Процесске ар бир ата-эне каталогдо аткаруу уруксаты жана файлда окуу уруксаты керек, ал эми файл системасынын бир бөлүгүн жашырган кызмат unit-и процесстин эмнени көрө аларын өзгөртөт.
Үч кеңири таралган вариант бирдей ката берет. Файл root үчүн гана окулат, ал эми кызмат аны ачканга чейин артыкчылыктардан баш тартат. Unit профиль каталогун камтыбаган файл системасынын коргоочу көрүнүшүн коёт. Демон chroot менен иштейт, ошондуктан хостто бар жол ошол көрүнүштүн ичинде жок.
Диагностиканы файлдын ээлиги жана процесстин инсандыгы менен жүргүзүңүз, уруксаттарды бошотуу менен эмес. Бул катаны тынчтандыруу үчүн жеке ачкычты баары окуй тургандай кылуу катуу ийгиликсиздикти тынч ийгиликсиздикке алмаштырат, ал эми ачкыч — каталогдун сиз эң аз ачкыңыз келген бөлүгү.
Оңдоону өзүңүздүн ишке киргизүүңүз менен далилдеңиз
Чыныгы unit-ти профилге тиешеси жок каталогдон кайра ишке киргизиңиз жана ошол эле баштоо сабын байкаңыз. Андан кийин процесс иштеп жатканда көздөлгөн каталогду кармап турганын жана жүктөгөн сертификат күткөнүңүз экенин ырастаңыз.
systemctl restart openvpn@tenant-a
systemctl status openvpn@tenant-a --no-pager
journalctl -u openvpn@tenant-a -n 20 --no-pager
Жолдорду жүктөө ийгиликтүү болгондо, аутентификация жана маршруттоо дагы эле өз ийгиликсиздиктери бар өзүнчө этаптар, ал эми көтөрүлүп, бирок эч кандай трафик өткөрбөгөн байланыш — башка иликтөө. Бул жердеги оңдоо файлдар кайсы каталогдон келгенине гана тиешелүү жана ал чакырууда көрүнүшү керек, акыркы жолу кол менен иштеткен адамдын эсинде калбашы керек.
Профиль конфигурация менеджери менен жайгаштырылса, базалык каталогду же абсолюттук файл аттарын ошол жерге да коюңуз. Бир хосттогу кол менен оңдоо — кийинки кайра куруудан кийин кайтып келүүчү бул маселенин варианты.