WireGuard ustida mDNS: peer javob berishidan oldin uch darvoza
Avahi-ga mos interfeys, guruhga yo'l va manzilga ega peer kerak. Uch darvoza, uch alohida tekshiruv va hech qanday tarqatish yo'q.
WireGuard qurilmasida multicast bayrog'ini o'rnatish interfeysni kashfiyot dasturlari uchun mos qiladi va bayroq qiladigan ish shu bilan tugaydi. U protokolga guruh paketi qayerga borishini aytmaydi va bir nechta peer bo'lgan qurilmada bitta aniq javob yo'q. Ishlab turgan daemon va topilgan xizmat o'rtasida uch alohida darvoza turadi.
Ularni tartib bilan sinab ko'ring, chunki bittasidan o'tish keyingisi haqida hech narsa demaydi.
Birinchi darvoza: bayroq va daemon siyosati
Linux WireGuard qurilmasi ARP-siz nuqta-nuqtaga aloqa sifatida yaratiladi va standart holatda multicast bayrog'ini olib yurmaydi. Bayroqni qo'shish qurilmani boshqaradigan har qanday narsa bajaradigan mahalliy interfeys o'zgarishidir. Avahi buning ustida o'z dunyoqarashiga ega va uning standart siyosati nuqta-nuqtaga interfeyslarni butunlay chetlab o'tadi. Shuning uchun bitta paket ham harakatlanishidan oldin ikkita mustaqil muvofiqlik sinovi qo'llaniladi.
Demak daemonga aniq qaror kerak, faqat ishlab turgan jarayon emas. Uning hujjatlashtirilgan boshqaruvlari allow-interfaces, deny-interfaces va allow-point-to-point ni o'z ichiga oladi, va oxirgisi odamlar e'tibordan chetda qoldiradigan sozlamadir.
Quyidagi tekshiruvlar aloqa bayroqlarini, multicast yo'lni va daemon konfiguratsiyasi umuman tahlil qilinishini bildiradi:
ip -d link show wg0
ip route get 224.0.0.251
avahi-daemon --check
Muvaffaqiyatli ishga tushgan daemon siz uchun muhim interfeysda soketlarni ochgan bo'lishi shart emas. Xizmat holatini qamrovga teng deb taxmin qilish o'rniga uning samarali konfiguratsiyasini o'qing.
Ikkinchi darvoza: guruhga yo'l
Ikkinchi darvoza oddiy marshrutlashdir. 224.0.0.251 manziliga yuborilgan paket boshqa hamma narsa kabi yo'naltirish jadvaliga amal qiladi, va agar jadval uni jismoniy LAN interfeysi orqali chiqarsa, hech qanday WireGuard konfiguratsiyasi buni o'zgartirmaydi. Avval yo'lni tuzating, keyin tekshiruvning qolgan qismi qisqaradi. Har qanday peer kalitiga tegishdan oldin yadro guruh manzili haqida nima xabar berishini ko'ring.
| Observation | Gate it belongs to | What it does not prove |
|---|---|---|
Multicast flag present on wg0 | Interface eligibility | The daemon will use the interface |
Route to the group via wg0 | Forwarding | Any peer will receive it |
| Destination inside a peer's allowed list | Peer selection | That peer's network will answer |
Muayyan yo'l bo'lmasa, yadro aloqaning o'z multicast ishloviga qaytadi, shuning uchun standart holat tekis LANda to'g'ri, aynan o'sha guruh trafigi tunnel orqali chiqishi kerak bo'lgan paytda esa noto'g'ri ko'rinadi. Nosozlik yuboruvchi tomondan jim: so'rov qayergadir ketadi va javob hech qachon kelmaydi.
Uchinchi darvoza: WireGuard har bir paket uchun bitta peer tanlaydi
WireGuard ruxsat etilgan manzillar to'plamlarida manzilni qidirib chiqish peerini tanlaydi, Linux uzatish yo'li esa bu qidiruvni har bir paket uchun bir marta bajaradi. Natija bitta va paket o'sha peer uchun shifrlanadi. Bir xil guruh prefiksi bir nechta peerning ruxsat etilgan ro'yxatlarida ko'rinishi a'zolik yoki replikatsiya yaratmaydi; u ulardan biriga hal bo'ladigan noaniq qidiruv yaratadi.
Ikki uchli maxsus aloqada bu aynan siz xohlagan narsa, chunki ataylab tashiladigan guruh trafigi uchun bitta mo'ljallangan qabul qiluvchi bor. Beshta peerli interfeysda bu cheklov, xususiyat emas, va tuzatish har qanday bitta peer konfiguratsiyasida emas, dizaynda bo'lishi kerak.
Tarqatiladigan dizayn aniq relay, alohida aloqalar yoki butunlay boshqa kashfiyot mexanizmini talab qiladi. Har bir mijoz shlyuzni ping qila olishi sababli ikki uchli retseptni ko'p mijozli yechim sifatida e'lon qilish — bu aynan shunday noto'g'ri joylashtiriladi.
Kiruvchi yo'nalish boshqacha tekshiriladi: olingan paketning manbasi autentifikatsiya qilingan peerning ruxsat etilgan ro'yxati ichida bo'lishi kerak. U yerga multicast manzil qo'shish yuboruvchining haqiqiy manba egaligini almashtirmaydi.
Aks ettirish — chegara, ko'prik emas
Avahi aks ettirgichi o'zi tanlagan interfeyslar o'rtasida mDNS xabarlarini amaliyot qatlamida qayta ishlab chiqaradi. Bu tarmoqlar orasidagi kashfiyot chegarasi, Ethernet ko'prigi emas va umumiy multicast marshrutizatori emas. Bir xil tarmoqlarga ulangan ikkita aks ettirgich takrorlanuvchi e'lonlar halqasini bajonidil yaratadi.
Aks ettirish xizmat nomlari va ularning metama'lumotlarini boshqa tarmoqqa ham topshiradi, bu esa marshrutlash qarori kabi maxfiylik qaroridir. Tanlangan interfeyslarni cheklang va o'rnatilgan versiya qo'llab-quvvatlaydigan joyda xizmat filtrlaridan foydalaning, shunda faqat vakolatli foydalanuvchiga kerakli e'lonlar chegaradan o'tadi.
Kashfiyot va foydalanish alohida natijalar bo'lib qoladi. Mijoz e'lon qilingan manzili mijoz turgan joydan yetib bo'lmaydigan yoki portini uning kirish siyosati rad etadigan xizmat e'lonini ko'rishi mumkin. E'lon paydo bo'lgandan keyin xizmat ulanishini tasdiqlang, va agar dastur barqaror DNS nomi yoki aniq server manzilini qo'llab-quvvatlasa, bog'lanish mahalliy kashfiyotini kengaytirish o'rniga shuni afzal ko'ring. Kriptokalt marshrutlash tavsifi bularning barchasi tayanadigan manzilga asoslangan peer tanlovini qamrab oladi.