Հաճախորդին ռեզոլվերի հասցե տալը որոշում է, թե ուր են ուղարկվում հարցումները, ոչ թե այն, թե որ աղբյուրը կտեսնի ռեզոլվերը։ Երթուղավորումը, փոխանցումը և թարգմանությունը հերթով անցնում են երկու ծայրերի միջև։ Աղբյուրի հարցերի ուղեցույցը հետևում է հարցմանը քայլ առ քայլ և գրանցում, թե ինչ է իրականում տեսել յուրաքանչյուր դիտորդը։ Հերթականությունը կարևոր է, որովհետև դիտումից առաջ արված պնդումը պարզապես ավելի լավ ձևաչափված ենթադրություն է։

Գրեք դասավորությունը, նախքան ապացույցներ հավաքելը

Չորս տեղ կարող են ինչ-որ բան ասել 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

Գրանցեք ռեզոլվերի հոսթում, պահեք գրանցումը կարճ և սահմանափակ, և պահեք այնտեղ, որտեղ քաղաքականությունը թույլ է տալիս։ Եթե դիտված աղբյուրը թարգմանված հասցե է, հաջորդ հարցն այն է, թե որ սարքն է կատարել թարգմանությունը և արդյոք նրա քաղաքականությունը նախատեսվածն է։ Գրանցումը պատասխանում է, թե ինչ հասավ՝ այն չի բացատրում, թե ինչու քաղաքականությունը դա թույլ տվեց։ Նշեք դիտորդին և քայլը գրառման մեջ, որովհետև դարպասի վերաբերյալ գաղտնիության պնդումը վերաբերում է այդ քայլին, ոչ թե ամբողջ ուղուն։

Գրեք հայտնաբերումը որպես ուղի, ոչ որպես հասցե

Գրեք հաճախորդին, ռեզոլվերին, ցանկացած փոխանցիչի, յուրաքանչյուր քայլում դիտված աղբյուրը և այն կառավարող քաղաքականությունը։ Այդ գրառումը պատասխանում է ապագա հարցերի մեծ մասին՝ առանց նոր գրանցման։ Նկարեք այն որպես շղթա, որովհետև հասցեների ցանկը թաքցնում է, թե որ քայլն է տվել որը։

Կցեք գծագրին ամսաթիվը, հաճախորդի տարբերակը և կարգավորման վերանայումը, որպեսզի ավելի ուշ ընթերցողը կարողանա ասել՝ արդյոք այն դեռ գործում է։ Առանձնացրեք տրանսպորտային աղբյուրը այն ամենից, ինչ մշակում է ծառայությունը, որովհետև դարպասի հասցե տեսնելը ոչինչ չի ասում այն մասին, թե ինչ է պահվում։ Ռեզոլվերի տեղը նույնպես ոչինչ չի ասում այն մասին, թե որ հաճախորդն է հարցրել։ Այդ պնդումներն առանձին պահելն է, որ եզրակացությունը դարձնում է պաշտպանելի վերանայման ժամանակ։

Առնչվող հոդվածներ