Bitta Pi, ikkita OpenVPN instansiyasi: har bir birlik nima o'qiydi
Bitta Pi'dagi ikkita OpenVPN daemoni turli konfiguratsiya fayllarini o'qiydi va turli ilgaklar orqali chiqadi. Har bir instansiyani xaritalang, keyin yuk yo'lini alohida sinang.
Profilga tegishdan oldin OpenVPN jarayonlarini sanang. Rouming foydalanuvchilarni qabul qilib, shu bilan birga yuqori oqim xizmatiga qo'ng'iroq qiladigan Pi ikkita daemon ishlatadi va ularning har biri siz kiritgan instansiya nomi tanlagan konfiguratsiya faylini o'qiydi. Paket shablonlari keyin har bir daemonga o'z ish katalogini, o'z ishlash holati faylini va o'z tunnel qurilmasini beradi. Bu bo'linishni noto'g'ri qilsangiz, ishlab turgan jarayon hech qachon ochmaydigan fayldagi to'g'ri sozlamani o'zgartirib bir oqshom o'tkazasiz.
Har bir instansiya nomi o'z faylini tanlaydi
OpenVPN 2.6 bilan keladigan birlik fayllarida ishga tushirish argumentlari @ belgisidan keyingi matn bilan to'ldiriladigan instansiya o'rinbosarini olib yuradi. Server shabloni server konfiguratsiya katalogidan ishlaydi va argumentini u yerdagi %i.conf bo'yicha hal qiladi, mijoz shabloni esa xuddi shuni mijoz katalogidan qiladi. Shunday qilib [email protected] server katalogidagi admits.conf faylini o'qiydi, [email protected] mijoz katalogidagi uplink.conf faylini o'qiydi va bu nomlarning hech biri boshqa katalogda hech qanday ma'noga ega emas.
Paket yuqori oqim standart qiymatlarini saqlab qoldi deb taxmin qilmasdan, xaritani mashinaning o'zida tekshiring. Distributivning drop-in fayli ish katalogini yoki konfiguratsiya argumentini butunlay almashtirishi mumkin.
systemctl cat [email protected]
systemctl cat [email protected]O'sha chiqishdagi WorkingDirectory satrini va konfiguratsiya argumentini o'qing, chunki qaysi fayl yuklanishini faqat yoqilgan birlik hal qiladi. ExecStart ga --config qo'shadigan drop-in shablon yo'li to'g'ri ko'rinsa ham shablondan ustun keladi. Mahalliy bekor qilish ishlayotganini bilmoqchi bo'lsangiz, fragment va drop-in yo'llarini so'rang. Agar ikkala rol ham bitta faylga yechilsa, sizda bitta jarayon ham server, ham mijoz bo'lishga urinadi va o'sha fayldagi keyingi parametr jimgina g'alaba qozonadi.
Mahalliy transport va yo'naltirilgan yuk turli ilgaklarga tushadi
Serverning har bir rouming foydalanuvchiga shifrlangan ulanishi Pi'ning o'zida yaratiladi, shuning uchun uning tashqi javoblari mahalliy chiqish ilgagi orqali chiqadi. Mijozning yuqori oqim sherigiga ulanishi ham mahalliy yaratilgan chiqishdir, garchi u uzoq tarmoqqa yetsa ham. Yo'naltirilgan yuk uchinchi toifa bo'lib, yadro uni paket uchun chiqish qurilmasini allaqachon tanlagandan keyingina moslashtiradi.
| Flow | Hook that sees it | What to inspect |
|---|---|---|
| Roaming user handshakes to the server | Local input and local output | Listener socket, bind address, rule admitting the UDP port |
| User payload leaving through the upstream tunnel | Forward | IPv4 forwarding switch, selected route, permission rule, any translation |
| Pi's own connection to the upstream peer | Local output | Underlay route to the provider endpoint, not the tunnel route |
forward zanjiri ichida chiqish interfeysiga mos keladigan qoida marshrutlash allaqachon o'sha interfeysga tayinlagan paketni ruxsat berishi yoki tashlab yuborishi mumkin, lekin u hech qachon interfeysni tanlamaydi. Bir xost bir tunneli tugatib, ikkinchisini boshlaganda, foydalanuvchi yukini yuqori oqim tunneliga yuboradigan siyosat va Pi'ning o'z shifrlangan javoblarini himoya qiladigan siyosat ikki alohida qaror. Ular tasodifan bir xil jismoniy NIC'ga tushadi, shuning uchun chalkashtiriladi.
Bu farq keng tarqalgan yarim muvaffaqiyatsizlikni tushuntiradi. Foydalanuvchilar ulanadi, handshake tugaydi va trafigi baribir noto'g'ri yo'ldan chiqadi, chunki handshake mahalliy, yuk esa forward edi va ikkisidan faqat bittasi sinalgan.
Import qilingan marshrut foydalanuvchilaringizga ketadigan javoblarni yutib yuborishi mumkin
Mijoz profilining xavfsizlik sozlamasi yuqori oqim Pi'ning marshrutlash jadvaliga nima push qilishi mumkinligini hal qiladi va keng redirect ishlab turgan ikki rolli xostni buzilgan holatga keltiradigan parametrdir. Agar push qilingan marshrut rouming foydalanuvchilarning ommaviy manzillarini qamrasa, server ularga qarab yaratadigan javoblar underlay orqali chiqish o'rniga yangi marshrut bo'ylab yuqori oqim tunneliga kirishi mumkin. Odamlar ko'pincha provayderga tunnel hali ishlayotganini tekshirib, shu yerda to'xtaydi, chunki bu trafik tunnelning o'z transporti va qolgan hamma narsa noto'g'ri ishlayotganda ham oqishda davom etadi.
Manba yoki mark asosidagi siyosat ikki oqimni alohida ushlab turish usulidir. OpenVPN'ning Linux mark parametri daemonning o'z shifrlangan paketlariga xavfsizlik devori belgisini qo'yadi, keyin marshrutlash qoidasi uni alohida jadvalga yuborishi mumkin. Manba manzillari ham xuddi shunday yaxshi ishlaydi, agar serverning tashqi javoblari doim bitta underlay manzilidan chiqsa. Ikkala yondashuv ham tanlangan jadvalda amaldagi marshrutlarni va provayder endpointi uchun istisnoni talab qiladi, aks holda tunnelning o'zi ko'tarilmaydi.
Har qanday qoida yozishdan oldin yadrodan javob haqiqatda qaysi yo'lni bosishini so'rang. Quyidagi manzillar Pi'ning underlay manzili va bitta rouming foydalanuvchining ommaviy manzili uchun o'rinbosarlardir.
ip rule show
ip route get 198.51.100.7 from 192.0.2.10Bo'linishni tekshiring, keyin rollarni birma-bir to'xtating
Uchta oqimni alohida sinang, chunki muvaffaqiyatli handshake qolgan ikkitasi haqida hech narsani isbotlamaydi. Yangi kiruvchi ulanishni qabul qiling, bitta ruxsat etilgan ilovani yuqori oqim chiqishi orqali yuboring va ikkala jarayon ham o'z sheriklariga hali yetib borishini tasdiqlang.
Keyin mijoz rolini to'xtating va server roli nimani saqlab qolishini kuzating. Bu bitta instansiya uchun mo'ljallangan, lekin ikkalasiga qo'llangan marshrut yoki mark qoidasini topishning eng arzon usuli.
systemctl stop [email protected]
systemctl status [email protected] --no-pager
ss -lunp | grep openvpn
journalctl -u [email protected] -n 20 --no-pagerKo'rmoqchi bo'lganingiz mijoz roli o'chirilganda tinglovchi hali bog'langan, tunnel qurilmasi hali mavjud va jurnal yangi xatolardan xoli bo'lishidir. Agar mijozni to'xtatish serverning mavjud foydalanuvchilarga javoblarini ham uzsa, ikki rol faqat bittasiga tegishli bo'lishi kerak bo'lgan narsani bo'lishadi. Har bir o'zgarish qaysi instansiyaga, qaysi konfiguratsiya fayliga va qaysi oqim egasiga tegganini yozib qo'ying, aks holda bu xostni keyingi tuzatuvchi odam o'sha kashfiyotni noldan takrorlaydi.