Mijozga resolver manzilini berish so‘rovlar qayerga ketishini belgilaydi, resolver qaysi manbani ko‘rishini emas. Marshrutlash, yo‘naltirish va tarjima ikki chekka o‘rtasida navbatma-navbat ishtirok etadi. Manba masalalariga bag‘ishlangan qo‘llanma so‘rovni qadam-baqadam kuzatadi va har bir kuzatuvchi aslida nima ko‘rganini yozib boradi. Tartib muhim, chunki kuzatuvdan oldin aytilgan da‘vo shunchaki yaxshiroq formatlangan taxmin.

Dalil yig‘ishdan oldin tartibni yozib qo‘ying

To‘rtta joy DNS manbasi haqida sizga biror narsa aytishi mumkin va ularning hammasi bir xil gapni aytmaydi. Mijoz yadrosi qaysi manbadan foydalanishini biladi, yo‘naltiruvchi yuqoriga nima yuborganini biladi, tarjima qiluvchi qurilma nimani qayta yozganini biladi, qabul qiluvchi resolver esa nima yetib kelganini biladi. Biror narsa yig‘ishdan oldin ulardan qaysilariga haqiqatan yeta olishingizni yozib qo‘ying.

Observation pointWhat it can proveWhat it cannot proveHow to read it
client kernelwhich source address it would use for that resolveranything a device in between rewroteip route get against the resolver address
forwarderthat it sent an upstream query, and from which sourcewhat the client originally asked forits own log and its cache state
translating devicethat a source was rewritten, and to whatwhether the query was legitimateNAT policy and its counters
receiving resolverthe address that actually arrivedwhich client behind that address askeda scoped capture on port 53

O‘z kutingizni ham yozib qo‘ying, ishlatilmoqda deb hisoblagan resolver bilan birga. Bo‘lingan marshrut so‘rovni butunlay boshqa joyga yuborishi mumkin, kesh esa yuqoriga hech qanday almashuvsiz javob berishi mumkin, shuning uchun faqat xotirada saqlangan taxmin birinchi hayratga dosh bermaydi. E‘lon qilingan loyiha va kuzatilgan yo‘lni bir xil yozuvning alohida ustunlarida saqlang; ikkisi mos kelmasa, ortidan borishga arziydigan savolni topdingiz.

So‘rovni aslida qaysi jarayon yuborganini tekshiring

Mijozdan boshlang: resolver manzili, so‘rov nomi va vaqtni yozib oling, so‘ng qaysi jarayon yuborganini tasdiqlang. Quyidagi birinchi satr UDP soketini ushlab turgan jarayonni nomlaydi va bu aynan shu sarlavha va‘da qilgan tekshiruv. Agar o‘sha jarayon tizim resolveri o‘rniga brauzer yordamchisi yoki konteyner ish muhiti bo‘lsa, izning qolgan qismi hech kim so‘ramagan yo‘lni tasvirlaydi.

ss -tunp 'dport = :53'
dig @10.20.30.53 host.corp.example +noall +answer
ip route get 10.20.30.53

Bir nechta interfeysli xostda boshqa joyga qarashdan oldin yadro o‘sha manzil uchun qaysi manba manzilini tanlashini aniqlang. Yo‘l to‘liq sizning nazoratingizda bo‘lgan oxirgi nuqta shu va resolver xabar bergan qiymat bilan solishtiradigan qiymat ham shu. Nomuvofiqlik o‘rtada nimadir paketni qayta yozganini yoki ikki xil so‘rov yuborilganini bildiradi.

Sinov nomlarini ichki holda saqlang, chunki ommaviy resolverga yuborilgan ichki nom ichki yo‘l haqida hech narsani isbotlamaydi va e‘lon qilish shart bo‘lmagan nomni oshkor qiladi. Xavfsiz DNS yoqilgan brauzer o‘sha soketlar ro‘yxatida umuman ko‘rinmaydi va aynan shu yo‘qlik javobning o‘zi.

Yo‘naltiruvchi ikkinchi, alohida so‘rov yuboradi

Yo‘naltiruvchi bir almashuvni ikkiga aylantiradi. Pastdan kelgan so‘rov yetib keladi, so‘ng yo‘naltiruvchi o‘zi tanlagan manzildan o‘z so‘rovini yuqoriga yuboradi. Yuqoridagi resolver nima ko‘rishini mijoz emas, uning konfiguratsiyasi hal qiladi.

dnsmasq qo‘llanmasi aynan shu sababga ko‘ra o‘qishga arziydi: unda yo‘naltiruvchi yuqori serverlarni qanday tanlashi va tinglash tomonini qanday bog‘lashi yozilgan, va bu tartibda hech narsa mijoz manbasini yuqoriga olib chiqmaydi. Shuning uchun shlyuz manzilini ko‘rsatuvchi resolver jurnali odatiy hol, nosozlikning dalili emas. Yo‘qlikni ham xuddi shunday oson xato o‘qish mumkin, chunki kesh hiti hech qanday yuqori so‘rov yaratmaydi va hech qachon yetib kelmagan so‘rovga aynan o‘xshaydi. Ikkala xulosadan birini chiqarishdan oldin yo‘naltiruvchining konfiguratsiyasini va uning kesh holatini o‘qing. Ikki savol, qarash uchun ikki joy.

Manbani qabul qiluvchi resolverda o‘qing

Buni hal qiladigan yagona kuzatuv server tomonida olinadi. Mijoz interfeyslari ro‘yxatidan chiqarilgan har qanday narsa resolver aslida nima yetib kelganini aytmaguncha taxmin bo‘lib qolaveradi.

tcpdump -ni any port 53 and host 10.20.30.53

Resolver xostida yozib oling, yozuvni qisqa va cheklangan saqlang, siyosat ruxsat bergan joyda saqlang. Agar kuzatilgan manba tarjima qilingan manzil bo‘lsa, keyingi savol qaysi qurilma tarjimani bajargani va uning siyosati ko‘zda tutilganmi. Yozuv nima yetib kelganini javob beradi; siyosat nima uchun ruxsat berganini tushuntirmaydi. Yozuvda kuzatuvchi va qadamni nomlang, chunki shlyuz haqidagi maxfiylik da‘vosi o‘sha qadam haqida, butun yo‘l haqida emas.

Topilmani manzil emas, yo‘l sifatida yozing

Mijozni, resolverni, har qanday yo‘naltiruvchini, har bir qadamda kuzatilgan manbani va uni boshqaruvchi siyosatni yozib oling. Bunday yozuv kelajakdagi savollarning ko‘pchiligiga yangi yozuvsiz javob beradi. Uni zanjir sifatida chizing, chunki manzillar ro‘yxati qaysi qadam qaysinisini yaratganini yashiradi.

Chizmaga sana, mijoz versiyasi va konfiguratsiya reviziyasini biriktiring, shunda keyingi o‘quvchi u hali ham amal qiladimi-yo‘qmi ayta oladi. Transport manbasini xizmat qayta ishlaydigan qolgan hamma narsadan ajrating, chunki shlyuz manzilini ko‘rish yana nima saqlanishi haqida hech narsa demaydi. Resolverning joylashuvi ham qaysi mijoz so‘ragani haqida hech narsa demaydi. Aynan shu da’volarni alohida saqlash xulosani ko‘rikda himoya qilinadigan qiladi.

O'xshash maqolalar