Linuxda Kerio: kvnetga server kutayotgan MACni berish
kvnet har ulanishda qaytadan yaratiladi, shuning uchun bir martalik manzil o’zgarishi yo’qoladi. Klient jurnalga yozgan qiymatni o’qing va ulanishdan keyingi hookdan uni qo’llang.
Kerio tunneli trafikni tashishi uchun uchta narsa mos kelishi kerak: kvnet interfeysidagi manzil, klient jurnalga yozgan qiymat va server siyosati yoki DHCP kutayotgan narsa. Ular mos kelmasa ham, tunnel autentifikatsiyadan o’tadi va baribir ko’tariladi, va aynan shu nosozlikni chalkashtirib yuboradi. Interfeys har bir ulanish uchun yaratiladi, shuning uchun qo’lda o’rnatilgan manzil faqat o’sha sessiyaga tegishli va boshqa hech narsaga emas. Muammoning shakli shu, yechim esa konfiguratsiya fayli emas, hookdir. Qolgani qiymatni qayerdan o’qish va qayerda qo’llashdir.
Manzil nega doim orqaga qaytadi
kvnet — klient ulanish boshlanganda yaratadigan va tugaganda olib tashlaydigan virtual adapter. Shuning uchun qo’lda bajarilgan ip link set faqat qo’llangan sessiya davom etguncha yashaydi, keyingi ulanish esa klient ajratgan narsadan boshlanadi. Klient kutilgan manzilni qo’llay olmaydigan mashinada har bir qayta ulanish o’sha nomuvofiqlikni yana keltiradi va ijara yoki kirish qoidasi qurilmani yana rad etadi.
Bu naqsh o’zi diagnostik. Bir sessiyada ishlab, keyingisida muvaffaqiyatsiz bo’lgan tunnel hisob ma’lumotlari muammosi emas, chunki hisob ma’lumotlari ulanishlar orasida o’zgarmaydi.
Qiymatni interfeysdan emas, klientdan o’qing
Linux klienti muzokara tafsilotlarini o’zining debug jurnaliga yozadi va foydalanmoqchi bo’lgan manzil u yerda ulanish ketma-ketligining oxirgi manzil shaklidagi tokeni sifatida ko’rinadi. Uni yadro haqiqatda ushlab turgan narsa bilan solishtiring, bu bir readlink uzoqlikda: cat /sys/class/net/kvnet/address.
Agar ikkisi farq qilsa, klient to’g’ri qiymatni bilgan va uni qo’llay olmagan, interfeys paydo bo’lgandan keyin uni qo’llaydigan hook bu bo’shliqni yopadi. Agar jurnalda umuman manzil bo’lmasa, muammo avvalroq va skriptga emas, klient versiyasiga yoki server profiliga tegishli.
Interfeys paydo bo’lgandan keyin uni qo’llang
NetworkManager foydalanuvchilari skriptni uning dispetcher papkasiga qo’yib, faqat VPN interfeysi ko’tarilganda harakat qilishlari mumkin. systemd boshqaradigan klient ko’proq ehtiyotkorlik talab qiladi: xizmat boshlanishida ishlaydigan drop-in odatda adapter paydo bo’lishidan oldin harakatga keladi, shuning uchun hook adapterni taxmin qilish o’rniga interfeysni kutishi kerak. Manzilni o’shanda o’rnating, agar havola ko’tarilgan holda yadro rad etsa, uni tushiring, manzilni o’rnating va yana ko’taring. Ajratib olingan tokenni ip link ga berishdan oldin MAC naqshi orqali qayta o’qing, kutilmagan jurnal satri argumentga aylanmasin.
Klient jurnalidan root sifatida ishlaydigan har qanday narsa tor egalikka loyiq: rootga tegishli fayl, boshqalar yoza olmaydigan va tasdiqlangan manzildan tashqari hech qanday shell interpolyatsiyasi bo’lmagan. Naqsh tekshiruvini skript ichida saqlang. Jurnal mazmuni qaysi buyruq ishlashini hal qilishiga yo’l qo’ymang.
Havolani emas, ijarani tekshiring
ip -4 -o addr show dev kvnet kutilgan oraliqda manzilni ko’rsatishi kerak, ip neigh show dev kvnet shlyuzni ko’rsatishi kerak va VPN orqasidagi bitta xizmat javob berishi kerak. Keyin bir marta uzib, qayta ulanib ko’ring; agar manzil qaytsa, hook noto’g’ri hodisada ishlayapti yoki umuman ishlamayapti.
To’g’ri manzil bilan paydo bo’lib, hech qachon ijara olmaydigan interfeys server tomoniga ishora qiladi. Bu boshqa tekshiruv va odatda boshqa jamoa. Hookni qayta tahrirlashdan oldin hisob ruxsat etilganini va hovuzda hali manzil borligini tasdiqlang.
Yangilanishdan keyin vaqtinchalik yechimni qayta ko’rib chiqing
Manzilni to’g’ri o’rnatadigan klient qurilmasi sizning hookingizni eski qiymatni qo’llashda qoldiradi, bu esa tuzatish olib kelgan yangi nosozlikdir. Shuningdek, hech qachon boshqa mashinadan yoki forum xabaridan MAC ko’chirmang; bu klient ushbu hisob uchun jurnalga yozadigan qiymatdan foydalaning va tekshirgan sanangizni yozib qo’ying.
Skriptni bir o’tirishda o’qish mumkin bo’ladigan darajada qisqa saqlang. Jurnallarni tahlil qiladigan vaqtinchalik yechimlar tabiatan o’tkinchi. Omon qoladiganlari asl mavzusiz ham bo’lajak o’quvchi tushunadigan yechimlardir.