Ikkita OpenVPN demoni ikkalasi ham muvaffaqiyatli tunnel haqida xabar berishi mumkin, lekin shlyuz har bir mijozni o’sha bittasi orqali yuboradi. Mijoz qaysi tunnelni ishlatishini qo’l berishda hech narsa hal qilmaydi; buni yadro hal qiladi, paketma-paket, siyosat qoidalaridan va so’ng har bir qoida nomlaydigan jadvaldan o’tib. Shunday qarasangiz, konfiguratsiya OpenVPN parametrlari haqida bo’lishni to’xtatadi va ikkita egasi bor marshrutlash matritsasiga aylanadi.

Yadro hal qiladi, demon emas

Yo’naltirilayotgan paket LAN interfeysiga keladi va marshrutlash kodi qoidalar ro’yxatini ustuvorlik tartibida baholaydi. Selektor birinchi mos keladigan qoida jadvalni nomlaydi, o’sha jadvalning yo’llari chiqish qurilmasini tanlaydi. Agar jadvalda mos yo’l bo’lmasa, qidiruv keyingi qoidaga o’tadi, va aynan shu tafsilot chala qurilgan sozlamani baland ovozda emas, jimgina muvaffaqiyatsiz qiladi.

Tunnel jarayonining bu yurishda aytadigan gapi yo’q. U interfeys yaratadi va yo’llarni o’rnatishi mumkin, lekin ma’lum bir mijozning paketi o’sha interfeysga kirishi to’liq qaysi jadvalga yuborilganiga bog’liq. Shuning uchun bir xil import qilingan yo’llarga ega ikkita tunnel raqobatlashadi, va oxirgi yozgan hamma uchun yutadi. Shuning uchun sozlama konfiguratsiya fayllarida muvozanatli ko’rinishi va baribir barcha mijozlarni bitta demon orqali yuborishi mumkin.

Har bir nusxaga o’z resurslar to’plamini bering

Nomlardan boshlang, chunki qayta ishlatilgan nomlar ikkita nusxa tasodifan holatni bo’lishishni boshlaydigan yo’ldir. Alohida tunnel qurilmalari, alohida konfiguratsiya fayllari, alohida hisob ma’lumotlari va alohida xizmat birliklarini belgilang. Har bir nusxaning tashqi so’nggi nuqtasi va tunnel manzilini siyosat matritsasi bilan bir jadvalga yozib qo’ying, keyingi o’zgarishga qaraydigan bitta joy bo’lsin.

dev tun-office
route-nopull
pull-filter ignore "redirect-gateway"

dev tun-lab
route-nopull

route-nopull server itargan yo’llarni lokal jadvaldan tashqarida ushlab turadi, siyosat jadvallari aniq bo’lishi kerak bo’lganda siz aynan shuni xohlaysiz. Ma’lum server redirect-gateway parametrini ham itaradimi va mijoz versiyangiz filtr shaklini qo’llab-quvvatlaydimi, buni taxmin qilish o’rniga qo’llanmadan tekshirishga arziydi.

Matritsani yozing: manba, jadval, qurilma

Har bir mijoz guruhi uchun manba manzil bo’yicha jadval tanlaydigan qoida qo’shing, so’ng mo’ljallangan yo’lni o’sha jadvalga qo’ying:

ip rule add from 10.8.1.0/24 lookup 100 priority 1000
ip rule add from 10.9.1.0/24 lookup 200 priority 1000
ip route add default dev tun-office table 100
ip route add default dev tun-lab table 200

Jadvalga guruh ega bo’lishi kerak bo’lgan manzil yo’llari, shuningdek shlyuzni yaroqli saqlaydigan har qanday lokal yoki boshqaruv istisnolari kerak. Faqat default yo’lga ega jadval o’sha guruh uchun to’liq tunnel siyosati, bu aynan to’g’ri bo’lishi mumkin, lekin bu qoldirib ketish emas, qaror bo’lishi kerak.

Tunnelning o’z tashuvi mijoz guruhida emas

Har bir demonning shifrlangan paketlari shlyuzning o’zida paydo bo’ladi va tashqi hamkorga yo’naltiriladi. Faqat mijoz manba prefiksiga mos keladigan qoida bu paketlarni tinch qoldiradi, shuning uchun manba bilan cheklangan qoidalar hamma narsaga mos keladigan qoidalardan xavfsizroq. Selektorisiz qoida tunnelning o’z tashuvini ushlab qolishi va uni yana tunnel orqali yuborishi mumkin, shunda ulanish provayder muammosiga o’xshab muvaffaqiyatsiz bo’ladi.

Lokal boshqaruv sessiyasi va quyi qatlam yo’lini siyosat jadvallaridan tashqarida aniq saqlang. Bu istisnolarni matritsa yoniga yozing; ular dizaynning qismi, hodisa paytida qayta kashf qilinadigan chora emas.

Yo’lni tanlash unga ruxsat bermaydi

Yo’naltirishga ruxsat — yo’lda keyinroq qabul qilinadigan ikkinchi qaror. Ikkinchi tunnel orqali chiqadigan paketlarni qabul qiladigan xavfsizlik devori qoidasi marshrutlash kodini uni tanlashga majbur qilmaydi, va to’g’ri jadval yo’naltirishga ruxsat bermaydi. Ikkalasi ham bo’lishi kerak, va faqat bittasini isbotlovchi sinov sizni ikkinchisi borasida chalg’itadi. Bir guruh ishlab, ikkinchisi ishlamasa, jadvallarni qayta yozish o’rniga bu ikki qadamni alohida tekshiring.

Manba tarjimasi — uchinchi qaror, va u manba guruhi hamda uni haqiqatan tashuvchi tunnel qurilmasi bilan cheklanishi kerak. postrouting zanjirini bo’shatish o’rniga ikkita nusxa uchun alohida zanjir qo’shing, chunki aloqasiz xizmatlarning u yerda yozuvlari bo’lishi mumkin va bo’shatish ularni jimgina olib tashlaydi.

Bitta tunnel yiqilganda nima bo’ladi

Nosozlik xulqini oldindan hal qiling. Tunnel jadvali o’z yo’lini yo’qotsa, qidiruv keyingi qoidaga tushadi, va guruh trafigi hech qanday xatosiz boshqa tunnel yoki oddiy yuqori kanal orqali davom etadi. Agar bu qabul qilinmasa, pastroq ustuvorlik raqamida o’sha manba uchun erishib bo’lmaydigan natija qaytaradigan yakuniy qoida qo’shing, yo’qotish yutilmasdan ko’rinadigan bo’lsin.

Har bir manba guruhidan yangi so’rov yuboring va to’rtta faktni yozing: tanlangan jadval, chiqish qurilmasi, tarjima qilingan manba va javob o’sha yo’l bilan qaytdimi. So’ng bitta tunnelni tushiring va takrorlang. Interfeyslar ro’yxatidagi ikkita TUN qurilmasi ikkala demon ham ishga tushganini isbotlaydi; ular ma’lum mijoz qaysinisidan foydalanganini aytmaydi. Bitta tunnel yo’q bo’lgan ikkinchi yugurish — zaxira qoidangiz mo’ljallagan ishni bajarishini ko’rsatadigan yugurish.

O'xshash maqolalar