Давањето адреса на резолвер на клиент одредува каде се праќаат барањата, а не кој извор резолверот ќе го види. Насочувањето, препраќањето и преведувањето добиваат секој свој ред меѓу двата краја. Прирачникот за прашања за изворот го следи барањето чекор по чекор и запишува што видел секој набљудувач навистина. Редоследот е важен, бидејќи тврдењето изнесено пред набљудувањето е само претпоставка во подобар формат.

Запишете го распоредот пред да почнете да собирате докази

Четири места можат да ви кажат нешто за DNS изворот и не велат сите исто. Јадрото на клиентот знае кој извор би го користело, препраќачот знае што пратил нагоре, уредот што преведува знае што препишал, а резолверот што прима знае што стигнало. Запишете до кои од нив навистина можете да стигнете пред да соберете било што.

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

Запишете го и вашето очекување, вклучувајќи го резолверот за кој мислите дека е во употреба. Раздвоена патека може да прати барање сосема на друго место, а кешот може да одговори без никаква размена нагоре, па претпоставката држена само во меморијата нема да го преживее првото изненадување. Држете го наведениот дизајн и набљудуваната патека во одделни колони од истата белешка; кога двете не се согласуваат, сте го нашле прашањето што вреди да се следи.

Проверете кој процес го пратил барањето навистина

Почнете кај клиентот: запишете ја адресата на резолверот, името на барањето и времето, потоа потврдете кој процес го пратил. Првиот ред подолу го именува процесот што го држи UDP гнездото, и тоа е проверката што ја ветува овој наслов. Ако тој процес е помошник на прелистувач или извршно опкружување на контејнер наместо системскиот резолвер, остатокот од трагата опишува патека што никој не ја побарал.

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

На домаќин со повеќе интерфејси најпрво дознајте која изворна адреса јадрото ја избира за тоа одредиште пред да погледнете на друго место. Тоа е последната точка каде патеката е целосно под ваша контрола, и тоа е вредноста што ќе ја споредите со она што го известува резолверот. Несовпаѓањето е сигнал дека нешто меѓу нив го препишало пакетот или дека биле пратени две различни барања.

Држете ги тест-имињата интерни, бидејќи интерно име пратено до јавен резолвер не докажува ништо за внатрешната патека и објавува име што не требало да го објавите. Прелистувач со вклучен безбеден DNS воопшто нема да се појави на тој список гнезда, а тоа отсуство е само по себе одговорот.

Препраќачот прави второ, одделно барање

Препраќачот претвора една размена во две. Барањето одоздола пристигнува, а потоа препраќачот го праќа своето барање нагоре од адреса што ја избира. Неговата конфигурација, а не клиентот, одлучува што гледа горниот резолвер.

Прирачникот dnsmasq вреди да се прочита токму затоа: документира како препраќачот избира сервери нагоре и ја врзува својата страна за слушање, а ништо во тој распоред не го носи изворот на клиентот нагоре. Записот на резолверот што прикажува адреса на порта е затоа нормален, а не доказ за дефект. Отсуството е исто толку лесно погрешно да се прочита, бидејќи погодок во кешот не создава никакво барање нагоре и изгледа идентично на барање што никогаш не стигнало. Прочитајте ја конфигурацијата на препраќачот и состојбата на неговиот кеш пред да извлечете било кој од тие два заклучока. Две прашања, две места за гледање.

Прочитајте го изворот кај резолверот што прима

Единственото набљудување што го решава ова се зема на страната на серверот. Сѐ што се заклучува од списокот интерфејси на клиентот останува хипотеза додека резолверот не извести што навистина стигнало.

tcpdump -ni any port 53 and host 10.20.30.53

Снимете на домаќинот на резолверот, држете ја снимката кратка и ограничена и складирајте ја таму каде политиката дозволува. Ако набљудуваниот извор е преведена адреса, следното прашање е кој уред го извршил преводот и дали неговата политика е наменетата. Снимката одговара што стигнало; не објаснува зошто политиката тоа го дозволила. Именувајте го набљудувачот и чекорот во белешката, бидејќи тврдењето за приватност за порта е тврдење за тој чекор, а не за целата патека.

Запишете го наодот како патека, а не како адреса

Запишете ги клиентот, резолверот, секој препраќач, набљудуваниот извор на секој чекор и политиката што го уредува. Таков запис одговара на повеќето идни прашања без нова снимка. Нацртајте го како синџир, бидејќи списокот адреси крие кој чекор дал која.

Приложете го кон цртежот датумот, верзијата на клиентот и ревизијата на конфигурацијата, за да може подоцнежниот читател да каже дали сѐ уште важи. Одвојте го транспортниот извор од сѐ друго што услугата го обработува, бидејќи гледањето адреса на порта не кажува ништо за тоа што друго се чува. Ни локацијата на резолверот не кажува ништо за тоа кој клиент прашал. Токму држењето на тие тврдења одвоени го прави заклучокот одбранив при преглед.

Поврзани статии