Туннелиңиз көтөрүлүп, кардар туташат, бирок туруктуу дарек жана ошол бир колдонуучу үчүн аныктаган итерилген маршруттар жок. Журналда “file not found” деп жазылбайт, дал ушул адамдарды сертификаттарды кайра жаратууга жиберет. Ушундай учурлардын көбүндө демон сиз сынаган кабыктан башка каталогдон иштейт, ал эми client-config-dir эч качан сиз ойлогондой чечилген эмес. Оңдоо — жолду түзөтүү, каттоо маалыматтарын кайра коюу эмес.

Конфигурацияга тийүүдөн мурун unit файлын окугула

Сиз түзөткөн файлдан эмес, чындыгында иштеп жаткан процесстен баштаңыз. systemdден аткаруу сабын, жумушчу каталогду жана ал түшкөн эсепти сураңыз. Ошол үч жооп бул класстагы бузулуулардын көбүн түшүндүрөт:

systemctl show openvpn-server@server -p ExecStart -p WorkingDirectory -p User -p RootDirectory

Бош WorkingDirectory unit файлы / каталогунда башталарын билдирет, ошондуктан салыштырмалуу client-config-dir ccd /ccd ичинен изделет. Ал каталог дээрлик болбойт, демон анын жоктугун өлүмтүк деп эсептебейт.

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

Салыштырмалуу жол эмнеге карата чечилет

Ачкыч сөз опция колдонулган учурда процесстин жумушчу каталогуна карата чечилет. Бул “мен --config аркылуу берген конфигурация файлынын жанында” дегенди билдирбейт. OpenVPN конфигурацияны абсолюттук жолдон окуй берет жана салыштырмалуу маанилерди башка жерден чечет, дал ушул — бул жердеги тузак. OpenVPN 2.6 колдонмосу эрежени --client-config-dir астында жана дагы --cd астында айтат.

cd ачкыч сөзү башка файлдар окулганга чейин ал контекстти өзгөртөт, ошондуктан cd /etc/openvpn/server коюп, анан client-config-dir ccd койгон unit /etc/openvpn/server/ccd болуп чечилет. Эгер cd кошсоңуз, директивалардын тартибин текшериңиз жана ал ошол эле файлдагы бардык башка салыштырмалуу шилтемелерге таасир этээрин унутпаңыз.

Жолду демондун эсеби катары басып өтүңүз

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

namei ар бир компоненттин укугун тартиби менен басып чыгарат, бул каталогдорду бир-бирден текшерүүдөн тезирээк:

namei -l /etc/openvpn/server/ccd/client1

Анан окууну өзүңүз катары эмес, кызмат эсеби катары сынаңыз:

runuser -u openvpn -- test -r /etc/openvpn/server/ccd/client1 && echo readable

Эгер unit chroot колдонсо, каталог түрмөнүн ичинде болушу керек, ал эми конфигурациядагы жол chroot колдонулгандан кийин чечмеленет. Түрмөнүн сыртындагы хосттогу файл ичинен көрүнбөйт.

Болжолдобой, издөөнү ырастаңыз

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

openvpn --config /etc/openvpn/server.conf --verb 4 --client-config-dir /etc/openvpn/server/ccd

Муну бош портто алдыңкы планда иштетип, бир кардарды туташтырыңыз. Бул systemdди сүрөттөн толук чыгарат: эгер кайра жазуулар бул жерде көрүнүп, кызматтын астында көрүнбөсө, айырма файлда эмес, unit контекстинде.

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

Оңдоңуз, кайра иштетиңиз, текшериңиз

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

client-config-dir /etc/openvpn/server/ccd
ccd-exclusive

Инстанцияны кайра иштетип, белгилүү бир кардарды кайра туташтырыңыз жана ал алган даректи ага итерилген маршруттар менен бирге окуңуз. Эгер дарек ошол кардардын файлындагы ifconfig-push сабына дал келсе, издөө иштеди. Эгер кардар дагы эле жалпы бассейнге түшсө, журнал саптарынын санына кайтыңыз: нөл импорт жолдун же инсандыктын туура эместигин билдирет, туура эмес мазмундуу бир импорт демон окуган файлдан башкасын түзөтүп жатканыңызды билдирет.

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

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