OpenVPN xizmatga aylangandan keyin client-config-dir e'tiborsiz qoldiriladi
Nisbiy client-config-dir daemonning ish katalogiga nisbatan hal qilinadi. Unit faylini o'qing, yo'l ruxsatlarini tekshiring, so'ng jurnalda qidiruvni tasdiqlang.
Tunnel kо'tariladi va mijoz ulanadi, lekin qat'iy manzil va o'sha bitta foydalanuvchi uchun siz belgilagan itarilgan marshrutlar yo'q. Jurnalda “file not found” deb yozilmagan va aynan shu odamlarni sertifikatlarni qayta yaratishga yuboradi. Bunday holatlarning ko'pida daemon siz sinov o'tkazgan qobiqdan boshqa katalogda ishlaydi va client-config-dir hech qachon siz taxmin qilgandek hal qilinmagan. Tuzatish — bu yo'lni tuzatish, hisob ma'lumotlarini qayta tiklash emas.
Konfiguratsiyaga tegishdan oldin unit faylini o'qing
Siz tahrirlagan fayldan emas, asl ishlayotgan jarayondan boshlang. systemd dan ishga tushirish satrini, ish katalogini va u qaysi hisobga tushishini so'rang. Uchta javob ushbu sinfdagi aksariyat nosozliklarni tushuntiradi:
systemctl show openvpn-server@server -p ExecStart -p WorkingDirectory -p User -p RootDirectoryBo'sh WorkingDirectory unit fayli / ichida boshlanishini bildiradi, shuning uchun nisbiy client-config-dir ccd /ccd ichidan qidiriladi. U katalog deyarli hech qachon mavjud bo'lmaydi va daemon uning yo'qligini halokatli deb hisoblamaydi.
Buni sinov paytida ishlatgan interaktiv ishga tushirish bilan qiyoslang: unda qobig'ingizning joriy katalogi ehtimol konfiguratsiya katalogi edi. Xuddi shu fayl, xuddi shu kalit so'zlar, ikki xil natija.
Nisbiy yo'l nimaga nisbatan hal qilinadi
Kalit so'z opsiya ishlatilgan paytda jarayonning ish katalogiga nisbatan hal qilinadi. Bu “men --config bilan bergan konfiguratsiya faylining yonida” degani emas. OpenVPN konfiguratsiyani mutlaq yo'ldan bajonidil o'qiydi va nisbiy qiymatlarni baribir boshqa joyda hal qiladi, mana shu yerdagi tuzoq. OpenVPN 2.6 qo'llanmasi qoidani --client-config-dir ostida va yana --cd ostida bayon etadi.
cd kalit so'zi boshqa fayllar o'qilishidan oldin shu kontekstni o'zgartiradi, shuning uchun cd /etc/openvpn/server va keyin client-config-dir ccd belgilagan unit /etc/openvpn/server/ccd ga hal qilinadi. Agar cd qo'shsangiz, direktivlar tartibini tekshiring va bu o'sha fayldagi boshqa barcha nisbiy ishoralarga ta'sir qilishini unutmang.
Yo'lni daemon hisobi sifatida bosib o'ting
Yo'l to'g'ri bo'lib, baribir o'qilmasligi mumkin. Imtiyozlar tushirilgandan keyin daemon endi root emas, shuning uchun har bir ota katalog shu hisob uchun qidiruv ruxsatini, mijoz faylining o'zi esa o'qish ruxsatini talab qiladi. Ota katalogda bitta bajarish biti yetishmasa ham fayl yashiriladi, xatolik esa faqat jimgina odatdagi hovuzni olgan mijoz sifatida ko'rinadi.
namei har bir komponentning ruxsatini tartib bilan chop etadi, bu kataloglarni birma-bir tekshirishdan tezroq:
namei -l /etc/openvpn/server/ccd/client1Keyin o'qishni o'zingiz sifatida emas, xizmat hisobi sifatida sinab ko'ring:
runuser -u openvpn -- test -r /etc/openvpn/server/ccd/client1 && echo readableAgar unit chroot ishlatsa, katalog qamoq ichida mavjud bo'lishi kerak va konfiguratsiyadagi yo'l chroot qo'llanilgandan keyin talqin qilinadi. Xostda qamoqdan tashqaridagi fayl ichidan ko'rinmaydi.
Tahmin qilmasdan qidiruvni tasdiqlang
Bir marta qayta ishga tushirish uchun jurnal darajasini ko'taring va server mijozga xos opsiyalar haqida nima deyishini o'qing. verb 4 darajasida daemon import qilgan har bir mijoz konfiguratsiyasini xabar qiladi, shuning uchun yo'q satr o'sha ulanish uchun hech qanday fayl o'qilmaganining to'g'ridan-to'g'ri dalili.
openvpn --config /etc/openvpn/server.conf --verb 4 --client-config-dir /etc/openvpn/server/ccdBuni bo'sh portda old planda ishga tushirib, bitta mijozni ulang. Bu systemd ni tasvirdan butunlay chiqaradi: agar qayta yozishlar shu yerda ko'rinib, xizmat ostida ko'rinmasa, farq faylda emas, unit kontekstida.
Hech qanday fayl mos kelmaganida nima bo'lishi kerakligini hal qiling. ccd-exclusivesiz mijoz faqat global hovuz sozlamalari bilan qabul qilinadi, va bu yuqorida ta'riflangan jimgina nosozlik. U bilan yo'q fayl rad etilgan ulanishga aylanadi, bunday rad etishni payqash oson, ammo yuklama ostida nuqson izlash qiyin.
Tuzating, qayta ishga tushiring, tekshiring
Konfiguratsiyada katalogni mutlaq qiling va shunday qoldiring. Nisbiy yo'llar unit ish katalogini qotirgandagina xavfsiz, qotirish esa keyinroq kimdir olib tashlaydigan qo'shimcha harakatlanuvchi qism.
client-config-dir /etc/openvpn/server/ccd
ccd-exclusiveNusxani qayta ishga tushiring, tanil bir mijozni qayta ulang va u olgan manzilni unga itarilgan marshrutlar bilan birga o'qing. Agar manzil o'sha mijoz faylidagi ifconfig-push satriga mos kelsa, qidiruv ishladi. Agar mijoz hali ham umumiy hovuzga tushib qolsa, jurnal satrlari soniga qayting: nol import yo'l yoki shaxs noto'g'ri degani, noto'g'ri mazmunli bitta import esa daemon o'qiydigan fayldan boshqasini tahrirlayotganingizni bildiradi.
Oldingi unit va konfiguratsiyani birga tiklab orqaga qayting, so'ng qayta ishga tushiring. Bulardan hech biri uchun sertifikatlarni qayta berish shart emas, katalog muammosini hisob ma'lumotlari muammosi deb qarash esa besh daqiqalik tuzatishni xizmat ko'rsatish oynasiga aylantiradigan yo'l.