OpenVPN қызметке айналғаннан кейін client-config-dir еленбейді
Салыстырмалы client-config-dir демонның жұмыс қалтасына қатысты шешіледі. Unit файлын оқып, жол рұқсаттарын тексеріп, сосын журналдағы іздеуді растаңыз.
Туннель көтеріледі және клиент қосылады, бірақ тұрақты мекенжай мен сол бір пайдаланушы үшін анықтаған итерілген маршруттар жоқ. Журналда “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 пен конфигурацияны бірге қалпына келтіріп, кейін қайта іске қосыңыз. Осының ешқайсысы үшін сертификаттарды қайта беру қажет емес, ал қалта мәселесін тіркелгі деректерінің мәселесі деп қарау — бес минуттық түзетуді техникалық қызмет терезесіне айналдыратын жол.